Introduction to Computational Media Syllabus
Daniel Shiffman
Week 1 -- Introduction
- Class Introductions
- Why are we here? What is computational media? What is programming? What is it good for? What kinds of programming languages are there?
- The Algorithm
- High Level vs. Low Level.
- Processing and the Java Virtual Machine
- The Fundamentals of Programming
- Coordinate Systems
- Shapes and Color -- tutorial on learningprocessing.com
- Code itself & The Reference
- Pressing the "Play" button
- Exporting as an applet vs. application
- Homework
- Read Chapters 1, 2, and 3 from Learning Processing.
- download and install Processing
- Sign up for course mailing list!
- 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.
- Upload your assignment and post a link to the homework wiki (Wed Class, Thurs Class).
- Examples: http://www.learningprocessing.com/examples/ -- take a look at Chapter 1 and 2 (3 if you are feeling ambitious).
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: Wed Class, Thurs Class) 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) 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 5 -- Strings and Networking
- Strings!
- String Parsing:
- HTML vs. XML (plus libraries!)
- Sandbox
- Read: Chapters 12, 17 and 18 from Learning Processing.
- Read: What is Electronic Writing
- Homework: Create a Processing sketch that uses input from a text file or URL (see Lesson Eight Project from book.)
Week 6 -- Microcontrollers and Cameras
- Chapters 15, 16, and 19 from Learning Processing.
- Libraries
- Intersection with Physical Computing -- Serial Input
- Audio as sensor
- 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 8 -- Show Midterm
Week 9 -- PHP
- http://en.wikipedia.org/wiki/PHP, http://www.php.net/
- Basic unix commands
- basic HTML
- PHP and HTML together
- Fundamentals of Programming in PHP
- PHP and web forms
- PHP Persistence, PHP source code
- PHP and Processing together w/ Persistence
- Reading: Learning Processing PHP Tutorial (in progress, please feel free to e-mail comments/questions/corrections,etc.)
- Reading: Dano's PHP, Shawn's PHP
- Homework: Use PHP in combination with web form or with Processing. Post a link to your assignment on the wiki. Wed, Thurs
- Homework: Prepare a final project proposal. Create a web page or blog post with title, description, sample imagery, diagrams, Processing code, etc. Half of you will present next week, half of you in two weeks. Check the wiki for assigned date (but feel free to switch these around): Wed, Thurs
Week 10 -- Propose Final Projects
- More on image processing and video (Chapters 15 and 16 from book.)
- Images
- Video as Image
- Video as Sensor
- Danny's Examples:
Week 11 -- Propose Final Projects
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
Week 13 -- Final Project Workshop
Week 14 -- Final Project Presentations
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 a few 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.
|