This page does not represent the most current semester of this course; it is present merely as an archive.
A syllabus is just a list of words they don’t know yet.—Seth Reichelson
At the end of this course you will be able to do two broad classes of things: first, you will learn to write algorithms that create images from models; second, you will learn to effectively understand the capabilities, limitations and vocabulary that underly common graphical libraries. In addition to these two core classes of learning objectives we will explore a few more specialized topics, some of which you will be able to select.
In part because of the ability you will have to influence course topics, this document is very much open to being adjusted as the semester progresses.
The pain of parting is nothing to the joy of meeting again.—Charles Dickens
Lecture is optional but strongly encouraged. Tuesday and Thursday, 9:30–10:45, in Thorton E316.
There is no lab or discussion session. I do not schedule review sessions or the like outside of usual class time.
Some college cell, Where muzzing quizzes mutter monkish schemes.—William Roberts
You will be asked to write and turn in four or five programs:
a basic 2D rasterizer
a basic 3D rasterizer
a basic raytracer
a basic WebGL program
an additional program based on the latter part of the course
Additionally, quizzes will be administered online frequently, and there will be a final quiz administered in-person.
I heard a sound; I turned around; I turned around to face the thing that made the sound.—They Might Be Giants
Instructor | TAs | |
---|---|---|
Name | Luther Tychonievich | Jonh Fultz, Kamran Kowsari, and Jay Sebastian |
Location | Rice 208 | see main page |
Office Hours | see main page | see main page |
Phone | 243-3789 | (none) |
tychonievich@virginia.edu | use Piazza |
For most communication, Piazza is prefered to email. If you email, include 4810
in the subject line to prevent your email from skipping my inbox and never getting read.
When you read books your eyeballs wither away leaving the bare sockets—Yang Wanli
Reading materials will be selected from various web pages, articles, and a the like. There is no course textbook. Readings may be roughly categorized into two kinds.
Conceptual readings will provide background and understanding of course concepts, including both how algorithms work at a high level and why they are designed as they are. Conceptual readings are important to the course, should be read prior to class meetings, and may be used as the source material for quizzes. I anticipate conceptual readings will occupy in the neighborhood of 2 hours per week, varying by individual and by week.
Reference readings are more applied how-to
kinds of material that I believe will assist you in completing the coding assignments.
If you really want to understand something, the best way is to try and explain it to someone else. That forces you to sort it out in your own mind. And the more slow and dim-witted your pupil, the more you have to break things down into more and more simple ideas. And that’s really the essence of programming. By the time you’ve sorted out a complicated idea into little steps that even a stupid machine can deal with, you’ve certainly learned something about it yourself.—Douglas Adams
Most assignments will be supported in any language you chose to use. In the past I have supported C++, C#, Python, Java, and D. You may switch languages as often as you wish. Last time I taught this almost all students ended up using either Python and D by the last assignment. If you want another language added, let me know.
One assignment is (planned to be) in WebGL using Javascript and GLSL. Assuming that plan does not change, we’ll have a tutorial on the necessary bits of those languages in class prior to the assignment.
Estimating how long it will take someone to complete a coding assignment is always difficult. The target difficulty is 5–10 hours of focused effort each week.
I find that I go up and down, and back and forth as well;
I move so freely left and right, it seems quite dull to tell.
I also can move later; I move hours every day;
But moving former stumps me hard; I cannot find a way.
Of eight directions on the test, I fear that I’ve missed one;
And eighty-se’en percent is just a B, which is not fun.
I think I’m good at motion; I’m a farily agile bloke;
Perhaps the standard grading scale is just a nasty joke.–Luther Tychonievich
Grading is one of the aspects of a course that instructors enjoy even less than students. Still, we are stuck with them, so here goes.
Task | Weight | Comments |
---|---|---|
Quizzes | 25% | Acceptance of late submissions and/or dropping some scores will be implemented |
Assignments | 50% | Approximately 10% each, but you’ll have some point flexibility between them. Extra credit in assignments will not transfer over to quizzes or final. |
Final Quiz | 25% | The intent is to make this a (slightly reworded) selection from mid-semester quizzes’ questions |
Your final grade is computed based on the percentage of points you have earned and is designed to match the GPA value of each letter. For reasons I do not understand, that is not a linear scale: for example, A-
− B+
= 0.4 grade points while B+
− B
= 0.3 grade points. For reasons even farther from my ken, the most common grading scale I have seen is also not linear but differently spaced than the grade points. Following is a scale spaced like the grade point scale:
You get | if you score | Which is worth |
---|---|---|
A+ | near the top | 4.0 |
A | ≥ 93% | 4.0 |
A− | ≥ 90% | 3.7 |
B+ | ≥ 86% | 3.3 |
B | ≥ 83% | 3.0 |
B− | ≥ 80% | 2.7 |
C+ | ≥ 76% | 2.3 |
C | ≥ 73% | 2.0 |
C− | ≥ 70% | 1.7 |
D+ | ≥ 66% | 1.3 |
D | ≥ 63% | 1.0 |
D− | ≥ 60% | 0.7 |
F | otherwise | 0.0 |
I do not round grades. 92.99999919% is not ≥ 93% and is thus an A−, not an A.
I do not curve grades: if you all fail, you all fail; if you all ace, you all ace. However, rubrics for assignments are not linear: instead, I determine how well I expect a passing student to perform and assign a per-assignment rubric to match.
If I believe you have cheated, I may apply an arbitrarily harsh grade penalty up to and including an F in the course. This penalty is independent of (and potentially in addition to) any findings of the University Honor System.
It is cheating to give or take code from another. This does not depend on the medium: digitally, visually, or audibly, it is the same. It also does not depend on the source: unsanctioned collaboration, web search, paid tutor, it is the same. Looking at another’s code to debug it or the like is still looking at it, and not appropriate.
Official course staff who are on the clock may give or take code freely, and you may accept what they give without dishonesty.
It is permitted to share non-task-specific code, such as examples of lambdas in Javascript or the like; however, the contents of these codes should not be too close to the assignment content.
It is good citizenship to share ideas; keep them at the broad outline and picture level and everyone wins.
The line between sharing ideas and sharing code can be fuzzy. However, another line is not: plagarism. If you found any help in any source, note that in comments in your code.
You do not need to note TA or professor help unless it was extensive and specific.
If you qualify for accommodations under LNEC or SDAC, please let me know, preferably in my office where we can discuss how your accommodations will interplay with the quiz- and assignment-based nature of this course.
I care very little when each student finishes each assignment. However, I find that a significant subset of students have difficulty prioritizing early work without a grade incentive. I also find that grading is easier when most students finish an assignment at the same time. I thus intend to deduct a few percent for late submissions and add a few for significantly early submissions.
Quizzes, on the other hand, will have hard deadlines. If you miss them, you miss them.
Bad things happen. People forget things and make mistakes. Bad days coincide with due dates. Etc.
If you believe that circumstances warrant an change in deadline, a second chance, or some other accommodation in order to more accurately synchronize grade with knowledge, come talk to me and we’ll make it happen.