Instructor: Daniel G. Aliaga (firstname.lastname@example.org, www.cs.purdue.edu/homes/aliaga)
Time: MWF @ 1:30-2:20pm
Office hours: by appointment (LWSN 3177)
TA: Gen Nishida, email@example.com
TA Office Hours: T/Th 2-3pm (LWSN 3151)
Interested in computer graphics? Does modeling objects interest you? Do you like rendering photorealistic imagery? Is doing animations fun to you? All this is part of computer graphics. This course teaches the fundamentals, at a graduate school level, for such activities and research projects. Major applications include:
Film Special Effects
Scientific and Information Visualization
Students are required to have previous C/C++ programming experience and are recommended to have previous computer graphics experience, such as OpenGL programming experience (although OpenGL will be reviewed at the beginning of the semester).
2. Course work
The course work is composed of programming assignments, exams, and interactive class participation. The programming assignments consist of a warm-up assignment, two minor programming assignments, one homework, and a final project. The exams consist of a midterm and a final exam. Class participation will consist of active participation during class (you be called upon) and a final-project background research review to your classmates. Course work will be easier to manage if you keep a constant pace through the semester. This course is hard work but you will learn a lot and have fun!
Programming Assignments: 25% (assignments 0-3: 1%, 6%, 8%, 10%)
30% (final assignment)
Class Participation: 15% (10% final-project-review, 5% active participation)
Exams: 10% (midterm)
4. Tentative Lecture Schedule
August 27 Vector Math, 2D Transformations
August 29 3D Transformations and Perspective Projection
Special TA office hours: Tue Sept 2, 10-3pm
September 1 Labor Day (no classes)
September 3 Cameras and Projections: Standard Cameras
September 5 Cameras and Projections: Omnidirectional Cameras
Assignment #0 due
Camera Calibration and Graphics Pipeline
September 8 Camera Models
September 10 Camera Calibration
September 12 Graphics Pipeline (xform, shade, rasterize)
Texture Mapping and GPU Programming
September 15 GPU programming
September 17 GPU programming: Physically Based Simulations
September 19 GPU programming: Physically Based Simulations
Assignment #1 due
Surfaces and Triangulation
September 22 Voronoi Diagrams and Delaunay Triangulation
September 24 Curves
September 26 Surface Triangulation
Spatial Hierarchies and Visibility
September 29 -- Spatial Hierarchies
October 1 Visibility and Culling
October 3 TBD
Assignment #2 due
October 6 Review
October 8 Midterm
October 10 Going over exam
October 13 No Classes (Fall Break)
October 15 Final Projection Explanation
October 17 Procedural modeling: plants
Procedural Modeling and Ray Tracing
October 22 -- Procedural modeling contd;
October 24 Ray-tracing
October 27 In-depth presentations I
October 29 In-depth presentations II
October 31 In-depth presentations III
November 5 Ambient Occlusion
November 7 BRDFs and Example-based shading
November 10 Colors: perception and models
November 12 Colors: perception and models
November 14 Colors: calibration
Assignment #3 due
Images and Computer Vision
November 17 Images: morphing and warping
November 19 Images: resizing synthesis
November 21 Deep Learning and Vision (guest lecture)
November 24 TBD
November 26 Thanksgiving
November 28 Thanksgiving
December 1 Demo Setup/How-to-give-a-demo lecture
December 3 - TBD
December 5 Demo Day!
December 8 Review for final
December 10 TBA
December 12 TBA
Final Exam see university schedule
You may use CS lab computers or home computers. Assignments must be written in C/C++ on a Windows computer. Assignments are due before class time on the due date and must be sent to the course TA using Blackboard including all source code, data files, and an already compiled program. The time-stamp will be used to verify on time submission. The grading for the assignment will consider functionality and form. All assignments must be polished products, with a well designed user interface and clean, reliable functionality. A program that does not compile obtains 0 points.
Assignment #0 Warm up (1 week). The objective is to get a small graphics project working. You can either use (i) OpenGL+GLUT+GLUI or (ii) OpenGL+Qt to implement a simple screen-saver style program. The program will open up a window, display a GUI to choose screen-saver options, and draw a simple 2D screen saver in the main window. If you are already well versed in Windows GUI programming, you may use that instead but only upon approval by the instructor.
Assignment #1 Linear Algebra (2 weeks). The objective is to ensure you understand well camera models and perspective projection. The logic will be described in class and in the assignment. You can use OpenGL matrix stack to do the linear algebra or implement your own necessary math libraries.
Assignment #2 GPU Programming (2 weeks). The objective is to write a program to implement GPU programming for environment mapping or another TBD topic. We will provide a skeleton program but you will have to use OpenGL shading language (GLSL) and CPU code to produce the effect.
Assignment #3 Written Homework on Advanced Topics (1 week). This objective is a written exam-like homework on some of the relatively more advanced topics.
Final Project (7 weeks). Projects will be presented on a publicly attended demo day at the end of the semester (last day of classes, details TBD based on enrollment). You may choose a project that builds upon suggested ones or you may provide a written proposal for an independent project. Team projects (of up to 2 students) are permitted. Grading: the final assignment must be a polished product, with a well designed user interface and clean, reliable functionality.
6. In-Class Presentation (and Class Participation)
At the beginning of the final project time period, each project (individual or group), will give a short GRADED presentation about a background literature search of their proposed project. The presentation should include mostly a summary of the state of the art and a short preview of what your project will do. Also, in general students will be called upon during class to explain concepts and solve problems (sometimes in small teams).
The midterm will cover material explained in class, stressing fundamentals. The final exam will cover material of the entire semester and will stress understanding of general interactive computer graphics and its fundamentals. Both are closed book and will require understanding and imagination rather than memorization of formulas. A qual exam will be offered after the final exam.
8. Administrative Issues
Assignments are due before class on due date. First time late no penalty for up to one week, but instructor must be notified via email BEFORE deadline (if instructor not notified via email before assignment due date, late pass cannot be used and assignment will be late). Second and subsequent times -- grade reduction of 33% per day. All assignments required by demo day at end of course or failing grade will be issued.
All assignments, exams, and review presentations must be done individually. Final projects may be done in teams upon approval by the instructor. Copying or plagiarism will give you a failing grade in the course and you will be subject to departmental and University policies. Code obtained from the Internet, books, or other sources may *not* be used for any assignment/project. Exceptions allowed only under explicit instructor approval.