Introduction to Computational Media Syllabus
Che-Wei Wang
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 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.
- 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: 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 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
- 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 8 -- Show Midterm
Week 9 -- OpenFrameworks
- setup guide : download the FAT version (comes with addons)
- 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
- .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 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
- PHP, MySQL + Javascript (AJAX)
- http://en.wikipedia.org/wiki/PHP, http://www.php.net/
- 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
- AJAX: Social Switch
- Shawn's simple ajax notes
- 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.
- Homework: Prepare a final project proposal. Create a web page or blog post with title, description, sample imagery, diagrams, Processing code, etc. Homework
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
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 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.
|