ICM-Dan-Shiffman-F07
Syllabus / ICM-Dan-Shiffman-F07

## Introduction to Computational Media Syllabus

### Week 1 -- Introduction

• Class Introductions
• Whaaaaaaaaaaaa? Why are we here? What is computational media? Can I program? What do I want to do?
• The Algorithm
• High Level vs. Low Level.
• Processing and the Java Virtual Machine
• The Fundamentals of Programming
• Coordinate Systems
• Shapes and Color
• Code itself & The Reference
• Pressing the "Play" button
• Exporting as an applet
• Read: Chapters 1, 2, and 3 from draft book. (Title suggestions anyone?)
• Read: Hackers and Painters by Paul Graham
• Homework: Create your own screen drawing, using only 2D primitive shapes – arc(), curve(), ellipse(), line(), point(), quad(), rect(), triangle() – and basic color functions – background(), colorMode(), fill(), noFill(), noStroke(), stroke(). Remember to use size() to specify the dimensions of your window. (This is Exercise 2-9 from the book.)
• Examples: See the wiki and the book.

### Week 2 -- Interaction and Variation

• The flow: code blocks, setup, draw, and events
• Variables: Declare, Initialize, Use
• Random
• Conditionals
• Boolean Variables
• Loops
• Read Chapters 4, 5, and 6 from draft book.
• Try exercises 5-6 and 5-8. We will go over answers in class.
• Homework: Create a dynamic application. You can continue to elaborate on last week's assignment or you can create something new. For example, develop a set of rules for moving it around the screen, have it grow and shrink, change colors, etc. Can you make it respond to mouse interactivity? Start by working in pairs (according to the wiki) You can post as a group or break off and complete the assignment individually. (This is Exercise 5-10 from the book.)

### Week 3 -- Modularity: Functions and Objects

• Functions: Modularity!
• Re-usability and Parameter Passing
• Object-Orientation!
• Read Chapters 7 and 8 from draft book.
• Try exercises 7-7 and 8-5. We will go over answers in class.
• Homework: Re-organize the code of a previous assignment or example using functions and objects. Start again by working in pairs (new ones according to the wiki) You can post as a group or break off and complete the assignment individually. (This is the "Lesson Three Project" from the book.)

### Week 4 -- Arrays (and Iteration review)

• Reviewing looping
• Arrays
• Dano's handout
• Review Chapter 6 from draft book.
• Read Chapters 9, 10 and 11 from draft book.
• Homework: Take an object you developed for week 3's homework and duplicate the object using an array and loop. Feel free to work individually or in pairs (no pairs will be assigned this week.)
• Try Exercise 9-6 and 9-7. We will go over answers in class.
• Exercise. Try to recreate the following applets in Processing. Many clues are available in Chapter 9. lab1, lab2, lab3, lab4 We will go over the answers in class.

### Week 6 -- Microcontrollers and Cameras

• Read chapters 15, 16, and 19.
• Intersection with Physical Computing -- Serial Input
• Video as Image
• Video as Sensor
• Dano's Handouts: Serial, Video
• Homework: Work with serial or video input. Post your code and/or screenshots to the wiki (since it won't run in the browser).
• Midterm: Brainstorm an idea for a midterm project. Feel free to think of your midterm on as grand a scale as you like, however, the midterm assignment will involve implementing only one step of a larger project. Remember, it's only a one week assignment! Be prepared to speak briefly about your midterm idea next week.

### Week 10 -- Propose Final Projects

• Translation and Rotation (Chapters 13 and 14 from book.)
• OOPS! Examples for topics below to be posted later today (wed, nov. 7)
• Z Axis
• P3D vs OPENGL
• Translate
• Rotate
• Custom shapes (vertex)
• pushMatrix / popMatrix

### Week 11 -- Proposal Final Projects

• More on image processing and video (Chapters 15 and 16 from book.)
• Video as Image
• Video as Sensor
• Dano's Video Examples
• Danny's Examples:

### Requirements

• You are required to attend all class meetings and submit all weekly assignments, midterm, and final projects.
• Grading will be determined by the following factors:
• Attendance and participation in class discussion and engagement in other students' projects. (25%)
• Completion of weekly assignments and midterm (50%)
• Completion of final project (25%).
• Note that your work is evaluated based on your own personal progress through the class, i.e. how much you advanced from your initial state.