Daniel Shiffman is a Assistant Arts Professor at ITP (Interactive Telecommunications Program). Below is a list of some of the courses that he has taught.
This class is dedicated to experimenting with interactivity on large-scale screens. Students will develop one project over the course of the semester, culminating with a showing at InterActiveCorps’ 120 X 12-foot video wall at their corporate headquarters on 18th and the West Side Highway. A mock-up of the system will be available at ITP for testing. Class time will be divided between independent project development, critique, technical demonstrations, and field trips to IAC. Group projects are encouraged and students should be comfortable programming in Java and Processing.
The Nature of Code
Can we capture the unpredictable evolutionary and emergent properties of nature in software? Can understanding the mathematical principles behind our physical world world help us to create digital worlds? This class will focus on the programming strategies and techniques behind computer simulations of natural systems. We’ll explore topics ranging from basic mathematics and physics concepts to more advanced simulations of complex systems. Subjects covered will include forces, trigonometry, fractals, cellular automata, self-organization, and genetic algorithms. Examples will be demonstrated using the processing (http://www.processing.org) environment with a focus on object oriented programming.
Introduction to Computational Media
What can computation add to human communication? Creating computer applications, instead of just using them, will give you a deeper understanding of the essential possibilities of computation. The course focuses on the fundamentals of programming the computer (variables, conditionals, iteration, functions, and objects) and then touches on some more advanced techniques such as text parsing, image processing, networking, computer vision, and 3D graphics. The Java-based 'Processing' programming environment is the primary vehicle for the class. The course is designed for computer programming novices. Although experienced coders can waive this class, some programmers use ICM to acclimatize to the ITP approach and for the opportunity play further with their project ideas. Weekly assignments are required throughout semester. The end of the semester is spent developing an idea for a final project and implementing it using computer programming.
- 2013 Syllabus
- Class github
- Video Lessons
- Learning Processing book
- Learning Processing examples
- Old class syllabi
Programming from A to Z (2007, 2008)
There are 16,000 free books in the Project Gutenberg digital catalog. Google print is scanning millions. With all this digitized text, what can we do with it beyond simply search and browse? This course will focus on programming strategies and techniques behind procedural analysis and generation of text. We’ll explore topics ranging from evaluating text according to its statistical properties to the automated production of text via artificial intelligence. Student will be encouraged to develop their own systems and methods, from poetry machines to intelligent spiders to evolutionary language generators, etc. Examples will be demonstrated using Java and Processing with a focus on advanced data structures (linked lists, hash tables, binary trees) associated with storing and manipulating text. Prerequisite: H79.2233 Introduction to Computational Media or equivalent programming experience.
Procedural Painting (2004)
This introductory level course covers the basics of computer programming within the context of images, drawing and responsive visual forms. The first few weeks will focus on basic programming concepts: variables, arrays, conditional statements, and iteration. The second-half of the course will cover more advanced topics, such as recursion, 3D transformations, and image processing. Processing will be used as the primary development environment for the class.
- Class Web Site (very out of date!)