CS4621 Computer Graphics Practicum

Cornell University

M 12:20pm - 1:10pm, Gates G01

Instructor: Steve Marschner

Staff

Graduate TAs

Joy Zhang (CS4621 head TA)

Schedule

Disclaimer: This schedule is tentative. It might be changed in the future.

Credit: The lecture notes are primarily written by former Pramook Khungurn, with additions by Eston Schweickart, as well as our current course staff.

Assignments

Check it out here.
Check it out here.

Final Project

You will be asked to create a complex application that shows off the material that you have learned throughout the practicum. You will work in groups of 3 to 5 people. The application is left fairly open-ended, but we will provide ideas and feedback to guide you.

More details about the final project are available here.

About CS 4621

According to the Cornell Class Roster, the course description of CS 4621 reads:

Provides CS 4620 students with hands-on experience in computer graphics programming on modern graphics hardware. A semester-long project involves building a substantial interactive 3D system. The course uses Java and OpenGL for code development.

The description is mostly accurate. However, the course this semester is using somewhat different tools so a more precise version is:

Provides CS 4620 students with hands-on experience in computer graphics programming on modern graphics hardware. A semester-long half-semester-long project involves building a substantial interactive 3D computer graphics system. The course uses Java and OpenGL Javascript and WebGL for code development.

While Java is a practical language for graphics programming, we believe that creating graphics systems for the web with Javascript and WebGL is a skill with a much wider audience because of the ease of deployment and the importance of mobile devices.

Accordingly, the practicum is divided into two halves. In the first half (the first 7 weeks or so), we will use the class time to teach you how to use WebGL to create interactive graphics applications. There will be individual programming assignments to get you familiarized with the API. In the second half, you and a number of teammates will plan and execute a final project, which is a substantive computer graphics system written using Javascript and WebGL. The system can be 3D, but it does not have to be.

One aim of the course is to give you experience with software engineering. You should come out of the course having designed and implemented computer graphics systems by yourself with minimal help from framework code implemented by other people. You may discover that this can be a tedious and error-prone process. A competent software engineer, though, must be able to create abstractions that reduce tedium and error. In order to provide you with opportunities to grow as a software engineer, we will organize the assigments and the final project as follows:

  1. For all assigments, we will not give you any framework or starter code. You have to code your submission from scratch. However, you may learn from example code that we provide in lectures.
  2. For your final project, you are not allowed to use any libraries or frameworks that implement computer-graphics-related aspects of your project. This means that you cannot use any 2D or 3D graphics/game engines as a component of your project. Generic Javascript libraries are generally OK, but please consult with the course staff on what libraries you want to use.

With all that said, we have hope you have fun with the course!