|
Syllabus / ICM-Liesje-Hodgson-S12
Introduction to Computational Media SyllabusLiesje Hodgson Thursday, 6:30pm - 9:00pm, Room 445 liesje@nyu.edu Office Hours Sign Up General ICM Page: includes links to helpful resources, work from other sections, and instructions on how to upload your homework. Homework Wiki: This is where you post links to your weekly assignments. Main Processing page book: www.learningprocessing.com Other Processing books available Processing site tutorials Week 1 -- Introduction and Drawing -- Jan 6 Why are we here? What is computational media? What is programming? What is it good for? What kinds of programming languages are there? Algorithmic Thinking What is Processing? Why Processing? Server-side vs. client programming Things made with Processing: ProcessingLinks Drawing with numbers Coordinate Systems Shapes Color Code Processing reference Running your application Exporting: applet, application, android, javascript Related Reading Chapters 1-2 from Learning Processing. Chapters 1-3 from Getting Started with Processing Downloading Processing This semester we are going to use an alpha release of Processing 2.0. The advantage of this is that we are using the leading edge newest version of Processing which includes Javascript mode, better support for video, and many other features. The downside to using 2.0 is that it is new and somewhat unstable, we may experience more bugginess than with the existing 1.5.1 version. In addition, some changes made for Processing in 2.0 will result in differences in the reference and examples on the Processing web site, as well as in the various Processing books. Changes are documented on the Processing wiki. If you think you have found a bug or are confused by a syntax difference, send an e-mail to the google group. Download Processing 2.0 Alpha 1 (released 9/2/11): MACOSX, WINDOWS, LINUX Homework 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 the 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: ICM-Liesje-Hodgson-S12. 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 -- Animation -- Feb 2 The flow: code blocks, setup, draw, and events: http://www.learningprocessing.com/examples/chapter-3/ Variation: mouseX,mouseY Variables: Declare, Initialize, Use: http://www.learningprocessing.com/examples/chapter-4/ Random Transformations Related Reading Chapters 3-4 from Learning Processing. Chapters 4-5 from Getting Started with Processing Homework Create a animated application. You can continue to elaborate on last week's assignment or you can design something new. Use variables to change colors, grow and shrink your design, etc. Start by working in pairs (according to the wiki: ICM-Liesje-Hodgson-S12 You can post as a group or break off and complete the assignment individually. Week 3 -- Interaction -- Feb 9 Conditionals: http://www.learningprocessing.com/examples/chapter-5/ If, else if, else Boolean variables Relational Operators, Logical Operators Buttons, rollovers, switches Loops: http://www.learningprocessing.com/examples/chapter-6/ while for Related Reading Chapters 5-6 from Learning Processing. Chapters 4-5 from Getting Started with Processing Homework Use mouse and keyboard input to create an interactive drawing. Week 4 -- Functions & Objects: Part 1 -- Feb 16 The Theory of Object Oriented Programming Functions: http://www.learningprocessing.com/examples/chapter-7/ Re-usability Modularity Calling vs. Defining Parameter Passing Return types Recursion Simple Fractal Branching Fractal Event functions MousePressed & KeyPressed Intro to Objects Related Reading Chapters 7-8 from Learning Processing. Chapters 8-9 from Getting Started with Processing 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. Work individually or in pairs (no pairs will be assigned this week.) Post results to the wiki: ICM-Liesje-Hodgson-S12 Week 5 -- Functions & Objects Part 2 -- Feb 23 Objects: http://www.learningprocessing.com/examples/chapter-8/ Principles and Theory (Encapsulation) How-to The Constructor! Objects talking to objects Related Reading Chapters 7-8 from Learning Processing. Chapters 8-9 from Getting Started with Processing Homework Design a sketch in an object-oriented fashion. Try to eliminate all code from the main tab (setup() and draw()) except for the core requirements (size(), background(), etc.) and calls to objects. Week 6 -- Repetition and Reproduction: Mar 1 Review loops: http://www.learningprocessing.com/examples/chapter-6/ Arrays: http://www.learningprocessing.com/examples/chapter-9/ What is an ArrayList? Related Reading Chapters 6 and 9, from Learning Processing. Chapter 10 from Getting Started with 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). 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 -- Pixels: Mar 8 Images http://www.learningprocessing.com/examples/chapter-15 Load and display Sequence Image Processing and the Pixel Array Related reading: Learning Processing, Chapters 15-16 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). Link to your documentation on the wiki: ICM-Liesje-Hodgson-S12 Week 8 -- Show Midterms: Mar 22 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.) Link to your documentation on the wiki: ICM-Liesje-Hodgson-S12 Week 9 -- Video and Computer Vision: Mar 29 Video: http://www.learningprocessing.com/examples/chapter-16/ Live video input Move playback Contributed Processing Libraries JMyron: http://webcamxtra.sourceforge.net/ OpenCV: http://ubaa.net/shared/processing/opencv/ BlobDetection: http://www.v3ga.net/processing/BlobDetection/ CCV + TUIO: http://ccv.nuigroup.com/, http://www.tuio.org/?processing 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 three weeks. Check the wiki for assigned date (but feel free to switch these around). Week 10 -- Propose Final Projects + Data -- Apr 5 Proposal Schedule TBD Basics of working with Strings Tutorial: http://processing.org/learning/text/ http://www.learningprocessing.com/examples/chapter-17 Loading external data local text files, CSV data User input Graphing Comma-Separated Numbers from a Text File with loadStrings() Creating Object from a Text File Saving Loading and Saving Data to Text File with saveStrings() Saving mouse coordinates with print writer Loading from a URL Word counts from Project Gutenberg Character counts from Project Gutenberg XML Creating objects from data in local XML file Yahoo Weather XML Yahoo Weather XML in an Object (leads to threading) ITP CakeMix About CakeMix: https://github.com/runemadsen/Cakemix#readme Download Processing CakeMix library: http://www.learningprocessing.com/example-files/chapter18/2011/cakemix.zip (temporary location) Discussion of APIs and Databases Discussion about Threads http://wiki.processing.org/w/Threading secret thread() function Web security in JS mode, sandbox, etc. Chapter 17-18, Learning Processing (Chapter 18 is pretty out of date) Data / Text projects and resources What is Electronic Writing Jer Thorp Zoe Fraade-Blanar Flowing Data Visual Complexity Adam Parrish William Burroughs Cut-ups Brion Gysin's permutation poetry 10 projects using real-time data Visual thesaurus Cabspotting World mapper Week 11 -- Propose Final Projects + Data: April 12 Proposal Schedule TBD (see e-mail to class list for examples) P3D translate, rotate, and scale 3D shapes, vertices textures lighting opengl rendering tricks loading models PShape Week 12 -- Propose Final Projects: April 19 Proposal Schedule TBD Fun with JavaScript! Fun with Android! Fun with Java! Import Statements, Processing libraries vs. Java libraries Javadocs http://java.sun.com/j2se/1.5.0/docs/api/ A book: http://www.oreilly.com/catalog/hfjava/ Example Java classes ArrayList Documentation, ArrayList Example Rectangle Documentation, Rectangle Example ArrayList & Rectangle try/catch, exception/error handling Related Reading Chapters 22 and 23 from Learning Processing Week 13 -- Final Project Workshop: April 26 Week 14 -- Final Project Presentations, May 3 Final project documentation is due, Friday, Dec 16. Requirements You are required to attend all class meetings and submit all weekly assignments, a midterm, and a final project. Grading will be based on a combination of factors: Attendance, participation in class discussion, and engagement in other students' projects (25%) Quality of weekly assignments and midterm (50%) Final Project (25%) Personal progress; how much did you advance from your initial state in this class. |