Schedule
Part 1: Deluge of (mostly) essential information
Day 0 (2015.9.28)
- Karl and Tim introduce themselves
- Introduction to the AlloSphere, the AlloSystem, and the course.
- Show previous class projects
- Student introductions
- Review syllabus
- Install the software for this course
- Assign Homework 0
- Brief AlloSphere tour/demo
Day 1 (2015.9.30)
- Review Homework 0
- Run this collect system information script and follow the instructions to mail the resulting file to Tim:
curl http://www.mat.ucsb.edu/fishuyo/collect_system_information.command | perl
- Install documentation tools
- Building and using the AlloCore documentation (doxygen)
- git clone the course materials repo (syllabus, starter code, lessons...)
- Building an interactive audiovisual program part 1
Day 2 (2015.10.05)
- Building an interactive audiovisual program part 2
- git clone your own personal submission repo and push a README file to it
- Assign Homework 1
Day 3 (2015.10.07)
- Building an interactive audiovisual program part 3
Day 4 (2015.10.12)
- Time is always sampled discretely in digital systems
- Representing position and velocity with vectors
- Physics
- By approximating physics with a finite time step in the "obvious" way we're
using the Euler method
- Anything else you need to know for Homework 1.
Day 5 (2015.10.14)
Day 6 (2015.10.19)
- Basics of reading and writing image and sound files
- Managing images on the GPU (textures and some basic ways of using them)
- What is a sound pixel?
- Sound metrics: energy (RMS), spectral centroid (brightness),
fundamental frequency estimation, onset detection, features
Day 7 (2015.10.21)
- build-up to homework 2, problem 1 starter code (noisy pixels)
Day 8 (2015.10.26)
A series of granular synthesis examples.
Day 9 (2015.10.28)
Day 10 (2015.11.02)
Catch-up
Interactive App Basics: Window, Input (QWERTY, OSC, GLV)
Part 2: Final projects focus and advanced topics
Topics to be scheduled:
- Optimization (Compiler flags, Inner loop...)
- Networking (Sockets, UDP/TCP, OSC...)
- Rendering full-surround video (e.g., in the AlloSphere)
- AlloSphere in detail: interactivity, video, and audio systems,
multi-user considerations, etc.
- Adapting (AlloSphere) content for installations, galleries, laptops,
web, mobile devices...
Parallel programming is a lot like revision control
- Simplest mechanism by far (none): only one line of development
(regular files on disk, single-reader/single-writer FIFO)
- Reserve resource in advance (RCS, thread locks/semaphores...)
- Concurrent editing: handle contention on write (CVS)
- Atomic (all or nothing) writes (SVN, OSC bundle semantics)
- Every working directory is a repo; embracing branches and merging
(Git, message passing)
Quaternions, Pose
Revision Control and Source Code Management
Object-Oriented Programming (OOP)
Several guest lectures to be scheduled:
- Pablo Colapinto: Geometric Algebra
- Karl Yerkes: Cuttlefish (display cluster)
Day 11 (2015.11.04)
Day 12 (2015.11.09)
- Code walk-thru and demonstration of an OSC example, using Max and Pure Data to control an al::App.
- Code walk-thru and demonstration of an al::AudioScene example.
HOLIDAY (2015.11.11)
Day 13 (2015.11.16)
Day 14 (2015.11.18)
Day 15 (2015.11.23)
Day 16 (2015.11.25)
Day 17 (2015.11.30)
Day 18 (2015.12.02) (Last official day of class)
Final project presentations Friday, December 11, 2-5pm