Course Syllabus
Computer Graphics: Honors
CS 378H (50705)
Essential Information
Location: Zoom link
|
The Force Awakens © The Walt Disney Company |
Course Summary: This is an accelerated introductory course on the major topics in the areas of image synthesis, interactive techniques, geometric modeling, and computer-based animation. The material covered includes
- OpenGL and shader programming;
- principles of operation of raster graphics systems;
- sampling and antialiasing;
- homogeneous coordinate transformation techniques;
- parallel and central projection and perspective transformations;
- hidden surface removal;
- light and reflectance models for local and global illumination;
- shading techniques;
- ray tracing;
- basic object modeling techniques;
- visual perception and basic color theory;
- parameterization and texturing;
- basic animation.
Upon course completion, you should have mastered both the mathematical principles of these techniques and their implementation. Implementation of these techniques will be demonstrated through a series of programming assignments in C++, in many cases using OpenGL. Your mastery of the mathematical fundamentals will be exercised through the programming assignments and the in-class midterm.
Prerequisites: (The following courses with a grade of at least C-: [ CS429 || CS310 || CS429H || CS310H ] && [ M340L || SDS329C ] ) || (permission of instructor).
Required Textbooks: None, but see below.
Optional Textbooks:
- Interactive Computer Graphics: A Top-Down Approach with WebGL (7th Edition). Edward Angel and Dave Shreiner. ISBN 978-0133574845.
- Mathematics for 3D Game Programming and Computer Graphics, Third Edition. Eric Lengyel. ISBN 978-1435458864.
- OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3 (8th Edition). Dave Shreiner, Graham Sellers, John Kessenich, and Bill Licea-Kane. ISBN 978-0321773036.
The OpenGL Programming Guide (the "Red Book") is optional, but highly recommended, as it is the go-to reference for OpenGL and shader programming. While all of the material in the book needed for this course can also be found in online references, OpenGL has many, mutually-incompatible versions and reference guides for version 4.3 specifically can be hard to find.
Course lectures will give you a bird's-eye view of important graphics concepts, and a foothold for finding more detailed information. Course slides do not contain sufficient detail to completely replace traditional textbooks. I assume you will either purchase optional textbooks, or research the materials you need yourself online.
Assignments and Grading: The course includes five programming projects; the final grade for the course will be computed based on performance on these projects, an in-class midterm, and one written assignment. There will be no final exam. Your final grade will include pluses and minuses. The five projects and final grade breakdowns are:
- Linear Algebra Worksheet (5%): This short written assignment will refresh your knowledge of linear algebra, and serves as a self-assessment of your preparation to tackle the course material.
- Ray Tracer (20%): The classic Computer Graphics project. You will implement ray tracing "by hand," and accelerate it using a hierarchical spatial data structure. This project is the only one that will not use OpenGL.
- Menger Sponge (15%): In this project, you will write a program to generate the Menger Sponge, a typical example of a fractal. In addition, you will implement camera controls that allow the user to pan, rotate, and zoom around 3D space.
- In-class Midterm (15%): Covers all material from the lectures and assignments preceding the midterm, except for the "Color and Perception" lecture.
- Virtual Mannequin (15%): In this project, you will build a rigged model of a mannequin, allowing you to animate the mannequin by manipulating its bones. You will implement a simple scene editor that allows the user to place keyframes encoding an animation of the mannequin. You will also compute a parameterization of the mannequin geometry, and use it to texture map and shade the mannequin.
- Minecraft (10%): This project has been canceled. You will receive automatic full credit for it.
- Final Project (20%): For the final project, you have free reign to show off the skills you have learned in the course: you might implement one of the topics discussed in lectures that's not covered by the projects above, or substantially expand one of your existing applications, or research and implement an algorithm not covered in class at all.
Please see the schedule below for the due dates of the assignments and the date of the midterm.
Due Dates, Lateness, and Late Days: Each programming assignment is due by 12:29 PM (before class) on the dates listed in the schedule below. Each project specification will include details for how to submit that project. For every day that a milestone is turned in late, rounded up to the nearest day, one letter grade (10%) will be deducted from the total milestone grade.
Sometimes unforeseen events disrupt the best-laid plans: an assignment turns out to take a lot more time than you expected, you have to spend a lot of time studying for an exam in a different course, you need to travel to an interview, etc. Some leniency has therefore been built into the above policy: each student begins the semester with six late days. Six times during the semester when a student would lose 10% per the above policy, one late day can be used instead to avoid the penalty. Please plan ahead: other than the six late days, no exceptions will be made to the lateness policy, except in the case of documented medical emergency or as mandated by university policy. Plan ahead!
Examples: An assignment is due on Friday, and Alice turns in the assignment at 12:31 PM; Bob turns it in at 9:00 PM; and Charles at 4:00 PM on Saturday. Alice and Bob will both be charged a late day, or if they have no late days remaining, will lose 10% of the project grade. Charles will lose two late days, or one late day and 10%, or 20%, depending on how many late days he has remaining.
The instructor/TA will keep track of your late days remaining, and will allocate them to your late assignments in the way most beneficial to you (i.e. to the most highly-weighted assignments first) at the end of the semester. Until the end of the semester, your Canvas grades will reflect the worst-case scenario where no late days are used on any assignments.
Warning: the projects in this class are complex and difficult, and will require multiple days worth of programming effort even for the brightest students. Exercise good time management and plan ahead!!
Some late day FAQs:
- How are late days handled if I work together with another student on a team? Late days and late penalties are tracked and assessed per-person. If a team submits an assignment late, both team members will be charged late days.
- Can I use late days for the in-class midterm? No.
- Can I use late days for the final project? The final project has several components. Code and a write-up is due on the last day of class, and you will present your project on the class final exam day. Late days may be used to turn in your code/write-up late but may not be used on the in-class presentation.
- Can I use late days for X, where (X != the midterm) && (X != the final exam presentation)? Yes.
- I turned in an assignment late, but want to save my late days for later. How should I tell you not to apply a late day to the current assignment? You don't need to. We will run a script at the end of the semester that assigns late days in the way that maximizes your final course grade.
Formal Collaboration: You are allowed (but not required) to work on each assignment in self-selected (and self-managed) teams of two. If you work in a team, you must submit, with each assignment, an individual collaboration report stating, from your perspective, how much and which parts of the project each student contributed to. Discrepancies will be investigated by the instructor, and credit for the project will be distributed in proportion to each student's contribution.
Informal Collaboration and Academic Honesty: You are allowed, and encouraged, to discuss the projects with your classmates, to work together on understanding the theory and math involved in the projects, to help each other debug, etc. You may also use Internet resources like Stackoverflow to get help on the math and theory, or to ask generic questions about C++ or OpenGL. That said, the code submitted by each team must be their own, except for a) "starter code" provided by the instructor, and b) external libraries explicitly approved by the instructor.
If in doubt, please contact the instructor. Violations of this policy will be reported to Student Judicial Services.
Grading: All code submitted for class projects should be as cross-platform as possible, and should compile using the CMake build system when invoked in a similar manner as in the starter code. Do not include system header files like windows.h, use compiler language extensions, refer to files using absolute paths on your hard drive, etc. You are strongly encouraged to SSH into a CS lab machine and verify that your code compiles there before turning your code in; however, the TA will make a good-faith effort to fix minor problems with your submission due to differences in platform and compiler toolchain. It is your responsibility to coordinate with the TA and assist them with getting your code to compile and run, and the TA reserves the right to penalize submissions that cannot be compiled cross-platform with reasonable effort.
Piazza: The best way to get in touch with the instructor and TA outside of office hours is via the Piazza page linked at the top of the syllabus. Important announcements and clarifications about the assignments will also be posted to Piazza, so please create an account and check in regularly.
Attendance: Attendance is strongly encouraged, but not required. Understand that lectures might extend, contextualize, or even contradict the course slides. Moreover your attendance is required at the in-class midterm (see schedule below) and the final project presentation, which will take place during this class's final exam period. If you do not attend the midterm or presentation, you will receive a zero on these items, except for medical emergency or other serious extenuating circumstances that you discuss with me in advance. Wanting to start a summer internship early does not count as a serious extenuating circumstance.
Zoom and FERPA: The online lectures will be recorded and posted to Canvas for your convenience. If you connect to the meeting with audio and/or video, your participation will also be recorded. To opt out, you may disable transmission of audio and/or video during the meetings. To protect the privacy of your classmates, please do not distribute the course lectures to anybody who is not currently enrolled in the course.
Students with Disabilities: The University of Texas at Austin provides upon request appropriate academic adjustments for qualified students with disabilities. For more information, contact the Office of the Dean of Students at 471-6259.
Inclusion and Diversity: The College of Natural Science is dedicated to ensuring a climate conducive to learning in all of its classrooms. Please be thoughtful and considerate in your interactions with your fellow students, both in person and on the class Piazza; bias, harassment, and discrimination will not be tolerated. You may report any incidents or concerns to me or the Campus Climate Response Team. Note that I am by law a mandatory reporter for issues related to Title IX.
Some Final Advice: Writing working graphics code is very rewarding, but also challenging and at times frustrating. To get the most out of this course,
- Start Early: Yes, every professor in every computer science class has told you the same thing. Graphics code can be particularly tricky to debug, since it's not always immediately obvious whether or not code is correct, or whether a bug is due to wrong code or wrong math. By starting early, you have plenty of time to fix things if they go wrong.
- Get Help: Double-check your math formulas with your classmates; take advantage of the opportunity to work in teams; come to office hours for help deriving formulas, finding bugs, or even just to check whether you're on the right track.
Schedule: A tentative schedule of lecture topics is listed below.
Course Summary:
Date | Details | Due |
---|---|---|