General Information
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.
Course Requirements
- 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.
- 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. - Presentation OR Technical Workshop: 20%
- 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.
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.
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.
Calendar
Wed, Sept 13, 2006: Yoko Ono and Programming
- INTRODUCTION: course overview
- Presentation: Yoko Ono, Fluxus Instructions, Hello World
- DUE: Everyday Programs Sketchbook: TO BATHE
- DUE: In-class assignment: Walking algorithms, writing & following
- DUE: Groups find examples of Flash, processing, PHP & upload to del.icio.us
- Mark-up Languages, Scripting Languages, Programming Languages - HTML overview
- DUE: In-class assignment: Make a simple webpage in Dreamweaver
- POLL: Which other technologies are you interested in? e.g. HTML, Blogs, Flash, CSS, RSS, XML, Tagging, mySpace, Wikis, Javascript, etc.
- Channel Title: Delicious/emergent/class01_readings
- Happy Children Learn With Robot Turtles
- Programming language - Wikipedia, the free encyclopedia
- Markup language - Wikipedia, the free encyclopedia
- Examples of artworks & media created using software
- The History of Programming Languages
- Hello, World Page!
- How to Write A Psychogeographic Walk
- Processing 1.0 (BETA)
- Life in Fluxus, essay by Arthur Danto
- Fluxus Performance Workbook
Wed, Sept 20, 2006: Saying Hello World
- DUE: Everyday Programs Sketchbook: TO CLEAN
- Technical: HTML overview
- Technical: Running Hello World in two worlds. The world of processing vs. the world of PHP.
- DUE: In-class assignment: Download & install processing (if necessary), write a Hello World program
- DUE: In-class assignment: HTML problem set in Processing & PHP
- DUE: In-class assignment: Hello World problem set in Processing & PHP
- Channel Title: Delicious/emergent/class02_readings
Wed, Sept 27, 2006: Variables, Data Types and Operators
- DUE: Everyday Programs Sketchbook: TO COOK
- DUE: In-class assignment: Hello World problem set in Processing & PHP
- 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 Processing & PHP
- Student Presentation/Workshop: Jeanne & Lucas (Artist Presentation)
- Channel Title: Delicious/emergent/class03_readings
- VariableScope \ Learning \ Processing 1.0 (BETA)
- Comments in PHP
- Web Developer Extension
- Client-server Computing - Wikipedia
- PHP - Operators
- PHP Data Types
- Processing - Operators
- Processing - Data Types
- Data Types & Operators problem set
- Datatype - Wikipedia
- List of algorithms - Wikipedia
- Algorithm on Wikipedia
Wed, Oct 4, 2006: More Variables, Data Types and Operators
- DUE: Everyday Programs Sketchbook: TO DRINK
- Data Types & Variables - review concepts
- DUE: In-class assignment: Data types problem set in Processing & PHP
- Student Presentation/Workshop: Serena & Nathaniel (Artist Presentation)
- Time permitting: Presentation: Basics of Loops, Conditionals, and Functions (if/else, for, and functions), Code review of examples
- Channel Title: Delicious/emergent/class04_readings
- VariableScope \ Learning \ Processing 1.0 (BETA)
- draw() \ Language (API) \ Processing 1.0 (BETA)
- setup() \ Language (API) \ Processing 1.0 (BETA)
- Simon Elvins' FM Radio Map
- Functions \ Examples \ Processing 1.0 (BETA)
- Control Flow in Processing
- PHP Functions
- PHP If...Else Statements
- PHP Looping Tutorial
- PHP Control Flow Overview
- Control flow - Wikipedia
Wed, Oct 11, 2006: Loops, Conditionals and Functions
- DUE: Everyday Programs Sketchbook: TO EAT
- Student Presentation/Workshop: Nikki, Millee & Jerlyn (Artist Presentation), Christian (Javascript Demo)
- 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
- Channel Title: Delicious/emergent/class05_readings
Wed, Oct 18, 2006: Arrays and Complex Data Types
- DUE: Proposal for final project. Be prepared to present these to the class in critique format.
- DUE: Everyday Programs Sketchbook: TO LEARN
- DUE: Arrays, Forms Problem Set
- Student Presentation/Workshop: Andrew (CSS Demo)
- Channel Title: Delicious/emergent/class06_readings
- Object-oriented programming - Wikipedia, the free encyclopedia
- View HTTP Request and Response Header
- Client-server Computing - Wikipedia
- HTML Forms and Input
- PHP: Objects - Manual
- Java Collections Framework - Lots of Complex Data Structures
- array (from the Dictionary of Algorithms & Data Structures)
- data structure (from the Dictionary of Algorithms & Data Structures)
- Data structure - Wikipedia, the free encyclopedia
- Array - Wikipedia, the free encyclopedia
- Array Reference - Processing 1.0 (BETA)
- PHP: Array Functions - Manual
- PHP: Arrays - Manual
Wed, Oct 25, 2006: Arrays, Forms, Request/Response
- DUE: Everyday Programs Sketchbook: TO LISTEN
- Student Presentation/Workshop: Adam (artist presentation)
- Individual meetings for getting started on final projects
- DUE: Arrays, Forms Problem Set
Wed, Nov 1, 2006: Studio Time for Final Projects
- DUE: Everyday Programs Sketchbook: TO PLAY
- Student Presentation/Workshop: Lucky & Triton (Artist Presentation), Rachelle (Wiring Demo)
- Channel Title: Delicious/emergent/class08_readings
Wed, Nov 8, 2006: The Database is your friend
- DUE: Everyday Programs Sketchbook: TO READ
- DUE: Arrays, Forms Problem Set
- Presentation: Database Basics
- DUE: Database Problem Set
- Student Presentation/Workshop: Leo (Crazy Programming Demo)
- Channel Title: Delicious/emergent/class08_readings
Wed, Nov 15, 2006: More Databases
- DUE: Everyday Programs Sketchbook: TO SLEEP
- Student Presentation/Workshop: Chuan & Geon (Scripting/Trigonometry Demo) , Sarah (artist Presentation), Leo (Semantic Web presentation)
- DUE: Database Problem Set
- Channel Title: Delicious/emergent/class08_readings
Wed, Nov 22, 2006: HOLIDAY, NO CLASS
Wed, Nov 29, 2006 - Work on Final Projects
- DUE: Everyday Programs Sketchbook: TO WALK
- Student Presentation/Workshop: Robbie (Processing w. Max/MSP)
Wed, Dec 6, 2006
- DUE: FINAL PROJECT DEMOS & FINAL PROPOSALS
- DUE: Everyday Programs Sketchbook: TO WATCH
Wed, Dec 13, 2006: STUDIO REVIEW WEEK, NO CLASS