| Time: | 10-11 MWF | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Place: | MEC 214 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Instructor: | David Luebke (Olsson #219), luebke@cs.virginia.edu
Office hours: By appointment |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Assistants: | Nate Hoobler, nsh3h@virginia.edu
Office hours: Tuesday/Thursday, 2:00p-3:30p |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | This course introduces techniques for 2D and 3D computer graphics, including
modeling and representation, illumination and shading, rendering, texturing, and
advanced software tools. The student will learn fundamental algorithms and
techniques and gain the knowledge necessary to understand and augment the latest
innovations in computer graphics. This course will not teach the use of graphic design software such as Maya or 3D Studio Max (though we may incorporate such software in an assignment), but rather the fundamental underpinnings of these programs. Students will learn and use the OpenGL graphics API, but again the focus of the course is on the underlying mechanisms of OpenGL rather than its sophisticated use. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| E-mail: | Send e-mail to the class or catch up on mail's you've missed on the class e-mail page. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Feedback: | Send the instructors anonymous feedback. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Grades: | Check your grades on toolkit. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Lab: | We have access to 13 machines in OLS 002a. These machines are modern
CPUs with modern graphics cards (NVIDIA GeForce3s), running Windows XP and
Linux. You can get a key to this room from Ginny Hilton at the CS front
desk if you don't currently have a key that works (many of you probably have
keys already). All assignments will use these machines as a base platform. If your assignment does not compile and run on these machines, using Visual Studio 7 (a.k.a. VS.NET) under Windows XP, then it will not be graded. If this happens, you will have to rework your assignment so that it does work on these machines, and take the corresponding late penalty. In other words, work at home at your own risk. Incidentally, you can download a (legitimate) copy of VS.NET for free. See me for details. We are sharing this lab with Prof Humphrey's Operating Systems course, so I will coordinate my assignments with his to avoid massive logjams in the lab. Nonetheless, availability of the lab machines will be an issue and you will find it easier and less stressful to complete your assignments on time if you start early. If you find availability is a real issue, don't fight about it; instead, let me know and Prof Humphrey and I will try to work something out. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Assignments: | There will be around five programming assignments in this course. All
assignments must be written in C or C++ using OpenGL and GLUT libraries. No
prior knowledge of OpenGL is required for this course, as you will learn it
during the semester.
Students registered for CS 445 will do the programming assignments in pairs. This is necessary to reduce the grading load (we have only one undergraduate teaching assistant) as well as the demand on lab machines (see above). Your source code will be read. Source code documentation and organization should make your programs easy to read and convey your understanding of the implemented functions. Poor documentation and programming style will result in a lower score. More detailed instructions regarding required documentation will be provided with each assignment. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Format: | Project-oriented, with multiple programming assignments. Two tests.
The graduate-level course CS 645 is being taught through the same lectures, but with slightly different requirements for the assignments. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Prerequisites: | Because the course requires heavy programming experience, a grade of C or
better in CS 216 is a prerequisite. Data structures (pointers, lists, and memory
allocation) will be used extensively.
We will make frequent use of geometry, basic linear algebra (vector and matrix arithmetic), and a bit of calculus. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Texts: |
OpenGL Programming Guide (slightly out of date, and of questionable copyright provenance, but useful nonetheless). |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Lectures: | A tentative schedule of lecture topics is given below. Lecture notes
from class will be posted here as the semester progresses.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Grading: | The final grade will be calculated as a weighted average:
"Instructor evaluation" is primarily influenced by participation and by peer evaluations on paired programming assignments throughout the semester. These measure how well you were able to work with others on your projects. Note that only CS 445 students do the assignments in pairs. "Participation" means coming to class, asking questions, taking part in discussions, not falling asleep, and so on. I also reserve the right to institute quizzes (announced or unannounced). |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Late Assignments: | Assignments are always due at the beginning of class. If an assignment
is not done at the beginning of class it is considered one day late. This
is to prevent people from skipping class to finish up the assignment.
Assignments not due on a class day are due at 11:59 PM of the due date. Assignments one day late subtract an additional 1 point; two days late loses 3 points. After 2 days the assignment will be considered a zero. However, each student has 5 late days to use at their own discretion over the course of the semester. Each late day extends the due date by 24 hours. If you submit an assignment after the due date, you must explicitly state the number of late days you wish to apply to the assignment. With this flexibility built into the late policy, no other excuses will be accepted without a note from the Dean's office. On paired assignments, each student can choose how many late days to use for the assignment. For example, for an assignment two days late, one student could use two late days for full credit, while the other could use just one for a 10% penalty. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Honor Code: | The honor code applies to all work turned in for this course. In particular,
all code and documentation should be entirely your own work. You may consult
with other students about high-level design strategies related to
programming assignments, but you many not copy code or use the structure or
organization of another students program. Said another way, you may talk with
one another about your programs, but you cannot ever look at another student's
code nor let another student look at your own code.
Of course, these policies do not apply to your partner in a paired assignments. |