Introduction to Computational Media Syllabus
Daniel Shiffman
Week 1 -- Introduction: Sep 7/8
- 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
- Chapters 1-2 from Learning Processing.
- Also, chapters 1-3 from Getting Started with 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 (Tues Class, Wed 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 -- Sep 14/15
- The flow: code blocks, setup, draw, and events
- Variables: Declare, Initialize, Use
- Random
- Other Resources:
- Homework:
- Read Chapters 3-4 from Learning Processing.
- Also, chapters 4-5 from Getting Started with Processing
- Create a dynamic application. You can continue to elaborate on last week's assignment or you can design something new. For example, move your shapes around the screen according to mouse / keyboard interaction. Use variables to change colors, grow and shrink your design, etc. Start by working in pairs (according to the wiki: Tues Class, Wed Class) You can post as a group or break off and complete the assignment individually.
Week 3 -- Conditionals, Loops: Sep 21/22
- Boolean Variables
- Loops
- Other Resources:
- Homework
- Read Chapters 5-6 from Learning Processing.
- Try Exercise 5-6 and Exercise 5-8. We will go over answers in class.
- Homework: Continue to elaborate on last week's assignment incorporating conditionals. Use the new pairs (according to the wiki: Tues Class, Wed Class) You can post as a group or break off and complete the assignment individually.
Week 4 -- Modularity: Functions and Objects: Sep 28/29
- Functions: Modularity!
- Re-usability and Parameter Passing
- Object-Orientation!
- Homework
- Chapters 7 and 8 from Learning Processing.
- Also, chapters 8-9 from Getting Started with Processing
- Try exercise 7-8 and Exercise 8-5. We will go over answers in class.
- 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: Tues Class, Wed Class
Week 5 -- Arrays (and Iteration review): Oct 5/6
- Reviewing looping
- Arrays
- Dano's handout
- Chapters 6 and 9, 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).
- Try Exercise 9-6 and Exercise 9-7. We will go over answers in class.
Week 6 -- Images and Pixels: Oct 12/13
- Images
- Video as Image
- Learning Processing, Chapters 15-16
- Homework: Incorporate the pixels of an image (or video) into a Processing sketch.
- 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 -- Video! Discuss Midterm, Intro to Strings: Oct 19/20
- Video as Sensor
- Danny's Examples:
- Discussion of contributed Processing libraries for video and computer vision
- Strings!
- Homework: Complete midterm assignment and be prepared to show your work next week. Link to a page that documents your work on the midterm assignment. Include a brief write-up of your idea as well as documentation of your implementation exercise. Remember, this is a one-week assignment and you aren't expected to complete your project, just take a first step. Everyone will present in class. Plan on speaking for 5 minutes or less (not including questions). Tues Class, Wed Class
Week 8 -- Show Midterms: Oct 26/27
- Each student will present their midterm assignment. Plan on speaking for 5 minutes or less (not including questions). Talk briefly about your idea as a whole, what you chose to implement in just this one week, any problems you had, and future plans. We will follow the order on the wiki so feel free to move things around if you would like to present earlier or later in class (those at the bottom of the list have a chance of being pushed a week later.) Tues Class, Wed Class)
Week 9 -- Loading external data into Processing, introduction to PHP: Nov 2/3
- Updated tutorial: http://www.learningprocessing.com/tutorials/external-data-into-processing-1/
- Text Parsing: length(), equals(), indexOf(), substring(), split(), join()
- Input from keyboard: user input
- loadString(): data from text files!
- Chapter 17-18, Learning Processing
- What is Electronic Writing
- Homework: Create a sketch that loads data into Processing or saves data out of Processing using loadStrings() and saveStrings()/PrintWriter. Post a link to your assignment on the wiki. Tues, Wed Here are some suggestions:
- Take a previous sketch you made and use saveStrings() or PrintWriter to save data that the sketch can remember next time it runs.
- Load a large body of text (novel, speech, blog posts, e-mails, etc.) and visualize the frequency of words in the text.
- Although we haven't covered PHP yet, try using one of these php scripts in combination with loadStrings():
- Also, here's a great tutorial about NYTimes API and Processing http://blog.blprnt.com/blog/blprnt/processing-json-the-new-york-times Make an example based off this tutorial.
- Remember, some sketches won't run online as applets! http://www.learningprocessing.com/tutorials/sandbox/ Simply post documentation and your code if you run into problems.
Week 10 -- Processing and PHP: Nov 9/10
- Code examples and tutorial: http://www.learningprocessing.com/tutorials/external-data-into-processing-2/
- PHP basics
- Case Studies in Getting Data
- 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 wo weeks. Check the wiki for assigned date (but feel free to switch these around): Tues, Wed.
Week 11 -- Propose Final Projects: Nov 16/17
- Proposal Schedule: Tues, Wed.
- Extra topic: Translation and Rotation (Chapters 13 and 14 from book.)
- Z Axis
- P3D vs OPENGL
- Translate / Rotate
- Custom shapes (vertex)
- pushMatrix / popMatrix
Week 12 -- Propose Final Projects: Nov 23/24
NO CLASS TUESDAY NOV 30 or WEDNESDAY DEC 1
Week 13 -- Final Project Presentations Part I: Tuesday, Dec 7, Wednesday, Dec 8
Week 14 -- Final Project Presentations Part II: Tuesday, Dec 14, Thursday, Dec 16
- Note the Wednesday class is meeting on Thursday!! Same room, same time, just Thursday.
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.
|