Assignments

Some of the assignments, below, are still being changed.

Assignments will be submitted on the "Assignments" link on CS171 2021 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/3404/assignments

Use the "Home" link on Canvas to see the top Canvas view of the course.

Here are the Assignments:

  1. Assignment 0: Environment Setup and Intro. Due Wednesday Oct. 7, 2020 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 Oct. 7, 2020 at 3:00 PM

  1. Assignment 1: Graphics Pipeline - Wireframe Rendering

  2. 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 Oct. 14, 2020 at 3:00 PM

  1. Assignment 2: Graphics Pipeline - Shaded Surface Rendering

  2. 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 Oct. 21, 2020 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 Oct. 28, 2020 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 Nov. 4, 2020 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 Nov. 18, 2020 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 Nov. 25, 2020 at 3:00 PM

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

  4. Part 1 is due Wed November 30th 2022, and Part 2 is due Friday December 9th, 2022. (Since the final grades are due a few days later, extensions beyond December 9 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 November 30th, 2022 and Part 2 is due Friday Dec 9th, 2022 (And no extensions on Part 2 - we need time to grade!)