Syllabus

Course Description

This course will introduce students to the building blocks of creative computing within a visual and media environment. Students will learn to create dynamic images, type, and interfaces that can translate into print, web, and spatial forms. Through weekly problems, students will learn programming fundamentals that translate to virtually all programming platforms and that will later be paired with various other methods for creative output.

This course will: introduce you to Processing and Arduino; teach you how to program, or improve your fundamentals if you’ve previously done programming; introduce you to physical computing; provide an opportunity to make some really cool stuff.

Background and Context

Design and technology are inextricably linked. In your career you will almost certainly be designing for new technologies, and also using new technology to produce and stimulate your designs.

At its core, the objective of this class is to teach you how to program — or if you are already familiar, to strengthen your fundamentals. At a broader level, our goal is to familiarize you with new technologies to the point where you are comfortable approaching new ones; to allow technology to stimulate creativity, to make you a better designer and artist.

You will encounter these technologies again in future coursework, though maybe not directly. Even if you can’t apply all details that you learn here (like programming language syntax), you will be able to apply the concepts (like if statements and loops) to many if not all of your future classes.

Schedule Outline

The following outlines the main topics to be presented in each class. This may be adjusted during the semester.

Class 1 1/29 Processing Basics
Class 2 2/5 Variables
Class 3 2/12 Flow Control
Class 4 2/19 Interactivy
Class 5 2/26 Movement and State
Class 6 3/5 Arrays, Midterm Assigned
Class 7 3/12 Functions, Re-usability Modularity Style
Class 8 3/19 Classes and Objects
Spring Break
Class 9 4/2 Flex
Class 10 4/9 Midterm Crit
Class 11 4/16 Intro to Physical
Class 12 4/23 Outputs
Class 13 4/30 Inputs
Class 14 5/7 Flex
Class 15 5/14 Final Crit

Learning Outcomes

At the completion of this course, students should be able to:

  • Demonstrate knowledge of fundamental programming concepts
  • Develop visual & interactive projects using Processing
  • Present their design process and work flow
  • Integrate a variety of media elements into their projects
  • Problem solve with other students
  • Build on these skills for future work in their own design practice

Structure

Class format will roughly follow:

  1. Assignment review and questions
  2. Lecture on new material
  3. New material class activity, demo, or hands on time
  4. Introduction to assignment

We will usually start by reviewing last week’s homework and answering questions. Then introduce new concepts, and provide time in class to work with the new ideas and start your homework.

Assessable Tasks

Students will complete weekly assignments to demonstrate understanding of course material. These assignments will be evaluated based on technical mastery and conceptual and aesthetic exploration. In addition two longer term projects will be assigned. These assignments will require deeper exploration, development, and application of course material.

Grading

  • 50% Weekly Homework
  • 25% Midterm Project
  • 12.5% Final Project
  • 12.5% Participation

I will provide grade feedback on all assignments throughout the semester. Weekly assignments will be graded using the following rough guide. Please note that work that merely meets all stated requirements is considered “C” work. Higher grades are reserved for work that demonstrates substantial effort and achievement in both technical skills and conceptual development. You are encouraged to think of assignments as starting points, and to build on top of them.

  • F 0 – Did Not Turn In
  • D 1 – Incomplete
  • C 2 – Complete, Average Work
  • B 3 – Good Creative/Technical Exploration
  • A 4 – Very Good Creative/Technical Exploration

Your participation grade is based on class discussions, questions in office hours and email, and discussions on the class blog.

Class Blog

This blog will serve as an online space for this class. I will create an account for each of you here, and you will post assignments here each week.

I will also use this blog to occasionally provide feedback about your work through comments. You will also be able to comment on each other’s posted work — I highly encourage you to do this from time to time, and doing so will help your participation grade.

Homework

Homework is probably the most important part of this class. If you do the homework regularly and keep up, you will do well. And it will be hard to do well otherwise. This course is about a new way of thinking, and a new language or tool. To learn any language or tool, you must use it. A lot. And homework is where you will use what we discuss.

Weekly homework will be due at midnight on the night before class (ie, Monday at 11:59pm, just to be clear). This will give me time to review your work and prepare to talk about it the next day. Late postings will be marked down.

To post your assignment, create a new Post. Any code should be in a file attachment as a .pde file. Please: The title of the post should indicate the assignment, eg, “week 3 homework”. You don’t need to put your name in the title. Any non-code writing can be in the body of the post. Any other attachments can be .txt, .ppt or PDF files.

Homework will be graded from 0 to 4, corresponding roughly to a letter grade.

Office Hours

By appointment. Email to arrange.

Textbook and Materials

Required Text: Getting Started with Processing

This book is by Casey Reas and Ben Fry the original developers of Processing.

This book is fairly short. That is a strength and a weakness. It elaborates on the online reference documentation with a bit more explanation and some helpful examples. I will assign short reading assignments from this to supplement my lecture notes and help with your homework.

You should purchase it as soon as possible, it should cost under $20.

The Processing Development Environment (PDE)

This is application you will use to do most of your work. Available for free download from processing.org. There are also instructions on how to install.

A USB Arduino Board

We will use this for the 2nd part of the semester, starting at about week 10. You will need to purchase a board and some additional materials at that time.

I recommend this kit from adafruit.com: Budget Pack for Arduino Uno

This kit is about $50 and includes the Arduino board, a prototyping breadboard, and some switches, lights, and wires. This is enough to get started making simple projects. Depending on the nature of your final project, you may want/need to purchase some additional components.

If anyone has any trouble purchasing the book or any materials for any reason, please come and see me.

Attendance

We only meet once per week, and we have a lot of material to cover so attendance is important. I will be strictly abiding by the New School attendance policy which says that for a once-a-week class, you are allowed 2 absences. Any more for any reason and you will be dropped from the class. Two late arrivals or early departures will count as one absence. Coming back late from class breaks counts as arriving late. Using youtube, myspace, Facebook, IM, etc during class will count as an absence for that day.

Laptop Policy

We will spend a good amount of class time working together on coding projects. During work time, computers will be used (lab machines or laptops). However, during a lecture, discussion or critique, laptops must be closed. No exceptions. Note-taking can be done on paper. Nothing kills a conversation like a room full of people staring at screens.

Academic Honesty, Plagiarism, and Open-Source

All projects are to be completed by you individually; there are no group assignments.

You are encouraged to help each other, but unless otherwise specified you must turn in your own work. Looking at existing code is a key part of the programming process — especially while learning. You often learn best by modifying working examples rather than starting from scratch. We stand on the shoulders of giants — that’s the essence of the open-source philosophy.

Copy/Paste makes it easy to use other’s code without fully understanding it. It is important when using example code that you take the time to read, study, and understand it. In many cases this process can be improved by retyping code.

In a professional environment, the best practice is often to reuse existing code as much as possible. When learning however, it is best to do as much as possible from scratch.

With that in mind, you may use limited amounts of existing code in your homework. However, there is a very important caveat: any code you borrow and/or modify must be labeled as such. That is, you must include, in your work, the name of the author, the source URL, and you must make clear which lines of code are not yours. If you fail to do this, you will fail the class. It is very, very easy to get this right, though, so if you take a moment’s time to label your work correctly, you will not have a problem. Just be diligent and honest.

Curriculum Continuity and Credit

This is the first semester I am teaching this class at Parsons. I will be basing the structure and content of this class on Rory Solomon’s section from last fall. Much of this syllabus, as well as weekly lecture notes and assignments will be adapted from his class. I suggest you visit the site for that class to see examples of past student work.