Syllabus for Spring 2021 CIS 441/541
Expectations
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.
Course Materials
- I find the Ed Angel book to be very valuable, but it is not required and students who comprehend the lectures will not need it.
- We will also use the graphics notes from Ken Joy.
Grading
- 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
- The nature of Project 2 is TBD at this time. If we can find a viable way to do graphics programming with the GPU, then we will. Otherwise, we may need to do another project.
- Project G (grad students only): 15 points
- Details will be determined by negotiation during Week 1.
- Quizzes: 25 points (approximately 5 quizzes worth approximately 5 points each)
- Project 3 Proposal: 0 points
- Project 3 (due Tuesday June 8, 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 the TA or myself.
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. I want everyone to attend (whether or not you did a custom final project), and will deduct 4 points from your grade if you skip.
Working Together
All projects are individual projects. Copying code from other students is cheating.
However, I encourage you to discuss your roadblocks with each other and
lean on each other to figure out solutions to your problems.
I will set up a forum for having a class exchange.
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+).
Evaluation Criteria
- 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
is defined.
- 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.
Late Policy
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 (Tuesday June 8th 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.
Class Attendance
I expect you to attend class every day, or watch the video of class.
I will announce quizzes at least one lecture early (no pop quizzes). Quizzes occur during a fixed time period in class and cannot be made up. That said, I will accommodate people in appropriate situations. These situations include medical emergencies, etc., and do not include oversleeping, forgetting the day of the quiz, etc.
Course Lectures
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 Project 2.
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.
Academic Misconduct
- 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
Form from the first day of class.