ICM-Wang-F09
Syllabus / ICM-Wang-F09

## Requirements

• You are required to attend all class meetings and submit all weekly assignments, midterm and final projects.
• Grading (pass/fail) will be based on a combination of a few factors:
• Class participation including attendance and contribution to class discussion and engagement in other student’s projects.
• Quality of all projects and assignments, including conceptual, aesthetic and technical merit.
• Personal progress; how much did you advance from your initial state in this class.

### Week 2 -- Interaction and Variation

• The flow: code blocks, setup, draw, and events
• Variables: Declare, Initialize, Use
• Random
• Conditionals
• Boolean Variables
• Loops
• Other Resources:
• Homework:
• Read Chapters 4-6 from Learning Processing.
• Try Exercise 5-6 and Exercise 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: homework wiki) You can post as a group or break off and complete the assignment individually.

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

• Functions: Modularity!
• Re-usability and Parameter Passing
• Object-Orientation!
• Chapters 7 and 8 from Learning Processing.
• Try exercise 7-8 and Exercise 8-5. We will go over answers in class.
• Homework: Re-organize the code of a previous assignment or example using functions and objects. If you are inspired by the power of modularity, feel free to elaborate on the assignment. Start again by working in pairs (new ones according to the wiki: Homework Wiki) You can post as a group or break off and complete the assignment individually.

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

• Reviewing looping
• Arrays
• Dano's handout
• Chapter 6, 9, 10, 11 from Learning Processing.
• Homework: Using arrays and loops, write a program that creates multiple instances of an object (feel free to use an object you developed previously or create something new). Feel free to work individually or in pairs (no pairs will be assigned this week.)
• Try Exercise 9-6 and Exercise 9-7. We will go over answers in class.

### Week 6 -- Microcontrollers and Cameras

• Chapters 15, 16, and 19 from Learning Processing.
• Libraries
• Intersection with Physical Computing -- Serial Input
• Arduino interface through Processing
• Audio as sensor
• Video
• Macbooks
• Dano's Handouts: Serial, Video
• Homework: Work with a serial, video, or audio 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 7 -- Review and Midterm Workshop

• Homework: Complete midterm assignment and be prepared to show your work next week. Document the "larger idea" for the project, as well as your "one-step" implementation exercise.

### Week 9 -- OpenFrameworks

• startup guide
• c++ vs java
• openframeworks vs processing
• OF is not a program like processing, it is a framework consisting of many libraries to make programming in c++ easy for you and me
• IDE, compiler
• Xcode,Codeblocks
• .h,.cpp files
• void setup, update, draw
• folder structure
• OF>apps>myApps>myAwesomeProgram
• workflow
• start by copying the entire folder of an example (like allAddonsExample) into myApps
• open the openFrameworks.xcodeproj file to begin editing
• all the files that matter are under src in the left column file browser in the xCode IDE.
• main.cpp is short, the only things that matter here are window size, and whether you want full screen or not
• testApp.cpp (source file) is where all your main code goes
• testApp.h (header file) is where you declare all your global variables and functions
• when you're ready to compile and run, hit "build and go"
• the first time it compiles, it may take more time than usual
• you can watch the console in a separate window to see any printouts, or errors (Run>Console)
• syntax
• tips (in Xcode)
• command+doubleclick on a function or variable to go to its source
• hit esc in the middle of typing a variable or function to help autocomplete what you're typing
• Homework: Prepare a final project proposal. Create a web page or blog post with title, description, sample imagery, diagrams, Processing code, etc.

### Week 12 -- Final Project Workshop

• Translation and Rotation (Chapters 13 and 14 from book.)
• Z Axis
• P3D vs OPENGL
• Translate
• Rotate
• Custom shapes (vertex)
• pushMatrix / popMatrix
• examples from class

### Requirements

• You are required to attend all class meetings and submit all weekly assignments, a midterm, and a final project.
• Grading (pass/fail) will be based on a combination of factors:
• Attendance and participation in class discussion and engagement in other students' projects.
• Quality of weekly assignments, midterm, and final project.
• Personal progress; how much did you advance from your initial state in this class.