A continuation of the introduction to computer programming begun in CS 105. The use of programming, in conjunction with libraries, as a means of solving practical problems in art, design, and data processing. Basic text processing, manipulation of images and sound, handling and visualization of tabular and hierarchical data. Introductions to user interfaces, physical simulation, and object-oriented programming.
The goal of CS 106 is to apply programming idioms in a practical context, using functionality available in built-in functions, libraries that come shipped with Processing, and libraries that can be added on to it. Topics include input/output, user interface programming, physics and animation, procedural content generation, object-oriented programming, and text and structured data processing.
Lectures include multiple clicker questions for participation and the guage learning.
There are almost weekly labs (typically 10) to practice programming concepts.
There are almost weekly individual programming assignments (typically 10).
A 110-minute midterm exam and a 150-minute final exam.
Typical Breakdown
Note you must pass the weighted exam portion to pass the course.
There are 3 hours of scheduled lab time each week to work on labs and assignments and get individual help from lab instructors.
Usual Textbook: Daniel Shiffman's Learning Processing, second edition.
1 |
Processing recapA review of programming concepts from CS 105, in terms of the basic structure of the Processing language: types, declarations, expressions, statements, and functions. |
2 |
Input and outputLoading files in various formats (text, images, illustrations) into Processing, writing files. |
3 |
User interfacesThe model-view-controller architecture. Direct manipulation interfaces. User interface toolkits. The ControlP5 library in Processing. |
4 |
Physics and animationThe basic principles of naturalistic physical motion through Newton’s laws of motion. Inertia, acceleration, drag, collisions. The Fisica library for rigid body dynamics in Processing. |
5 |
Geometric contextThe use of translate(), rotate(), and scale() to modify a program’s coordinate system. Building a hierarchy of transformations using pushMatrix() and popMatrix(). Order of operations. |
6 |
3D GraphicsBasic APIs for loading and displaying 3D models in Processing. |
7 |
Image processingQuerying individual pixels. Simple colour manipulation. Filtering. Halftoning. Using webcams as a source of input. |
8 |
Text processingDecomposing text into tokens. Regular expressions. Unicode. Working with dates and times. |
9 |
Structured data processingDealing with table-structured (CSV) and tree-structured (XML) data. Processing live data acquired from web APIs (JSON). |