CIS 441/541, Introduction to Computer Graphics
Time: Tuesdays and Thursday 10:00-11:20|
Location: 208 Deady Hall
Instructor: Hank Childs
Hank's Office Hours: Thursday 1130-1230, Friday 1130-1230
OH Location: 301 Deschutes Hall
GTF (Roscoe Casita) Office Hours: Monday 1-2, Tuesday 1-2, Wednesday 1-3
GTF OH Location: Deschutes Lounge (1st floor)
This is a projects-driven class.
The projects will help you learn
the theory of computer graphics, but they will also help you become better programmers,
and provide you with experiences, anecdotes, and images that will impress potential employers. (In terms of explicit learning outcomes, you will implement a significant software system, you will demonstrate proficiency in computer graphics theory, and you will demonstrate proficiency in practical computer graphics usage.)
The grading is designed to make sure you are keeping up with the assignments. Staying
on top of the projects will be critical to succeeding in this class.
The projects in this class will be hard work.
It is difficult to quote exactly how much time,
since there is variation in background and programming skill.
I expect those who have less developed programming skills will find this class to
be a considerable effort, but also that they will have significant improvement
by the end of the course.
- Project 1: 30 points
- Project 1A: Install and run example program (2 points)
- Project 1B: Rasterize screen-space triangles (6 points)
- Project 1C: Rasterize screen-space triangles part 2 (3 points)
- Project 1D: Overlapping triangles and color (5 points)
- Project 1E: Add world-space-to-camera-space transforms (8 points)
- Project 1F: Add Phong shading (6 points)
- Project 2: 15 points
- Project 2A: Basic graphics program (8 points)
- Project 2B: Advanced graphics program (7 points)
- Project G (grad students only): 15 points
- Details will be determined by negotiation during Week 1.
- Midterm: 25 points
- Note: the midterm may be switched depending on how fast we move.
- Project 3 Proposal: 0 points
- Project 3 (due Monday March 18, 8am): student-defined projects (30 points)
- The expected score for a solid project is 25 points out of 30.
Each piece of Project 1 will build on itself, so do a good job.
Also, under no circumstance will I hand out solutions to the one of sub-projects to assist those who fall behind.
Note: the denominator for 441 is 100, and for 541 is 115.
Projects 1A-1F, 2A, and 2B will be submitted to Canvas and graded by me or the TA.
I would rather have correct work late than incorrect work on time.
In almost all circumstances, producing
the correct picture will result in full credit.
Projects that do not produce the correct pictures will get less than half credit, even if the cause is a minor error.
The final projects will be demonstrated in front of the whole class on the day of the Final. Since we have such a large class, we may need to be creative on how to do this (i.e., multiple rounds with subsets of us, culminating in a finale during the Finals period).
All projects are individual projects. Copying code from other students is cheating.
However, I highly
encourage you to discuss your roadblocks with each other and
lean on each other to figure out solutions to your problems. I have set up a forum on Piazza.
I encourage you all to monitor and respond to the forum, and
I may award extra credit to
students who are particularly helpful on the forum.
The amount of extra credit will vary based on involvement, and would result in a 1/3rd grade boost (e.g., B to B+).
- For Project 1, I will provide some test configurations. I will also
provide the correct images and share them with you. If your program
produces the correct images, you are very likely to receive full credit.
- For Project 2, the grading criteria will be defined once the project
- For Project 3, you will be evaluated on the results of your project,
including how ambitious your undertaking is. We will jointly establish
if you are embarking on a project where you will be able to earn the full
30 points when we discuss your Final Project Proposal.
You have 2 "late passes." Late passes allow you to turn in your project
(specifically a sub-project, i.e., project 1A) two days after the due date for full credit.
You may also use two late passes on one assignment and get a four day extension.
For example, you submit a project that was due on a Wednesday on Friday (i.e., two days later) and get full credit if you use one late pass.
If you run out of late passes, then you may continue to earn half credit on any project up until we take the Final. Once we get to the Final (Monday March 18th at 8am), I will no longer accept homeworks.
Note that projects will initially be marked as late and scored half credit.
At the end of the term, you will tell me which projects you want to apply
your late passes to, and the scores for those projects will be increased.
There is no need to indicate your desire to use a late pass as you submit;
I find it often changes as the term goes on.
If you miss the Final exam period, you may present your project afterwards for half-credit. Exceptions for full credit will be granted in appropriate situations. These situations include medical emergencies, etc, and do not include oversleeping, forgetting the day of the final, etc.
I expect you to attend class every day. I recommend you find a friend (or make
a friend) and ask them to fill you in if you missed a class.
Explicitly: if we change deadlines, project grade weights, etc., I do not view
it as my job to relay this information to those who aren't in class.
(Although I frequently will relay it anyway.)
Aside from that, it is up to you on whether you miss class.
For those who have legitimate reasons for missing class, I will,
of course, be happy to work with you to get you up to speed.
The lectures will be based around preparing you for the projects. We will
discuss rasterization, camera transformations, and shading during
the first part of the class. The middle part will focus on practical
matters for using graphics systems.
The final part of the course will present quick overviews of topics
in graphics I think you should be exposed to. The breakdown of these three
parts can be loosely inferred from the projects.
- The programming projects are individual efforts
- You may discuss the projects with your classmates.
- Do not let someone look at your code on your screen.
- Absolutely, positively do not email code.
- Do not search the internet for previous implementations.
- If I detect collusion, all individuals involved will receive
an F in the course immediately
- I choose to not enumerate cases that involve collusion. Having a conversation without showing code is as far as you should go. Whiteboard conversations are fine. If you feel you are in a gray area, then you should email me.
- Please note that if you are the one providing too much help, then you will also get an F
from the first day of class.
Unfortunately, I will be on travel quite a bit this quarter. I will
communicate the plan for these absences as we go.
- Lecture 1, Jan 8th: intro/syllabus/proj 1A
- Online Lecture A, Jan 9th: images
- Slides for this lecture are the three slides on images from Lecture 1
- Lecture 2, Jan 10th: scanline algorithm/proj 1B
- Lecture 3, Jan 15th: proj 1C/interpolation/colors/z-buffer
- Lecture 4, Jan 22nd: interpolation/colors/z-buffer/proj 1D
- Online Lecture B, Jan 22nd: LERPing
- Lecture 5, Jan 24th: transformations / matrices
- Lecture 6, Jan 29th, transformations pt. 2
- Lecture 7, Jan 31st, shading
- Lecture 8, Feb 5th, beginning OpenGL
- Lecture 9, Feb 7th, OpenGL Overview
- Lectures 10 and 11, Feb 19th and 21st, light and matrices in GL
- Lecture 11, Feb 21st, matrices in GL
- Lecture 12 (SNOW!!), Feb 26th, ray tracing and model generation
- Lecture 13 (SNOW!!), Feb 28th, (more) ray tracing and Project G interviews
- Lecture 14, March 7th, kitchen sink
- Lecture 15, March 12th, shaders
Email: hank at uoregon.edu
Phone: (541) 346-3414 (terrible way to get in touch with me!)
Fax: (541) 346-5373
301 Deschutes Hall
1202 University of Oregon
Eugene, OR 97403-1212 USA