General Information

i

DM7021: Introduction to Creative Programming, Fall 2006
Digital+Media Dept., Rhode Island School of Design
Wednesdays, 11:20 - 4:20, CIT Room 305

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

TAs: Mark Kellogg - mkellogg@risd.edu, Andrew Ames - ayames@mac.com

Lab Hours: Mark will be in the lab on Thursday afternoons from 4:30PM - 7PM

Important Information

del.icio.us: Upload all presentation links and final project links to delicious
Username: emergent
Password: digital

FTP Server: dm.risd.edu
Login with your username & password.
Place files in the folder "FTPRoot/DM7021"

Course Prerequisites

No prior programming experience is necessary.

Course Description

This course will teach basic programming concepts with a focus on Processing and 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 ActionScript, PHP and Processing along with XML and mySQL data sources to develop web-based software projects.

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.

How to Stay Sane While Programming

1. Don't learn information. Learn how to find information.

2. Programs always break. Always. Nothing ever works ever. Learn how to debug.

3. Don't think in products and results, think in versions and iterations.

4. Steal other people's code! No need to make things that have already been made - that is inefficient!

5. 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

¤

Course Requirements

  1. FINAL PROJECT: 30% Due in class Dec. 6th.
    2 Components :
    • Conceptual documentation + Source Code: Revised written proposal with sketches and images. Turn in IN PRINT and DIGITAL copies. Your proposal MUST INCLUDE a link to demo your project AND a link to the SOURCE CODE for your project. These will be published online so think about making this usable for future audiences who want to steal your code.
    • 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 including questions & discussion. Prototype should have lots of bugs and be VERY tiny.
  2. In-class assignments, participation & skill-sharing: 30%
    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 OR Technical Workshop: 20%
  4. CHOOSE ONE:

    A 30 minute presentation to the class about 2 contemporary artists/groups/projects/organizations that use software to make art.

    OR

    A 30-minute demo/workshop of a particular software technology and creating a participatory activity where we can learn it.

  5. 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.

top

Policies

LAPTOPS & COMPUTERS: No laptops or computers should be on during class discussions & critiques . No exceptions.

LATE PEOPLE: Each time you arrive late to class your class participation grade will drop by 1 percentage point.

LATE ASSIGNMENTS: Each day that your assignment is late, it will lose one grade percentage point.

ABSENCES: If you have more than one unexcused absence you risk failing the class.

top

¦

Calendar

Wed, Sept 13, 2006: Yoko Ono and Programming

Wed, Sept 20, 2006: Saying Hello World

Wed, Sept 27, 2006: Variables, Data Types and Operators

Wed, Oct 4, 2006: More Variables, Data Types and Operators

Wed, Oct 11, 2006: Loops, Conditionals and Functions

Wed, Oct 18, 2006: Arrays and Complex Data Types

Wed, Oct 25, 2006: Arrays, Forms, Request/Response

 

Wed, Nov 1, 2006: Studio Time for Final Projects

Wed, Nov 8, 2006: The Database is your friend

Wed, Nov 15, 2006: More Databases

Wed, Nov 22, 2006: HOLIDAY, NO CLASS

Wed, Nov 29, 2006 - Work on Final Projects

Wed, Dec 6, 2006

Wed, Dec 13, 2006: STUDIO REVIEW WEEK, NO CLASS

top

"