Skip to content

Latest commit

 

History

History
294 lines (279 loc) · 25.9 KB

Syllabus-2014-Shiffman-Tues.md

File metadata and controls

294 lines (279 loc) · 25.9 KB

Introduction to Computational Media Syllabus

Note this section is for students with prior programming experience and has its own syllabus separate from all other sections

Section Pages and Homework Wikis

Week 1 -- Introduction and Drawing

Week 2 -- Animation and Interaction

Week 3 -- Functions & Objects: Part 1

  • The Theory of Object Oriented Programming
  • Functions
  • Intro to Objects
  • Watch (preview next week's content)
  • Related Reading
  • Homework: The goal for this week is to start organizing your code into modular and reusable parts. If you are experienced with object-oriented programming, you might just start by creating a program with classes. However, if this is new to you it's often a good idea to just start by playing with functions. Some exercise ideas for you to pick from:
    • Take a previous assignment with code in setup() and draw() and break everything out into separate function.
    • Take the idea for a design and break it out into its own function. Add parameters to the function so the design can be drawn differently based on the selected parameters. Draw three or more instances of the design on the screen to show the differences possible by changing the parameters. Here is the Robot example referred to in class
    • Create a design from a recursive function. How could you animate or change this design over time? Can you make it interactive or have it controlled by noise()? Here are some samples as demonstrated in class.

Week 4 -- Functions & Objects Part 2

  • Objects
    • Principles and Theory (Encapsulation)
    • How-to
    • The Constructor!
    • Objects talking to objects
  • Related Reading
  • Watch (preview next week's content)
  • 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.
      • For example: Consider building a particle system. A particle system can be used to simulate: rain, snow, fireworks, explosions, smoke, etc. For this week, you would create a Particle class to describe a single particle and try to get two particles on the screen using separate variables. (Then next week, after we learn arrays, you would visualize hundreds (or thousands) of particles on the screen.)
    • E-mail the code for a class to your assigned partner on the wiki. You'll get one from them too. Try incorporating the class sent to you into your sketch. Write some thoughts about this process on your blog -- Did anything not work? Could you follow your partner's code? Were comments helpful? (If you are feeling saucy, you could try to use github for this collaboration.)

Week 5 -- Repetition and Reproduction

  • Review loops
  • Arrays
  • A String is like an array of characters
  • An image is like an array of pixels
  • What is an ArrayList?
  • Related Reading
  • Homework
    • Using arrays and/or ArrayLists, write a program that creates multiple instances of an object (feel free to use an object you developed previously or create something new). Here are some additional ideas if you are stuck.
      • Experiment with the resizable nature of ArrayLists. Can you add objects one at a time? Remove them after a certain amount of time or when they leave the screen? Can objects from on ArrayList trigger the birth of other objects?
      • Create an object that stores the history of its own path. This might be a drawing program where you keep a history of mouse locations in an ArrayList or a shape that moves around the screen autonomously and draws its own trail. Can you have an ArrayList of these objects (each of which tracks its own ArrayList?). Some examples as demonstrated in class
      • Once you have an array of objects, you can have each object check every other object with a nested loop. Try incorporating this idea into a sketch by having objects react to intersecting with others. Example demonstrated in class
      • A String is like an array of characters. Can you create a sketch that plays with text by looping through the "array" inside a String. See: charAt()
      • A PImage contains an array of pixels. Experiment with image processing by looping through all the pixel colors of an image. This tutorial will help you get started.
      • Create a system that involves a two dimensional grid. Use a 2D array to store the data of this system. This tutorial will help you get started.
      • Processing includes other data structures to store information with functionality above and beyond an array. Some examples are IntList and IntDict. A common use of IntDict is storing the number of times words appear in a document. Try using one of these data structures in the development of a sketch.

Week 6 -- Vectors and Simulation

Week 7 -- Pixels

Week 8 -- Data

Week 9 -- Bonus Topics (we will not do all of these in class but there will be a sampling)

Week 10 -- Propose Final Projects

  • ** See your individual section's proposal schedule on your wiki **

Week 11 -- One on one speed user testing / feedback

  • This week you will "user test" your project with fellow classmates. You must have some implementation that you can test completed by this time. User testing can mean different things for different projects. For a game, it can mean that the user tries to play it. For an art piece, it could mean showing it to a classmate and asking for them to say what they think it is about or how it made them feel. We'll show projects in a "one on one" / round robin / speed dating-style session. 5 minutes then switch. You cannot not explain your project, just show and let the user try it and give you feedback. Then you can answer questions. User testing schedule will be provided on a wiki.

Week 12 -- Final Project Presentations

  • Please add your link to your final project documentation on your section's wiki.