ICM-Matt-Parker-F12
Syllabus / ICM-Matt-Parker-F12

Introduction to Computational Media Syllabus Matt Parker

### Week 1 -- Introduction and Drawing -- Sep 5

• Why are we here? What is computational media? What kinds of programming languages are there?
• What is Processing? Why Processing?
• Server-side vs. client programming
• “Modes” -Java, Android, JS
• Other open source creative coding frameworks: Openframeworks and Cinder
• Drawing with numbers
• Coordinate Systems
• Shapes
• Color
• Basic programming review
• The flow: code blocks, setup and draw: http://www.learningprocessing.com/examples/chapter-3/
• Conditionals: http://www.learningprocessing.com/examples/chapter-5/
• If, else if, else
• Boolean variables
• Relational Operators, Logical Operators
• Buttons, rollovers, switches
• Code
• Processing reference
• Exporting: application, android, javascript, applet?
• Watch
• This semester we are going to use Processing 2.0 (currently in version Beta1). The advantage of this is that this version of Processing includes Javascript mode, better support for video, and several other features. The downside to using 2.0 is that it is new and will result in differences in the reference and examples on the Processing web site, as well as in the various Processing books. Changes are documented on the Processing wiki. If you think you have found a bug or are confused by a syntax difference, send an e-mail to the google group.
• Homework
• Create your own screen drawing: self-portrait, alien, monster, etc. Use 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.
• Post a link to the homework wiki: Homework-Parker-ICM-F12. Instructions for how to do so are here: Homework-upload-instructions
• Examples: http://www.learningprocessing.com/examples/ -- take a look at Chapter 1 and 2 (3 if you are feeling ambitious).

### Week 3 -- Interaction -- Sep 19

• A String is like an array of characters: http://processing.org/learning/text/
• Displaying Text (text, textFont, Pfont)
• Parsing Strings
• User input
• Graphing Comma-Separated Numbers from a Text File with loadStrings()
• Chapters 5-6 from Learning Processing.
• Chapters 4-5 from Getting Started with Processing
• Homework
• Use mouse and keyboard input to create an interactive drawing with text. Use the new pairs (according to the wiki: Homework-Parker-ICM-F11). You can post as a group or break off and complete the assignment individually.

### Week 4 -- Functions & Objects: Part 1 -- Oct 3

• The Theory of Object Oriented Programming
• Functions: http://www.learningprocessing.com/examples/chapter-7/
• Re-usability
• Modularity
• Calling vs. Defining
• Parameter Passing
• Return types
• Event functions
• MousePressed & KeyPressed
• Intro to Objects
• Objects: http://www.learningprocessing.com/examples/chapter-8/
• Principles and Theory (Encapsulation)
• How-to
• The Constructor!
• Objects talking to objects
• Chapters 7-8 from Learning Processing.
• Chapters 8-9 from Getting Started with Processing
• 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. Work individually or in pairs (no pairs will be assigned this week.) Post results to the wiki: Homework-Parker-ICM-F11

### Week 5 -- Functions & Objects Part 2 -- Oct 10

• Objects: http://www.learningprocessing.com/examples/chapter-8/
• Subclassing: Objects extending Objects
• Polymorphism: Circles, Squares, and Rectangles all extend Shape
• Processing Object: PVector
• Java Object: ArrayList
• Homework
• Design a sketch in an object-oriented fashion. Try to eliminate all code from the main tab (setup() and draw()) except for the core requirements (size(), background(), etc.) and calls to objects.

### Week 6 -- Images and Camera: Oct 17

• Images http://www.learningprocessing.com/examples/chapter-15
• Sequence
• Image Processing and the Pixel Array
• Video: http://www.learningprocessing.com/examples/chapter-16/
• Live video input
• Software Mirrors
• Color Tracking
• Learning Processing, Chapters 15-16
• Homework: Pixels Project
• Develop a project that uses images and pixels. For this project you are required to document your work in a blog post in addition to creating the Processing sketch.
• A software mirror that colors a design according to live video pixels.
• more suggestions will go here. . .

### Week 8 -- Data. Oct 31

• local text files, CSV data
• User input
• Graphing from a Text File with loadStrings()
• Creating Object from a Text File
• Saving
• XML
• JSON
• Discussion of APIs and Databases
• Chapter 17-18, Learning Processing (Chapter 18 is pretty out of date)
• Data / Text projects and resources
• Electronic Writing
• Jer Thorp
• Flowing Data
• Visual Complexity
• Homework: MIDTERM!
• Make something you want to make. Try to use something from this week, but think of it as part of a larger project. Maybe make the first part of a larger project (maybe your final). This is only a one week assignment, so DON'T FREAK OUT!

### Week 9 -- Advanced Graphics: Nov 7

• P3
• translate, rotate, and scale
• 3D shapes, vertices
• textures
• lighting
• opengl rendering tricks
• PShape
• Homework: Prepare a final project proposal. Create a web page or blog post with title, description, sample imagery, diagrams, Processing code, etc. Presentations will be split over the next three weeks. Check the wiki for assigned date (but feel free to switch these around).

### Week 10 -- Other Topics -- Nov 14

• Fun with JavaScript!
• Fun with Android!
• Fun with Java!
• Example Java classes
• ArrayList Documentation, ArrayList Example
• Rectangle Documentation, Rectangle Example
• ArrayList & Rectangle
• try/catch, exception/error handling
• Chapters 22 and 23 from Learning Processing
• Proposal Schedule: Homework-Parker-ICM-F12
• Recursion

### Week 11 -- Bonus Topics -- Nov 21

• Simple Scene-graphs
• Simple loadable text layouts (working with non-programmers: level editors, init positions, values)
• More Eclipse
• Code Generation
• Debugger
• Local History