Assignments

Some of the assignments are still being changed.

Assignments will be submitted on 2019 CS171 on Moodle ... You may need to open the previous Moodle link in a new tab, or cut and paste the following link https://courses.caltech.edu/course/view.php?id=3537

Please enroll yourself with the Moodle enrollment key given in class.

  1. Assignment 0: Environment Setup and Intro. Due Wednesday Oct. 9, 2019 at 3:00 PM

  2. This is a relatively straightforward assignment that introduces some utilities and common functions that you will use and write (respectively) for the 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.

    Due Wednesday Oct. 9, 2019 at 3:00 PM

  3. Assignment 1: Graphics Pipeline - Wireframe Rendering

  4. 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. 16, 2019 at 3:00 PM

  5. Assignment 2: Graphics Pipeline - Shaded Surface Rendering

  6. 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. 23, 2019 at 3:00 PM

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

  8. 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. 30, 2019 at 3:00 PM

  9. Assignment 4: Intro. to GLSL and Texturing

  10. 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. 6, 2019 at 3:00 PM

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

  12. 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. 20, 2019 at 3:00 PM

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

  14. 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. 27, 2019 at 3:00 PM

  15. Assignment 7: Intro. to Ray Tracing

  16. In this assignment, you will be introduced to the concenpt of ray tracing, a rendering standard 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 get familiar with a command-line tool we provide you along with a small codebase that you will want to look through. Along with the tools we provide, we also provide a framework README to help you understand what is happening here

    Lecture notes for this assignment can be found here.

    Due Wednesday Dec 4th and Due Wednesday Dec 11th, 2019 at 3:00 PM (No extensions on Part 2 - we need time to grade)