General Information
DM7021: Introduction to Creative Programming, Fall 2007
Digital+Media Dept., Rhode Island School of Design
Wednesdays, 11:20AM - 4:20PM, CIT Room 305
Catherine D'Ignazio, professor
kanarinka@ikatun.com
AIM: kanarinkabot
Yahoo: kanarinkabot
GoogleChat: kanarinka
TA: Clement Valla - cvalla@risd.edu
Lab Hours: 9AM - 11:20AM before class, 4:20PM - 6PM or as needed after class
Important Information
del.icio.us: Upload all presentation links and final project links
to delicious
Username: emergent
Password: digital
FTP Server: dm.risd.edu
You all have FTP accounts with your DM username & password. Email
me if you have problems FTPing.
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. Requirements:
- Project Form: a small webpage/website
- Uploaded to: THE DM SERVER, see above FTP info
- Your page/site should include:
- Description of project with sketches and images
- Prototype/demo of the project in action
- Source Code for the project downloadable
for the user
- 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 3-5 projects that use software to make art, architecture or design works. Make this about the work, not about the artists/designers.
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 12, 2007: 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 19, 2007: Saying Hello World
- DUE: Everyday
Programs Sketchbook: TO CLEAN
- Demo & Install Web Developer Extension for your browser
- Technical: HTML & CSS overview
- DUE: In-class assignment: HTML problem set in Processing & PHP
- 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: Hello World problem set in Processing & PHP
- Channel Title: Delicious/emergent/class02_readings
Wed, Sept 26, 2007: 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
- 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 3, 2007: More Variables, Data Types and Operators
- Student presentation: Jonas
- DUE: Everyday Programs Sketchbook: TO DRINK
- Data Types & Variables - review concepts
- DUE: In-class assignment: Data types problem set in Processing & PHP
- Presentation: Basics of Loops, Conditionals, and Functions (if/else, for, and functions)
- 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 10, 2007: Loops, Conditionals and Functions
- Student presentation: Mary & Clement
- Clement leads the class (Catherine traveling).
- DUE: Everyday Programs Sketchbook: TO EAT
- DUE: In-class assignment: Loops, Conditionals and Functions problem set in Processing and PHP
- Channel Title: Delicious/emergent/class05_readings
Wed, Oct 17, 2007: Optional Class - Open Workshop
- Catherine is traveling. Clement will be present to help with problem sets or final project design. Attendance will be recorded.
- 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 24, 2007: Arrays, Complex Data Types, and HTML Forms
- Student presentation: Andrew & Leslie
- DUE: Proposal for final project. Be prepared to present these to the class in critique format.
- DUE: Everyday Programs Sketchbook: TO LEARN
- 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 31, 2007: Arrays, Forms, Request/Response
- Student presentation: Emma & Rita
- DUE: Everyday Programs Sketchbook: TO LISTEN
- Individual meetings for getting started on final projects
- DUE: Arrays, Forms Problem Set
- 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, Nov 7, 2007: More on Arrays & Forms
- Student presentation: Rosalinda & Hannah
- DUE: Everyday Programs Sketchbook: TO READ
- DUE: Arrays, Forms Problem Set
- Presentation: Database Basics
Wed, Nov 14, 2007: The Database is your friend
- Student presentation: Jessica & Sarah
- DUE: Everyday Programs Sketchbook: TO SLEEP
- DUE: Database Problem Set
- Channel Title: Delicious/emergent/class08_readings
Wed, Nov 21, 2007: HOLIDAY, NO CLASS
Wed, Nov 28, 2007 - Work on Final Projects
- DUE: Everyday Programs Sketchbook: TO WALK
Wed, Dec 5, 2007
- DUE: FINAL PROJECT DEMOS & FINAL PROPOSALS
- DUE: Everyday Programs Sketchbook: TO WATCH
Wed, Dec 12, 2007: STUDIO REVIEW WEEK, NO CLASS