CS4621 Computer Graphics Practicum

Cornell University

F 3:35pm - 4:50pm, Phillips Hall 101

Instructor: Steve Marschner

Staff

Graduate TAs

Eston Schweickart (CS4621 head TA, ers@cs.cornell.edu)

Schedule

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

Assignments

Check it out here.
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 staff would like to try something more ambitious, so CS 4621 is really about:

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.

The reasons for the above changes are as follows:

  1. In order to build a substantial interactive computer graphics system, students need to learn at least the first half of CS 4620. Requiring them to start at the beginning of the semester, when they actually cannot really start yet, does not make sense.
  2. While Java is still a practical language for graphics programming, the staff believes that creating graphics systems for the web with Javascript and WebGL is a skill with a much wider audience because the ease of deployment and the spread of mobile devices.

Accordingly, the practicum is divided into two halves. In the first half (the first 7 weeks or so), we will give lectures on 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 implements 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!