This course provides a broad introduction to the mathematical and programmatic foundations of computer graphics, including modeling, rendering (drawing), and animating three-dimensional scenes. Topics include digital image representation, two- and three-dimensional shape representations (e.g. parametric curves and surfaces, meshes, subdivision surfaces), geometrical transformations (e.g. rotations, scales, translations, and perspective projection), rigging and skinning, the rasterization pipeline, ray tracing, illumination and shading models, texturing, and light & visual perception. Coursework typically includes a mix of programming assignments, quizzes/hand-written work, assigned readings, and a final project. Knowledge of basic linear algebra and programming skills are assumed.
- CS 50
- CS 11 (or MATH 22 or 24)
- or instructor's permission
Students will need to be comfortable with concepts from linear algebra, algorithms and data structures.
MWF, 11:30 – 12:35 pm, Carson 60
Tu, 12:15 – 1:05 pm, Carson 60
Tu/Th, 3:00 - 3:50, 156 Sudikoff
Zack: Wed 2-3pm, Fri 10-11am, @ tables near Sudi 163
Themis: Tu 5-6 pm, Fri 4-5pm @ Sudi 251
Lectures & Coursework
The required textbook for the class is Fundamentals of Computer Graphics, by Shirley and Marschner, 3rd edition or newer. You can buy the physical book at your favorite bookstore, or you can access the digital version (from Dartmouth IP addresses) here. There will be required reading from this book each week to supplement the material discussed in lecture. The reading you should do before coming to lecture will be listed on the corresponding lecture event in the Calendar.
In the second half of the term you will write a basic ray tracer. Once you start working on these assignments, the mini "Ray tracing in one weekend" e-book by Peter Shirley forms a great companion to the more formal writing of our class textbook. I highly recommend getting this book and reading it. It is a quick read and will help you complete your assignments.
In the reading listings on the calendar, we will refer to these books as the "Tiger book" and the "RTIOW e-book".
The tentative grading scheme will be:
- 45%: Programming assignments
- 30%: Quizzes
- 15%: Final project
- 10%: Participation/engagement
Graduate & Extra Credit
Grads and undergrads enrolled in the class will be graded separately and we will generally grade grads more strictly. Additionally, the programming assignments will typically include extra portions that will be required for students enrolled in the graduate version (CS 177) and may count as extra credit for those enrolled as undergrad (CS 77). We will grade these separately and grant extra credit only if the foundation of the original assignment has been completed correctly (e.g., at least 90% of the original requirements/grade are met). Extra credit will not exceed 20% of the overall grade.
At the end of the course, extra credit will not be added directly to your score. Instead, we will consider your extra credit to potentially round your grade more favorably when discretizing to letter grades.
Submission Deadlines & Grading
You will turn in their code through Canvas, and each assignment will have a strict deadline. We will strive to post programming assignment grades on Canvas within roughly two weeks of the due date. Some assignments will build off of each other, so you do not want to fall behind!
- (any portion of) 1 hour late: max 90%
- max 75% for any portion of 1 day late thereafter
- max 25% for any portion of 2 days late thereafter
- no credit for more than 2 days late
Exception to this rule might be made for special cases only if you inform the professor well (e.g. >1 week, not a couple days) before the deadline in writing, or in the case of a medical emergency, and at the professor’s sole discretion.
It’s up to you to check that assignments have been successfully submitted to Canvas; if there are any problems, you must notify course staff by email immediately (not weeks later, claiming “Canvas ate it”).
We will be using Piazza for class discussion.
To set up Piazza, first log on to Canvas. This should take you to the Canvas page for this class, but if not, select it from the “Courses” dropdown. Then, click on “Piazza” on the left side and register using your full @dartmouth.edu email address and a unique password (don’t re-use your Dartmouth NetID password!).
If you have registered with Canvas using your full @dartmouth.edu address before, then your account should already be properly set up. If you registered using a different email, you’ll need to add your @dartmouth.edu address to your Piazza account settings for it to link properly with Canvas.
E-mail the course staff for Piazza access if you are auditing or yet to register.
Piazza is the place for you to ask questions and get help. This allows your classmates to benefit from seeing the question and subsequent instructor response. We encourage you to contribute answers to other people’s threads, or initiate open-ended discussions on topics relevant to the class.
Working together & Academic integrity
In short: You are welcome and encouraged to chat about assignments with other students in general terms, but code must be written on your own.
I assume the work you hand in is your own, and the results you hand in are generated by your program. You’re welcome to read whatever you want to learn what you need to complete the work, but I do expect you to build your own implementations of the methods we are studying.
If you’re ever in doubt, just include a citation in your code and report indicating where some idea came from, whether it be a classmate, a website, another piece of software, or anything—this always maintains your honesty, whether the source was used in a good way or not. The same basic principle applies to your presentations. Any material you reuse from outside sources must be properly attributed.
The example scenarios below (adapted from Tom Cormen's discussion of the honor principle) should give you a more concrete idea of what is and is not acceptable.
Students with disabilities who may need disability-related academic adjustments and services for this course should see me privately within the first week of class. Students requiring disability-related academic adjustments and services must consult the Student Accessibility Services office (Carson Hall, Suite 125, 646-9900). Once SAS has authorized services, students must show the originally signed SAS Services and Consent Form and/or a letter on SAS letterhead to me. As a first step, if you have questions about whether you qualify to receive academic adjustments and services, you should contact the SAS office. All inquiries and discussions will remain confidential.
The academic environment at Dartmouth is challenging, our terms are intensive, and classes are not the only demanding part of your life. There are a number of resources available to you on campus to support your wellness, including your undergraduate dean, the Student Wellness Center, and Counseling and Human Development.
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.