- Course Description
- Schedule
- What the Course is Not
- Main questions
- Technical Goals
- How to Stay Sane When Programming
- Assignments & Grading
- More about the Presentation
- More about the Final Project
- Links
- Logistics (FTP, delicious, etc)
|
1. Course Description
This course will teach basic programming concepts with a focus on web-based
applications. Beyond basic cross-language technical skills, the course
will also ground software practices in a critical context to examine
how and why contemporary artists choose to use software, how software
written by artists gets used and disseminated via the web, and how software
practices intersect with traditions of performance art and public art.
Students will create case studies of software-based art projects to
gain greater understanding of the social, political and technological
forces at work in software development. The course will explore variables,
functions, data structures, loops, conditionals, web architectures --
and various approaches to the software development process -- iterative
design, debugging, unit testing, usability. Students will collaboratively
experiment with different programming languages such as Java, ActionScript,
PHP and JavaScript along with XML and mySQL data sources to develop
web-based software projects.
2. Schedule: DUE: =
something that is due. Everyday Programs Sketchbooks & In-class
assignments will be completed during class time. Other due items should
be ready at the beginning of class
Class 1 (09/20): Yoko Ono and Programming
- Presentation: Yoko Ono, Fluxus Instructions, Hello
World
- DUE: Everyday
Programs Sketchbook: TO BATHE
- DUE: In-class
assignment: Walking algorithms, writing & following
- DUE: In-class
assignment: Download & install processing, write a Hello
World program, series of exercises
Class 2 (09/27): Saying Hello World
- Presentation: Cat
Mazza's microRevolt & knitPro (PHP), Martin
Wattenberg's Thinking Machine (processing),Motomichi
Nakamura's BCC (Flash)
- Technical: Running Hello World in three worlds.
- DUE: Everyday
Programs Sketchbook: TO CLEAN
- DUE: Group
Presentation: Look for examples of art projects using Processing,
Flash & PHP. Present to the class.
- DUE: In-class
assignment: Hello
World problem set in Flash, Processing & PHP
- DUE: In-class
assignment: Find three more reference links for each technology.
Email to Catherine & Peter.
- Discussion: How are these worlds different? Differences
in economics (open-source vs. proprietary), syntax, environment, purpose
of the language, user-programmer base.
Class 3 (10/04): Syntax, Control, Data Types and
Style
- DUE: Everyday Programs
Sketchbook: TO COOK
- DUE: In-class
assignment: Hello
World problem set in Flash, Processing & PHP
- Presentation: James
- Presentation: Quick basics of the Algorithm, Data
Types, Static vs. Dynamic typing, Declaring variables, Arithmetic
Operators
- DUE: In-class
assignment: Data types problem
set in Flash, Processing & PHP
Class 4 (10/11): Syntax, Control, Data Types and
Style
- DUE: Everyday Programs
Sketchbook: TO DRINK
- Presentation: Jamie C.
- Presentation: Basics of Loops, Conditionals,
and Functions (if/else, for, and functions),
Code review of examples
- DUE: In-class assignment:
Loops, Conditionals and Functions problem
set in Processing and PHP
Class 5 (10/18): Syntax, Control, Data Types and
Style
- DUE: Everyday Programs
Sketchbook: TO EAT
- Presentation: Molly
- Presentation: Isaac
Class 6 (10/25): Network Architectures
- DUE: Preliminary proposal for final
project (Conceptual Overview, Statement of Audience/Users & Team
Bios only). Be prepared to present these to the class in critique
format.
- DUE: Everyday Programs
Sketchbook: TO LEARN
- DUE: Arrays,
Forms Problem Set
- Readings/Reference:
- Presentation: Leon, Ebe, John
Class 7 (11/01): Arrays and proposals
Class 8 (11/08): The Database is your friend
- DUE: Everyday Programs
Sketchbook: TO PLAY
- Presentation: Mark & Aaron, John
- DUE: Revised proposal for final project
(Conceptual Overview, Statement of Audience/Users & Team Bios
only)
- Presentation: Database Basics
- DUE: Database
Problem Set
- Readings/References:
Class 9 (11/15): More Databases
- DUE: Everyday Programs
Sketchbook: TO READ
- DUE: Database
Problem Set
- Readings: See Class 8 Readings
- Work on final projects
Class 10 (11/22): Everything is an interface
- DUE: Everyday Programs
Sketchbook: TO SLEEP
Class 11(11/29): Steal politely!
- DUE: Everyday
Programs Sketchbook: TO WALK
Class 12 (12/06): Final Projects
- DUE: FINAL PROJECT DEMOS & FINAL
PROPOSALS
- DUE: Everyday Programs
Sketchbook: TO WATCH
3. What the course is not
This class is NOT a step-by-step introduction to any particular technology.
It's an opportunity to solve problems with a number of different technologies
(and to think about what kinds of problems are worth solving). What
you will learn in this course will help you learn all of the technologies
in your future.
This is a studio course, which means there will be a lot of small,
hands-on assignments and work completed in the laboratories during class.
This class will use several programming technologies to teach basic
programming concepts. However, there is a lot of latitude to use some
of the in-class assignments and the final project to explore other technologies
that are not dealt with explicitly (RSS, XML, Java, DHTML, XHTML, CSS,
and so on). I encourage you to be ambitious with your projects and use
this as an opportunity to learn a technology that is useful to your
own work as an artist.
In addition to in-class coding, there will be technical presentations
(mostly by the professor), contemporary software project presentations
(mostly by the students), a hand-written programming sketchbook, visiting
artists, and demos. There will hopefully be lots of discussions, questions,
and interesting disagreements, too.
While you will produce a series of small things (programs & code)
in this class, your main project will be a well-organized technical
and conceptual proposal for a final project along with a small prototype
or component of this project realized in code. While the conceptual
proposal needs to be detailed and thorough, the prototype needs to be
small, incomplete and full of bugs. You will demo this prototype for
the class.I highly encourage you to work collaboratively on this
project with people inside & outside this class.
4. Main Questions
- What is software programming? How does it work?
- How does software structure human experience? How does it function
as "architecture"? Could we call it part of the "built environment"?
- How and why are contemporary artists and collectives using software
in/as/with their work?
- Where is artwork using software deployed, distributed, and exhibited?
In other words, how is the work made public?
- How does software relate to the traditions of public art &
performance art?
- How does the collaborative process of software development influence/challenge
modernist ideas about “what is an artist” & “what
is art”?
5. Technical Goals
Students will understand:
- the range of possibilities that software affords and the range of
practices….
- basic programming concepts in Processing,
PHP and ActionScript
(and other languages as dictated by individual project directions)
- basic markup concepts in HTML
- the architecture of a web application
- databases and ways of storing & retrieving information from
them
- different approaches to the software development process
- high-level strategies for software programming, such as iterative
testing, debugging, etc.
- how to learn what they need to solve a software problem
- how to learn a new technology from scratch
- planning & project management skills for software development
6. Misc. Advice: How to stay sane when programming
- Don't learn information. Learn how to find information.
- Programs always break. Always. Nothing ever works ever. Learn how
to debug.
- Don't think in products and results, think in versions and iterations.
- Steal other people's code! No need to make things that have already
been made - that is inefficient!
- Don't stop with Google. Utilize all resources to find a solution
to a problem - Ask colleagues, hire an intern, post to mailing lists,
email an expert.
- Learn only as much as you need to know to solve your problem. Then
move on.
7. Course Requirements & Grading:
- FINAL PROJECT: 30%
2 Components :
- Conceptual & Technical proposal: Each student
is responsible for developing an ambitious conceptual & technical
proposal for a final software project. This proposal should include:
conceptual overview, statement of audience/users, project plan
with timeline, collaborating team bios & background, project
budget, & technical diagrams. Be ambitious with this
and propose things that you don't have the skills to accomplish.
I highly encourage you to work together in teams and/or to include
collaborators outside the class in these projects.
- Small, Broken, Buggy & Incomplete Prototype:
Each student will develop & code a SMALL PROTOTYPE
or ONE SMALL PART of the proposed project. Each student
will demo, for the class, a small, broken, buggy and/or incomplete
part of this software project. Demo should last 30 minutes. Prototype
should have lots of bugs and be VERY tiny.
- In-class assignments, participation & skill-sharing:
30%
This is very important! Each student is responsible for attending
class, completing in-class assignments and participating with feedback,
salient questions, new directions and so on. You will also be called
on to share your skills and help each other - technically, conceptually
and so on.
- Presentation: 20%
Each student is responsible for giving a 45 minute presentation to
the class about 2 contemporary artists/groups/projects/organizations
that use software to make art. 1 artist/group/organization should
be interesting. 1 artist/group/project/organization should be boring,
problematic, and/or terrible. Discuss your own work in relation to
these artists as part of this presentation. (30 minute presentation,
15 minutes questions)
- Everyday Programs Sketchbook: 20%
Each day of class, students will turn in a hand-written program
created in class. This program does not have to work (See how easy
this class is?).With your permission, I would like to publish these
at the end of the course as an electronic book with a share-alike
Creative Commons license on my site www.infinitelysmallthings.net.
Attendance Policy: You can only miss 2 classes. Otherwise
you get an F.
8. More on the Presentation
Each student is responsible for giving a 45 minute presentation to
the class about 2 contemporary artists/groups/projects/organizations
that use software to make art. 1 artist/group/organization should
be interesting. 1 artist/group/project/organization should be boring,
problematic, and/or terrible. Discuss your own work in relation to
these artists as part of this presentation. (30 minute presentation,
15 minutes questions)
The presentation is about TWO of the following:
- An artist who uses software
- An art movement related to software (e.g. fluxus, aleatoric music,
etc)
- An art project using software as a major component
- An art organization or event that relates to software (e.g. turbulence.org,
readme festival)
Discuss one artist/project/organization that is interesting. Discuss
one artist/project/organization that is problematic. Discuss both
in relation to your own work.
See below Links for some places to begin. Some
other criteria:
- Should be 45 minutes long, roughly 1/2 hour presentation and
15 minutes questions.
- Can be traditional (e.g. talking from powerpoint) or not (e.g.
leading the class on an expedition, having the class participate
in a software-based project online)
- Should have visual, experiential, aural, etc. samples of work
(e.g. not just you talking)
- Should propose answers to the main questions
of the course
9. More on the Final Project
PART I - Conceptual & Technical proposal: Each
student is responsible for developing an ambitious conceptual &
technical proposal for a final software project. This proposal should
include: conceptual overview, statement of audience/users, project
plan with timeline, collaborating team bios & background, project
budget, & technical diagrams. Be ambitious with this
and propose things that you don't have the skills to accomplish.
I highly encourage you to work together in teams and/or to include
collaborators outside the class in these projects.
Conceptual Overview: Why do this? What will
your project do? Why is it interesting? No more than 1 page.
Statement of Audience/Users: Who will use your
project and in what context? How will you work with them? Why
would they want to use it and/or how will you convince them to
use it? No more than 1 page.
Project Plan w/ Timeline: What are the major
steps (technical, administrative, conceptual) towards finishing
your project? When will they be accomplished?
Team Bios & CVs
Project Budget: Do you need funds to conduct
research, purchase materials, pay artist fees, hire collaborators,
pay fabricators, purchase permits for public space, etc.?
Technical Diagrams: These should demonstrate
to a non-technical person how the technical aspects of your project
functions.
The proposal should be in PDF format.
PART II - Small, Broken, Buggy & Incomplete Prototype:
Each student will develop & code a SMALL PROTOTYPE or
ONE SMALL PART of the proposed project. Each student will
demo, for the class, a small, broken, buggy and/or incomplete part
of this software project. Demo should last 30 minutes. Prototype should
have lots of bugs and be VERY tiny. You will be graded on the SMALLNESS
of the prototype.
Despite the bugs and the tininess, it must be clear that you spent
a lot of time on it, both technically and conceptually. You will demo
it for the class for 15-20 minutes.
Your demo presentation should discuss:
- The main questions of the class
- How you tested the program, who used it, what kind of feedback
you gathered, how you incorporated that feedback
- How it relates to your overall conceptual proposal
|