Course Syllabus
Computer Graphics: Honors
CS 378H (52665)
Essential Information
Location: Twitch
|
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 TypeScript, in many cases using OpenGL. Your mastery of the mathematical fundamentals will be exercised through the programming assignments and the take-home 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.
- WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL (1st Edition). Kouichi Matsuda and Rodger Lea. ISBN 978-0321902924.
Many resources are available online for free, such as at webglfundamentals.org.
OpenGL has many, mutually-incompatible versions. In this class you will be programming using WebGL, which is based on OpenGL ES 2.0. WebGL is missing some of the deprecated features (such as the "fixed-function pipeline") that many old online tutorials rely on. It is also missing some of the newer features of desktop OpenGL (such as geometry shaders) described in the OpenGL Programming Guide (the "Red Book"). When looking for help online, please be aware of these incompatibilities and make sure you are looking at materials that specifically address WebGL or OpenGL ES.
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.
- Project Zero (10%): A gentle introduction to linear algebra programming using TypeScript.
- 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.
- Take-Home 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.
- 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.
New -- Updates due to February Winter Storm: The assignments and due dates have been updated to accommodate the 1.5 weeks of lost class due to the winter storm. In particular:
- Ray Tracer Milestone I and II are unmodified, but have had their deadlines adjusted. Milestone I is now due next Tuesday, March 2nd at 12:29 pm.
- Project Zero is canceled. You will receive automatic full credit for this project.
- The Menger Sponge and Mannequin projects will be redesigned and cut down to a single, extended 1.5-week milestone, rather than two 2-week milestones, and Menger Sponge has been moved to after Spring Break. Cut features from the projects will be available as extra credit.
If you have been unduly affected by the winter storm, and need extra accommodations, please don't hesitate to contact me and explain your situation.
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 take-home 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 JavaScript 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-browser-compatible as possible. We strongly urge you to test your code on recent versions of the latest browsers, e.g. Chrome and Firefox. 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 they cannot execute with reasonable effort.
Discord: The best way to get in touch with the instructor and TA outside of office hours is via the Discord server linked at the top of the syllabus. We will monitor the channels related to this class if you have questions about the programming assignments or class content. Join #office-hours during office hours if you would like interact help with your code.
Attendance: Lectures will take place live on Twitch during regularly-scheduled class hours. I will not monitor Twitch chat---to ask questions during lecture, please use the #lecture-questions channel on Discord. I strongly encourage you watch the lectures live and participate in discussion live on Discord, but I will not take attendance. Understand that lectures might extend, contextualize, or even contradict the course slides. Moreover your (virtual) attendance is required at the final project presentation, which will take place during this class's final exam period. If you do not attend the presentation, you will receive a zero, unless excused due to medical emergency or other serious extenuating circumstance. Wanting to start a summer internship early does not count as a serious extenuating circumstance.
FERPA: Discord is not FERPA-compliant---please do not post questions about grades or other FERPA-protected sensitive information on Discord, unless you wish to waive your FERPA protections. For FERPA-protected communication with me, you may use Canvas messages, or arrange for a private meeting with me over Zoom. To protect the privacy of your classmates, please do not distribute the Discord link to anybody who is not currently enrolled in the course. (Anybody is free to watch the Twitch lectures).
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 |
---|---|---|