Assignments

A few of the assignments, below, might be changed.

Assignments will be submitted on the "Assignments" link on CS171 2024 on Canvas. You may need to open this Canvas link in a new tab, say with middle click on some computers.

Or you may need to cut and paste the following Canvas link manually:

https://caltech.instructure.com/courses/7613/assignments

Use the "Home" link on Canvas to see the top Canvas view of the course, or click on the Syllabus.

Here are the Assignments:

  1. Assignment 0: Environment Setup and Intro. Due Wednesday week 2, 2024 at 3:00 PM
    This is a relatively straightforward assignment that introduces some utilities and common functions that you will need to use and write (respectively) for later assignments in the course. For the most part, this assignment requires only your prerequisite C/C++ knowledge and general programming experience. This assignment consists of four (short) parts plus an initial part where we ask you to set up your programming environment for the class:

    1. Set up your programming and OpenGL environments. See this page for installation instructions.
    2. Parse simple .obj files.
    3. Work with geometric transformations and the C++ matrix library, Eigen.
    4. Parse a file format that has both .obj data and transformation data.
    5. Output an image in the Portable Pixel Map (PPM) format.
    6. Due Wednesday week 2, 2024 at 3:00 PM

  1. Assignment 1: Graphics Pipeline - Wireframe Rendering

  2. Due Wednesday 3pm Week 3. This assignment has you implement the graphics pipeline for rendering 3D wireframe models as a C++ program that parses in scene descriptions from file input and outputs images of specified wireframe models in the scene.

    Lecture notes for this assignment can be found here. The assignment covers the following topics:

    Due Wednesday Week 3, 2024 at 3:00 PM

  1. Assignment 2: Graphics Pipeline - Shaded Surface Rendering

  2. Due Wednesday 3pm Week 4. This assignment has you implement the graphics pipeline for rendering 3D shaded surfaces as a C++ program that parses in scene descriptions from file input and outputs images of specified shaded surfaces in the scene.

    Lecture notes for this assignment can be found here. The assignment covers the following topics:

    Due Wednesday Week 4, 2024 at 3:00 PM

  1. Assignment 3: Intro. to OpenGL and the Arcball

  2. This assignment introduces you to OpenGL by having you recreate the 3D shaded surface renderer within an OpenGL context. You will also implement the Arcball mouse UI to allow user interaction with the rendered scenes.

    Lecture notes for this assignment can be found here. The assignment covers the following topics:

    Due Wednesday Week 5, 2024 at 3:00 PM

  1. Assignment 4: Intro. to GLSL and Texturing

  2. This assignment has you update your OpenGL renderer from Assignment 3 to include GLSL shaders and texturing.

    Lecture notes for this assignment can be found here. The assignment covers the following topics:

    Due Wednesday Week 7, 2024 at 3:00 PM

  1. Assignment 5: Intro. to Geometry Processing - The Discrete Laplacian and Implicit Fairing

  2. This assignment introduces you to various key concepts from the areas of geometry processing and discrete differential geometry by having you implement a technique for smoothing meshes known as implicit fairing.

    Lecture notes for this assignment can be found here. The assignment covers the following topics:

    Due Wednesday Week 8, 2024 at 3:00 PM

  1. Assignment 6: Intro. to Simulation and Animation - The Discrete Lagrangian and Splines

  2. This assignment introduces you to various key concepts from the areas of physical simulation and computer animation. In regards to simulation, the assignment has you derive symplectic integrators for three physical systems using ideas involving the Discrete Lagrangian. In regards to animation, the assignment has you write two programs that use splines to interpolate across given keyframes.

    Lecture notes for this assignment can be found here. The assignment covers the following topics:

    Due Wednesday week 9, 2024 at 3:00 PM

  3. Assignment 7: Intro. to Ray Tracing (Part 1 and Part 2)

  4. Part 1 is due Wed December 4, 2024, and Part 2 is due Friday December 11th, 2024. (Since the final grades are due a few days later, extensions beyond December 11 will not be feasible.)

    In this assignment, you will be introduced to the concept of ray tracing, a rendering method to handle different lighting aspects such as shadowing, reflections, and refraction. You will be filling in parts to a rendering pipeline that will be rendering implicit surfaces known as superquadrics.

    The assignment will require you to become familiar with a command-line tool we provide you, along with a small codebase that you will want to look through.

    FYI, there previously were two versions of the assignment. You should use the updated version, which had been called Version A. (The previous version, which we called Version B, has been removed.)

    Again, Part 1 is due Wednesday December 4th, 2024 and Part 2 is due Friday Dec 11th, 2024 (And no extensions on Part 2 - we need time to grade!)