Introduction To Computational Media
- One liner – What did you do?
- Content – Why did you do it? Who is the audience? How does it engage with the theoretical and technical concerns we have discussed in this class?
- Each week 3 randomly chosen students will discuss their homework assignments using the above format. This format will also be used for midterm and final project presentations.
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 2.0 Alpha 1 (released 9/2/11): MACOSX, WINDOWS, LINUX
Processing Reference Page
- Processing's screen coordinates
- Processing's drawing and color functions
- Abstract Modern Art for inspiration
- Related Reading
- Sign up for the ICM Google Group: https://groups.google.com/a/itp.nyu.edu/group/icm
- 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-Kairalla-ICM-F11. 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 2- Interaction and Variation
- Code Blocks http://www.learningprocessing.com/examples/chapter-3/
- setup() and draw()
- From concept to code: how to plan out your application.
- Variables: Declare, Initialize, Use: http://www.learningprocessing.com/examples/chapter-4/
- Conditional Statements
- basic debugging.
- DanO's Handout
- Related Reading
- 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. 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.
- Related Reading
- Lessons 5-6 from Learning Processing.
- Chapters 4-5 from Getting Started with Processing
- 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)
- Functions (review)
- Arrays- A variable for variables.
- DanO's Handout on Arrays
- Read Lessons 6 and 8 (skip 7 for now) from Learning Processing
- 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- Hello Outside World, part 1: Strings and Networking
Week 6- Hello Outside World: Images and Cameras
- 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
- Serial (not covered in this class, but left as reference)
- Read Lesson 9 in "Learning Processing"
- 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
- Class Notes
- 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.
- 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- More Drawing Techniques
- Advanced Demos- For those of you who like a challenge!
- Really Advanced!
- Screen location of a 3D object
- Watch "The Prestige"
- 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
- You are free to host your documentation on your ITP account or your personal webserver. If you are considering paying for a hosting service, I recommend dreamhost- http://www.dreamhost.com/
Week 10 (November 10)- Propose Final Projects, Part 1
- Final Project Milestone: You should be nearing the end of the conceptual phase of your final project.
- Networking and remote servers
Week 11 (November 17)- Propose Final Projects, Part 2
- Final Project Milestone: You should be done planning out your final project, and hopefully you've started coding.
- 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.
Week 12 (December 1)- Final Project Workshop
Shhh! Don't tell anyone, but Processing is really Java. It's true that Processing takes care of some scary aspects of Java for you, but you are closer to using a "real" programming language than you may think.
Week 13 (December 8)- Final Project Workshop
- Final Project Milestone: You should be done with the feature set, and now you're debugging and refining.
Week 14 (December 15)- Final Project Presentations
There will be no "Incompletes". All work must be done by the end of the semester.
Your pass will be determined by a variety of factors:
- You are expected to finish all assignments for the class.
- If you do not submit a midterm project and final project, then you will not pass.
- Class Participation and Attendance
- Please contribute to class discussion. Your comments are valuable and should be shared.
- Attendance is mandatory. Unexcused absences will jeopardize a pass. Let me know ahead of time if you're going to be absent. Chronic lateness will jeopardize a pass. Don't be late.
- 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.