DM 7012   EMERGENT  DIGITAL,  FALL 2005 
INTRODUCTION TO CREATIVE PROGRAMMING Tuesdays from 1:10 - 6:10PM in the PC Lab, 3rd Floor, Digital Media Bldg
  1. Course Description
  2. Schedule
  3. What the Course is Not
  4. Main questions
  5. Technical Goals
  6. How to Stay Sane When Programming
  7. Assignments & Grading
  8. More about the Presentation
  9. More about the Final Project
  10. Links
  11. Logistics (FTP, delicious, etc)

Catherine D'Ignazio
kanarinka@ikatun.com
AIM: kanarinkabot
Yahoo: kanarinkabot

TA: Peter Segerstrom
peter@flatflat.or

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.

[ top ]

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

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
[ top ]

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.

[ top ]

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”?
[ top ]

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
[ top ]

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.
[ top ]

7. Course Requirements & Grading:

  1. 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.
  2. 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.
  3. 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)
  4. 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.

[ top ]

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:

  1. An artist who uses software
  2. An art movement related to software (e.g. fluxus, aleatoric music, etc)
  3. An art project using software as a major component
  4. 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:

  1. Should be 45 minutes long, roughly 1/2 hour presentation and 15 minutes questions.
  2. 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)
  3. Should have visual, experiential, aural, etc. samples of work (e.g. not just you talking)
  4. Should propose answers to the main questions of the course
[ top ]

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
[ top ]

10. Recent Links (from del.icio.us)

[ top ]

11. Logistics

del.icio.us

username: emergent
password: digital

FTP info: email Catherine
[ top ]