A syllabus is just a list of words they don’t know yet.
—Seth Reichelson

1 Course objectives

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 and animations from models; second, you will learn to effectively understand the capabilities, limitations and vocabulary that underlie common graphical libraries. In addition to these two core classes of learning objectives we will explore a few more specialized topics.

2 Logistics

2.1 Meetings

The pain of parting is nothing to the joy of meeting again.
—Charles Dickens

It is expected that this class will be in-person in Olsson 011. Lectures will be recorded, but some in-class demonstrations will not make it into those recordings. While I do not grade attendance or participation, experience suggests that presence and attention in class is strongly correlated with grade.

There is no lab or discussion session. I do not schedule review sessions or the like outside of usual class time.

2.2 Tasks

Some college cell, Where muzzing quizzes mutter monkish schemes.
—William Roberts

You will be asked to write and turn in five programs:

  1. a basic 2D rasterizer

  2. a basic 3D rasterizer

  3. a basic raytracer

  4. a animation extending 2 above

  5. either an image manipulation tool or a simulation tool (which one TBD)

Additionally, quizzes will be administered online weekly. There will be a final quiz, which will be administered in-person during the university-scheduled final exam period.

2.3 Contact

I heard a sound; I turned around; I turned around to face the thing that made the sound.
—They Might Be Giants
Course forums

Online forum: Discord (see join link on Collab)
In-person forum: TBD

All course-material questions should be directed to the course forums. Personal matters should be directed to the instructor directly.

Most announcements will be delivered in lecture and/or in the online forum. Only specially urgent notifications will be sent over email.

Instructor

Luther Tychonievich
Rice 208
tychonievich@virginia.edu
434-243-3789

All course-material questions should be directed to the course forums, not email.

If you email, please include 4810 in the subject line. I get so many emails each day that those that are not obviously related to one of my classes may not be read very quickly.

TAs

Clara, Gustavo, James, and Quinn

The TAs are also students with their own coursework, etc. Please be respectful and only contact them about this course in ways and at times that are listed on this site.

Office Hours

2.4 Kind of help provided

Everyone knows that computers are very big, powerful, sadistic, and highly dangerous.
—Harry Harrison

Because we allow many programming languages, and because this is a 4000-level elective course in CS, we assume you are able to handle your own coding and we do not plan to offer coding-level assistance. We will help you understand algorithms and might be able to advise matters of code organization, but you should be able to debug your own implementation errors.

2.5 Readings

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 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.

2.6 Coding

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++, C#, D, Dart, Go, Haskell, Java, Kotlin, Python, Rust, and Scala. You may switch languages as often as you wish. If you want another language added, let me know.

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, in addition to other course duties approximating 2.5 hours of class, 1 hour of reading, and 1 hour of quizzing per week. This is in keeping with PROV-022 which suggests 3cr ≥ 135 hours of work and also notes that this policy establishes a minimum standard that does not restrict faculty from assigning a greater amount of academic work per credit. In the past, some students have suggested that they are accustomed to giving less than this minimum standard in other classes and that they had to adapt to this course meeting that standard.

3 Grading

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 20% Open book, administered online. Late submissions are not accepted, but we’ll drop your lowest score.
Assignments, required part 30% 6% each
Assignments, optional parts 30% Considered as a whole: you can get them all on a few assignments or spread them out. Extra credit will carry over to other categories at 4% weight.
Final Quiz 20% Closed, book, administered in-person, with questions selected from the quizzes given this semester.

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.

4 Miscellanea

4.1 Late submissions

Quiz deadlines are hard deadlines as I wish to release the key and discuss the answers in the subsequent class session. If you have a reason why you cannot take a quiz or expect not to be able to perform well on it, please let me know before the quiz closes and I’ll excuse the quiz for you.

Homework deadlines are adjustable on a case-by-case basis. The deadlines are in place primarily to keep you from falling behind and to help course staff focus on helping with one assignment at a time. If there is any reason why a published deadline is not good for you (including I had another deadline that day or I did poorly when graded and want to re-submit a fixed version), let me know why and we’ll work together to find a new target deadline that will keep you on track.

4.2 Absence and Illness

Class attendance is only required during the final quiz. If you have a reason not to be there then, please let me know as soon as you know and we’ll seek alternative accommodations.

Class attendance is encouraged for all healthy students. Please do not attend class if you are ill with anything contagious (COVID or otherwise).

4.3 Professionalism

Behave professionally.

Never abuse anyone, including the emotional abuse of blaming others for your mistakes. Kindness is more important than correctness.

Let our TAs be students when they are not on the clock as TAs.

4.4 Honesty

We always hope everyone will behave honestly. We know we all are tempted to do what we ought not; if you do something you regret, the sooner you tell us the sooner (and more leniently) we can correct it.

4.4.1 No plagiarism (nor anything like it)

If you consult resources other than course material in the performance of any course assessment (including quizzes and homeworks), you must cite any and every source you consult in the comments of the quiz question or program file. Talked to a friend, saw an interesting video, consulted a website, had a tutor? Tell us!

4.4.2 Obey collaboration limitations

Quizzes may not be done in groups or in consultation with any resource that did not exist prior to the quiz being posted.

Code must be written on your own. Do not show or read your code to anyone other than course staff. Do not seek out or view others’ code, in or out of the class.

Remember: we don’t care about your code or quizzes in and of themselves; we know the answers and have reference implementations already. What we care about is the changes that occur in your mind as you work on them. Don’t cheat yourself out of the gains these assessments are designed to provide.

4.4.3 Consequences of Dishonesty

If we believe you have acted dishonestly, we will communicate this fact to you and propose a penalty. If you have information we lack, please share that with us; we may thereafter change our belief and/or proposed penalty.

If we are not able to come to an agreement, or if the case is particularly egregious and beyond our comfort level handling in-course, we will instead refer the case to the University Honor System and abide by their findings.

4.5 Personal accommodations

4.5.1 Disability

If you qualify for accommodations from the SDAC, please let your professor know, preferably in a private conversation so we can discuss how your accommodations will interplay with the content delivery and assessment structure of this course.

4.5.2 Religious observances

We fully support the university’s stance on accommodating religious observances. If such observances or other religious beliefs impact or are likely to impact your work this semester, please let us know as soon as you are aware of this impact.

4.5.3 Culture

All communication relies on shared context and understanding. Because no member of our course staff has the same context and experience as you, it is likely we will inadvertently say and do things you find confusing or offensive. Please let us know if this happens! We will do our best to learn and adjust so we can become better and more welcoming communicators in the future, and to do what we can to fix any problems our mistakes caused.

4.5.4 Life

Bad things happen. People forget things and make mistakes. Bad days coincide with due dates. Students and their loved ones get sick. 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, talk to your professor and we’ll resolve the situation as best we can.