419/533: Advanced Digital: Sound Light & Interaction

This production course will introduce students to the concepts and practice  of programming 2D computer graphics using c++ , OpenGL and the GLUT libraries, and to a basic sound server. The major focus will be on creating procedural and interactive art experiences by programming both graphics and sound. The course has three goals: to demystify computer code - we get behind the Graphic User Interface to the machine below; to explore the potential of programming  - writing our own code means we can create customized computer tools as well as customized  visuals; and to teach the fundamentals of graphics programming.

Instructor: Josephine Anstey, jranstey@buffalo.edu

Office Hours: Thursday 9:00 - 10:00, 2:30 - 3:30

Where and When
CFA 242, TR 10:00 - 11:50

Assignments: Expect to spend at least 10 hours per week outside of class working on assignments and reading. There will be weekly assignments and a final project.

Attendance: If you are sick or unable to attend a class, email me before the class. More than 3 absences without explanation will impact your grade.

Assignments 60%, attendance and participation 10%, final 30%.
Plagiarism will result in a failing grade for that assignment or project.
Late assignments may be downgraded.


The OpenGL Programming Guide, Third Edition
Neider, Davis & Woo

Practical C++ Programming
Steve Oualline


The following course outline may be taken as a guideline only.  It is subject to revision and may include digressions and student driven subject matter.
Module 1: Background
Aug 27 Introductions. 
What is computer graphics? Some History.
Who are you?
Aug 29 Computer Artists
Syllabus and explication of this class
Lab rules, email etc. email test
Assignment1: bring and defend piece of computer graphics you are most impressed by, influenced by
Activate your ubunix email account 
Activate ubunix web account to show your presentation
Sept 3 Student Assignments
Sept 5 Student Assignments
Read "OpenGL programming guide", chapter 1
rendering pipeline etc
Module 2: Introduction to GLUT & Open GL. Abstraction & Procedure
Sept 10 Getting Accounts
Opening GLUT window in c++. Makefile. Basic OpenGL setup.
Coordinate system,  drawing and positioning simple 2D objects. primitives and vertices.
Adding Color
Sept 12 workshop & Assignment 2: 
Write program that opens widow & draws simple objects
Read "OpenGL programming guide", chapter 2, pp 27 - 52
Sept 17 Animation - basic translation, rotation, scaling of objects. 
Changing shapes and colors. Moving objects. Timing movement.
Sept 19 workshop & Assignment 3:
Write program that creates an abstract, moving design.
Thing about what's interesting and what's cliched in shape, color, movement.
Think about 60s pop - Target advertising.
Sept 24 Procedural Algorithms for moving and changing objects - moving a stick - making patterns - using arrays - using formulas - random numbers etc. (Ivan?)
Sept 26 workshop & Assignment 4:
Chaos, order, pattern - write a program that uses the algorithms you have learnt to play with these concepts - give it a mood (sinister, happy, intimidating etc.)
I'm away
Module 3: Interaction and Intersection
Oct 1 What is it, why? What value is added?
Mouse and keyboard interaction 
Oct 3 workshop & Assignment 5
Take assignment 3 or 4 and add mouse and/or keyboard interaction to construct control parameters for your abstraction
Oct 8 Mouse over, buttons, shooting
Collision and intersection detection
Oct 10  workshop & Assignment 6
Module 4: Sound & Texture - using classes written by others
Oct 15 More mouse and movement examples - Chris Galbraith
Oct 17 Hollywood lecture - no class
Oct 22 Adding sound to all your interactive stuff
Oct 24 Workshop & Assignment  - take existing assignment and add appropriate sounds
Oct 29 Textures - made oh so easy 
Oct 31 workshop & Assignment 
get familar with the gimp - import and export of files etc
Nov 5 SIGGRAPH video review day
Nov 7 workshop & Assignment 
make webpage presentation of final project idea
Module 5: Final Project
Nov 12 Transparent textures
Presentation of Final Project Plans
Nov 14 Presentation of Final Project Plans
Nov 19 Final Project Workshop
Nov 21 Final Project Workshop
Nov 26 Blending and Animating Texture - Bill Roeske
Nov 28 Thanksgiving recess
Dec 3 Final Presentation