Skip to main content
  1. Teaching/

CS 324E is a course on computer graphics intended for non-major students. The course uses Processing, a Java-based language, as a starting point to explore various topics in computer graphics, including, but not limited to:

  • image manipulation
  • transformation hierarchies
  • motion and sprite-based animation
  • shading and lighting
  • simulation of various systems, such as
    • particle systems
    • flocking
    • cellular automata

In addition, the class has an emphasis on using inheritance-based object-oriented programming to simplify the behavior of code, and students learn to program in the event-driven asynchronous global state-machine style which is common to graphics applications, but is relatively alien in the rest of the CS curriculum.

This course is primarily managed on Canvas. However, since I believe in making course materials available, I am making the class materials and assignments available here. Since some of these are HTML that is recovered from Canvas, the formatting may be slightly wrong.

Class Syllabus

Class Slides
#

For reasons that are unclear to me, the slides for class 14 simply do not work correctly as a PDF (perhaps an export problem from reveal.js) so I have linked their source in the online editor that I use. The rest of these slides are presented as PDFs.

Class Programs
#

These are programs that were either written in-class as a demonstration, or meant as examples for students who were interested in certain topics.

applyKernelTo

A program which demonstrates applying a kernel to a specific pixel of an image, but correctly (the version in the lecture was originally flawed).

Beep Beep

A program which demonstrates the power of transformations, by moving various objects within other objects’ coordinate systems.

Bezier Demo

A GPT-written program which visualizes the control points of a Bezier curve, making it easier to understand how the control points work.

Collisions

A program which somewhat-physically-correctly handles collisions using impulse-based forces. Explicit Euler integration makes it somewhat unstable.

drawCellularGrid

A snippet which was used for the CA Hands-On activity. This made it much easier to visualize a grid of cells without having to resort to pixel-sized cells.

Materials Demo

A demonstration of how materials and lighting interact in Processing.

Overload Demo

A Processing program which draws a bunch of boxes in 3D. Was used to demonstrate that Processing can be fairly efficient in drawing lots of 3D geometry, even when you’d think it shouldn’t be.

Also demonstrates the use of an edge-based key detection system which allows the program to register multiple keypresses simultaneously.

Spring

A simple program demonstrating a box on a spring in 2D.

Textures Demo

Demonstrating texturing a quad, box, and sphere.

3D Demo

Shows how to display various 3D geometry in Processing.

Assignments
#