This brief syllabus has the basic info. Really the course web is the syllabus, and most topics here are discussed in more detail somewhere (links provided from this document – although this document is written first, so that the links may appear later).

Basic Info

Lectures: Tuesdays and Thursdays, 5:30-6:45, Humanities 2340 (Mills Hall) and online via live-streaming or (asynchronously) via recordings of the in-person lectures, accessible through Canvas.

Instructor: Eftychios Sifakis, Office 6387 Computer Sciences. For class-related email, please use the email address This will reach both the instructor and the TA. Note: The preferred mode of communication is via Piazza. Please use email only when really necessary.

Instructor Office hours: Professor Sifakis will hold office hours between 7:15-8:00pm on Tuesdays and Thursdays (shortly after the end of the lectures; questions will not be taken in-class after the conclusion of the in-person lecture, in an effort to vacate the auditorium in a timely fashion). regular office hours will be 4:00pm – 4:45pm on Mondays (Room 6387).

TA: Kedar Bastakoti, Wiley Corning, Nils Palumbo, Ruohui Wang. The best way to contact them outside of office hours will be via Piazza, but if you absolutely need to use email, please use the “common” TA email instead of their individual university email addresses.

TA Office hours (tentative; more to be added as needed): Monday 2:00pm-2:45pm (Corning), Tuesday 11:00am-11:45am (Palumbo), Wednesday 2:00pm-2:45pm (Corning), Friday 11:00am-11:45am (Palumbo)

Office hours virtual meeting link: Please see the information on this Piazza Post (link not given in the public website to avoid unsolicited participants).

Piazza discussion page: We will use Piazza for online discussion between students (and the instructor/TA). The Piazza site for our class is found here. (the signup link is here). Piazza will be our primary communication mechanism! You are strongly encouraged to post any questions (even if addressed to the TA/instructor) on Piazza, if there is any chance that your colleagues might be able to help with an answer and/or if other students are likely to benefit from the answer. The instructor and TA will be strongly motivated to more promptly answer questions posted on Piazza, rather than individually communicated through the class email.

Pre-requisites: (MATH 222 or MATH 276) and (COMP SCI 367 or 400) or graduate/professional standing or declared in the Capstone Certificate in Computer Sciences for Professionals

Announcements and course management: We will use Canvas as a course management system. This will be the primary mechanisms for turning in assignments, however the course web and the class Piazza Page will be the primary mechanisms for staff to make announcements.

Email/Communication policy: We will do our best to respond in a timely fashion (within 24-48 hours) to questions posted by Piazza (or email). Please be prepared, however, for the possibility of an answer to an email question taking longer – in the worst case, you might only receive an answer at a time closer to the next upcoming class lecture.

Exams: There will be a mandatory final exam in the University scheduled time slot. There will be an evening mid-term exam on Friday October 30 at 7:15pm. It will be very difficult to change exam times. If you cannot make an exam slot, please contact the Professor well in advance.

Books: The textbooks will be made available online. See the books posting.

Computing Environment: All assignments will be run in a web browser. You may use Chrome or Firefox. You will have the ability to tell us if your program has only been tested on one or the other.

Many of the assignments will work better if you use a computer with graphics hardware (a dedicated GPU), however, almost any reasonably recent and decent computer will do. The CSL Windows labs are equipped with computers meant for graphics work.

Learning Objectives: Students have an understanding of the key ideas of Computer Graphics, and are able to apply them in programming projects. See the discussion of Key Ideas and Learning Goals.

Tentative list of topics

  • Basic concepts, coordinate systems, pixels
  • Linear Algebra, Transforms in 2D and 3D, Hierarchy
  • Drawing in 3D: Projection, Viewing, Visibility
  • Graphics Hardware, Shaders, WebGL/OpenGL
  • Lighting
  • Texturing
  • Interactive graphics tricks
  • Shape Representation: Meshes, Curves, Surfaces
  • Color and Perception
  • Image Processing and Computational Photography
  • Realistic Rendering and Ray Tracing

Course Components

  • Reading assignments for the class will include online lectures (recorded in-person, and available online through Canvas), and occasional reading assignments from one of the textbooks used in this course (materials will be distributed via Canvas)
  • There will be regular (typically weekly) programming assignments (throughout the duration of the class, except for the exam week and Thanksgiving). Generally, these will be small, although some of them will be grouped together and constitute pieces of a more significant project. See the Grading section below for an explanation of how your programming assignments are to be graded. The programming assignments are the most crucial contributor to your class grade.
  • For some programming assignments, there will be “optional” parts. You can only get credit for the optional parts after doing the basic parts. Credit for these parts raises your grade.
  • There are no explicit “projects” this semester – however, sequences of assignments will build on one another and turn into bigger things.
  • There will be a midterm and a final exam.


The different components of the class are all important: to get a good grade you must perform adequately in all of them. That being said, your performance in the programming assignments provides a baseline, on which the exams act on as modifiers that can either boost or lower your grade. The following notes explain what “adequate performance” implies on each of the evaluation methods used in class.

Programming assignments are graded, on Canvas, on a numerical scale from 0-4. Here is how you should interpret these scores.

  • A numerical grade of “3” is what we consider “Satisfactory”. Every programming assignment will explain what you need to do to get a Check – if you fulfill all these requirements you will be awarded a numerical score of 3 or higher (depending on how many extras you have also included). This is a good score, which we expect most of the students to be awarded every week. As explained later, scoring “3”s or better on all programming assignments, in combination with doing “decent” on exams will guarantee you at least a “B” grade in class.
  • A numerical grade of “4” is what we classify as an “Above-and-beyond” effort. Every programming assignment will describe opportunities and bells-and-whistles that you can try to add to your deliverables to take a shot at this grade. If you implement enough extras, you will be awarded this higher grade.
  • Numerical grades in the “0-2” range indicate deficiencies that make an assignment fall short of the “Satisfactory” verdict. For example, an assignment that was never turned in, or cannot run in our computers due to programming error will be given a “0”. A numerical grade of “2” might be given to a program that barely meets the necessary requirements, but was turned in late — or a program that misses one key requirement stated by the assignment description (while fulfilling others, and turned in on time). A grade of “1” might be an assignment that is significantly deficient in the stated requirements, or one that is somewhat deficient and turned in late.
    The impact of getting even a “2” (no-check) in a programming assignment vs. a “3” (check) is significant – it might take a couple of “4”-level hand-ins to forgive a single “2” grade. Lower numerical scores might be even more difficult to make up for (but the details will have to depend on the final curve used for grading the entire class).

Exams will be graded numerically on a 0-100 scale, and you will be given a crude guideline of what letter grades each score corresponds to (based on the curve resulting from the performance of the whole class). Exam performance can only boost your final score by a maximum of a half letter grade : A student that would otherwise score a “B” in class, that turns in a clear “A”-level performance in the exams will likely be boosted to an AB. If your exam score is within a half letter grade above your other performance metrics, to one letter grade below it, it will probably not change your final score (unless your score based on assignments was really on the verge between 2 different grades). The maximum harm that the exam can do for you is to depress your grade by one quarter of a letter grade; i.e. if your grade (excluding exams) is a weak/gratuitous “B”, and your exam score is C/D, you will probably be pushed down to a BC (but if the same student had a “BC” exam grade, that would not be enough to move him/her from the “B” that would otherwise be awarded).

To reiterate, if you perform adequately in assignments (a score of “3” in all of them) and score no less than a C/BC in the exams, you will be guaranteed a “B” grade in this class.

To get better than a B, you need to (i) have adequate overall performance, as defined above, and (ii) go “beyond the minimums” on several of the course components; this should include a combination of an “above and beyond” in programming assignments, doing optional parts of programming assignments, and doing better than average on the exams. Students competing for an A grade would typically perform very well (top 30-percentile) in all course components, and excel (top 15-percentile) in at least one of the most challenging aspects (larger assignments, project, exams).

This will make more sense when you see the actual assignments.

Late Policy

Things are due on the specified day. If something is due on a Friday, it can be turned in anytime by Friday 11:59pm.

Late assignments will be accepted, but they must be turned in at least one day before the next assignment is due. Lateness will be considered in grading. If you’re consistently late, you will be penalized.

Comments on this entry are closed.