How the Class Works (Course Rhythm)

Overview

This semester, CS559 will be taught in an in-person manner.

The class is divided into 2-week modules. We will have 7 (there are 14 weeks in the semester). The pattern for the class is based around these 2-week modules.

The core of the class will be a set of Workbooks - collections of web pages that serve as reading material, demonstrations, and assignments. There is one workbook per module.

There will be videos, but these will be connected to the workbooks. More about this at Types of Videos below.

The Workbooks

You will then clone this workbook to your own computer, and start working on it. The workbook is a set of web pages, so you work on it by starting a local web server in the root directory of the workbook.

If you’re using the recommended tools (Visual Studio Code), you open the workbook folder, press the show preview, and it will start a web server and point your browser at it.

The “work” of the workbooks includes reading the text (it is the primary text for the class), filling in form elements (type-ins), experimenting with demos, and editing/writing the programs. The programs you write are on small web pages embedded into “boxes” on the workbook pages. This will all be explained in the first workbook.

The idea of the workbooks is that they explicitly bring together the tutorial aspects of class (reading and demos) with the programming aspects (things you write). The reading assignments will be given in the workbooks. This means the text of the workbook web pages, but also the source code of the workbooks, and other documents that the workbooks point you to. Reading the code in the workbooks and experimenting with demos will often be an explicit part of the assignments.

Almost all of the programming you do in class will be in the workbooks. You will fill in parts of the workbook with code as directed. Workbooks will give you framework code for bigger assignments, and help with the mechanics since we’ll make sure the files are in the right place, and since it will all be tracked with GIT, this makes it easy to turn it in (in theory), and protects you against messing things up (providing you use GIT correctly).

Part of the idea of the workbook is that reading the code for examples should be an active part of class. For many things we really want you to look at how we do things.

As you work on the workbook, you should make checkpoints. These let us know that you are making progress, but it also helps protect you if something goes wrong. For the web forms (type-ins), we have a button that writes the contents to a server. For the programs (the boxes), you use Git to commit your work (important if something goes wrong) and push it to GitLab (which serves as a backup, and a hand-in mechanism).

When you are done with the workbook, you should commit and push your work, and press the submit button which makes a special checkpoint that signals us that your assignment is ready to grade. If you don’t submit correctly, we cannot grade your workbook.

The Course Rhythm

The class has a weekly pattern, but the real rhythm is a 2-week pattern repeated for each module. (see FAQ - The Whys? (Why the 2 week cadence (modules), rather than weekly?))

  • Sundays: Workbooks are due.
  • Tuesdays and Thursdays: Lectures with in-class activities on either or both days.

Types of Videos

Note: The videos are made by Professor Michael Gleicher.

The goal for this class was to have a set of short videos that complement the workbooks. (see FAQ - The Whys? (Why are videos made into small chunks and placed inside the workbooks?)). Unfortunately, we may not have the time to produce a complete set of new videos, so we will need to repurpose some videos from older classes.

I will recommend videos from other classes or internet resources. These are generally really high-quality presentations of the material. They present things in a different way than I like to present it - but they should complement class material well.

Some videos will be presented on Canvas in the Kaltura Gallery (we call these video surveys). You can access them through the links in the workbook: it will give you the context of why you want to watch the video, and provide it to you “just in time” when you need it.

So what/where are the videos?

  • Module Introduction Videos: these will be videos in the Kaltura Gallery that you can watch before you start the Workbooks. They should cover the same materials and discussions as the lectures.
  • Workbook Complement Videos: these are short videos designed to help within the workbooks, usually to show things that are difficult to describe. You can also find them on Canvas directly (not recommended).
  • 2023 Lecture Video Clips: In 2023, I made video lectures for this class. These were lecture videos (75-minute chunks), not “complement” videos. However, the lectures are pretty good, especially if you just watch the piece of them related to the part of the workbook you are working on. I will provide links scattered throughout the workbooks. If you want to watch entire lectures (or even binge-watch an entire semester of lectures), you can see the outline at CS559 Spring 2023 Videos.
  • Graphics in 5 Minutes Videos: Prof. Steve Seitz at the University of Washington produced a sequence of 5-minute “cartoons” that explain graphics concepts. The idea is similar to our class: replace lectures with short, high-quality videos. You can read about the project Graphics in 5 Minutes. The videos are really good, but they don’t always align with our class. I’ll put links to specific ones into workbooks where they are appropriate.

Types of In-Class Activities

We will use a variety of interactive in-class activities throughout the semester.

Unlike traditional quizzes or surveys, these activities ask you to create graphics, animations, behaviors, and simulations that are displayed in a shared virtual environment. The goal is to explore graphics concepts through experimentation, visualization, and collaboration.

These activities are part of the learning experience. They are designed to help you apply the ideas from lectures and programming assignments in a visual and interactive setting. Some activities are individual, while others involve coordination with classmates.

We will have many activities of different kinds, including:

  • 2D Drawing and Animation Activities - Early in the semester, you will create simple drawings and animations using the HTML Canvas. Examples may include snowmen, bouncing balls, solar systems, or other animated scenes. These creations will be displayed together in a shared virtual environment, allowing the class to compare different solutions.

  • Crowd, Flocking, and Emergent Behavior Activities - Implement rules that control the behavior of autonomous agents. By combining many student-created agents, we can explore steering behaviors, neighbor interactions, synchronization, flocking, and other examples of emergent behavior that arise from simple local rules.

  • Curve and Spline Activities - Design paths using Bezier curves and splines. These activities help illustrate interpolation, animation, path design, and motion along curves.

  • Object Design Activities - Create and animate simple 3D objects using geometry, materials, transformations, and hierarchical modeling. Your creations may appear alongside those of your classmates in a shared virtual world.

  • Character Animation Activities - Create and animate articulated characters using hierarchical transformations. Activities may include posing, dancing, walking, procedural locomotion, or other forms of character animation.

  • Texture and Appearance Activities - Create textures, procedural patterns, surface details, or shaders to explore how appearance influences a rendered scene.

  • Collaborative Construction Activities - Work as part of a group to build a larger object or environment. Each student contributes a piece, and the pieces are assembled into a combined result such as a character, creature, building, city, or other shared scene.

  • Procedural Noise and Terrain Activities - Later in the semester, we will explore procedural generation using noise functions and related techniques. Activities may include generating terrain, landscapes, textures, clouds, planets, or other natural-looking structures from compact procedural descriptions.

  • Particle Systems and Visual Effects Activities - Create particle-based visual effects such as fire, smoke, sparks, explosions, fountains, magic effects, or weather phenomena. These activities explore particle systems, sprites, procedural motion, lifetimes, color and transparency, and techniques for creating complex visual effects from large numbers of simple elements.

Many activities are intended to be exploratory rather than competitive. The goal is to experiment with ideas, compare different approaches, and observe the results. Some activities may include optional challenges, voting, or comparisons between different solutions.

In-class activities are part of the learning experience. They provide opportunities to see graphics concepts in action, learn from the work of classmates, and gain intuition for topics that are often difficult to understand from text or code alone. Even simple activities can reveal interesting behaviors when many students’ contributions are combined into a shared scene.