Introduction To Computational Media
- Office Hours- Wednesday 7-9pm. Sign up for office hours here
- I take office hours in the adjunct office, which is next to the researcher's office.
- Homework Wiki- Upload weekly assignments here
- An advance draft of Dan Shiffman's Processing book will be given out during the first session and will be the main textbook for the class.
Week 1- Hello World: Introduction
- Student and instructor introductions
- How does a computer "think"?
- Processing, the concept- High level and low level programming languages
- Processing, the language- What is it? Why are we using it?
- Download Processing
- Processing's screen coordinates
- Processing's drawing and color functions
- Abstract Modern Art for inspiration
- Read Chapters 1,2, and 3 in Shiffman's book.
- Sign up for the ICM Mailing List (send a blank email to: email@example.com)
- Create your own digital drawing using Processing's 2D shapes functions– 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. (This is Exercise 2-9 from Shiff's book.) Get help with the functions at the Processing reference page.
Week 2- Interaction and Variation
- Code Blocks
- setup() and draw()
- From concept to code: how to plan out your application.
- Conditional Statements
- basic debugging
- DanO's Handout
- Read chapters 4, 5, and 6 in Shiffman's book. Try exercises 5-6 and 5-8.
- Read "Hackers and Painters" by Paul Graham
- Create a dynamic application. You can continue to elaborate on last week's assignment or you can create something new. Some possibilities include: using mouse position to change colors, using loops to make shapes shrink and grow, and using conditional statements to make shapes bounce around the screen. Start by working in pairs- your partner is listed on the homework wiki. You can post the assignment together or continue to develop it on your own. (This is Exercise 5-10 from Shiff's book). Your pairings were generated with this code.
Week 3- Modularity: Functions and Objects
- Clean up your code (Reduce, Reuse, Recycle)
- Encapsulation of Complexity
- Passing Parameter Values
- Creating and Using Objects
- Try DanO's Handouts for another explanation.
- Read Chapters 7 and 8 from Shiffman's book
- Use loops, functions, and/or objects to reorganize the code of a previous assignment or example. If you are inspired by the power of modularity, feel free to elaborate on the assignment, or start a new project. Start again by working in pairs- look at the homework wiki to find your new partner. You can post as a team or complete the assignment individually. (This is "Lesson 3 Project" from the book.)
Week 4- Arrays and Iterations
- Loops (review)
- Arrays- A variable for variables.
- DanO's Handout on Arrays
- Read Chapters 9, 10 and 11 from Shiffman's book
- Read "The Cathedral and the Bazaar" by Eric Raymond
- Using arrays and loops, write a program that creates multiple instances of an object. Some possibilities might be a snow storm, a bunch of bouncing balls, or an army of robots. You can expand on a previous assignment or create a new project. You can work individually or in pairs (not assigned).
Week 5- Strings and Networking
Week 6- Hello Outside World: Microcontrollers and Cameras
- PComp and Processing- Best of friends
- External Libraries
- Asynchronous Communication
- simple video tracking and analysis
- DanO's Serial Examples
- DanO's Video Examples
- Dan Shiffman's Syllabus also has examples.
- WinVDIG for PC Video PC users will need this to get video working in processing.
- Class Notes
- Read Chapters 15, 16, and 19
- Read "Science, Technology, and Poetry: Some Thoughts on Jackson Mac Low"
- Play around with input from either serial or video (or both!). It doesn't have to be elaborate, just get it to work on some level.
- Brainstorm an idea for your midterm project. Your midterm can be an expansion of a previous project, or a new project. A quick note on scope: you only have 1-2 weeks to work on your midterm, so make sure that you pick a project that's challenging but doable. It's more fun to present a project that's simple but works than a project that's ambitious but broken. If you decide to tackle a big project, consider the minimum necessary to prove your concept, and build on that after the midterm.
Week 7- Midterm Workshop
- Discuss Jackson Mac Low
- Be prepared to describe your midterm project in plain english. What will it do? How will people use it? Think about the user experience.
- Break your project down into steps.
- Turn the steps into pseudo code
- Convert pseudo code to code.
- Fix errors.
- Class Notes
- Midterm presentations are next week so git 'er done.
Week 8- MIDTERMS
- Let's see 'em. Be prepared to show and discuss your project for 8 minutes.
Week 9- Java and Socket Connections
Notes on Networking
- "Heads First Java", a great guide to the huge world of Java.
- Read Chapters 19, 22 and 23
- Believe it or not, it's time to begin your final project. Half the class will present their ideas next week; the other half will present the following week. As with the midterm, choose a project that's challenging but doable, and shows aptitude in the skills we've learned. Set a schedule that gives yourself time to deal with unforeseen problems (and there WILL be unforeseen problems). An old professor of mine used to say "If you think you know how long a project will take to finish, multiply that time by 10. And that's half as long as it will really take." Count on it.
- Sign up for two final project presentations and post a link to your work. You have three benchmarks. 1) Final Project Proposal, a brief write-up of your idea with sample images, sketches, links, etc. 2) An "in progress" report of your first step. 3) The final itself. We will go over the requirements for these stages in class.
- Sign up here
- There are lots of free blogging sites that you can use for documentation. Here's a couple:
Week 10- Propose Final Projects, Part 1
Week 11- Propose Final Projects, Part 2
- Final Project Milestone: You should be done planning out your final project, and hopefully you've started coding.
- 2D and 3D Graphics
- Translation and Rotation.
- Drawing with vertex points
- There's lots of good 3D examples built into Processing. Go to File -> Examples -> 3D and OpenGL.
- Homework- Read chapters 13 -14 in Shiffman's book.
Week 12- Final Project Workshop
- Screen location of a 3D object
- Final Project Milestone: You should be knee deep in code by now.
Week 13- Final Project Workshop
- Final Project Milestone: You should be done with the feature set, and now you're debugging and refining.
Week 14- Final Project Presentations
There will be no "Incompletes".
Your grade will be determined by a variety of factors:
- You are expected to finish all assignments for the class.
- Accumulated weekly assignments, including the midterm, will count for approximately 50% of your grade
- Your final project will count for approximately 25% of your grade
- Class Participation and Attendance
- Please contribute to class discussion. Your comments are valuable and should be shared.
- Attendance is mandatory. Unexcused absences will affect your final grade. Let me know ahead of time if you're going to be absent. Chronic lateness will affect your grade. Don't be late.
- Class participation and attendance will count for approximately 25% of your grade.
- Personal Progress
- Your grade is based on your own personal progress in the class. You are not judged against the progress of your fellow classmates.
Laptop screens down while other students are presenting. Laptops may be used for note taking or class related work during lectures.