Exam Instructions

Here is some information about the final exam.

Exam Format

The exam will consist of 3 Canvas Quizzes (part A, part B, part C). The parts can be taken in any order. They will be combined. There is no real difference between the parts (topics and question types will be spread across the three quizzes).

Students are allowed 20 minutes per part. The 20 minutes clock begins when you start the part. You may start the part at any time during the exam window. Once you start, you must finish within 20 minutes - you cannot pause once you start a part. There is a cutoff at the end of the exam window: if you start too late, you will not get the full 20 minutes.

Read the instructions before you start. The instructions are the same for each part.

The exam will consist of Canvas multiple choice, multiple answer (select all that apply), fill in the blank, and multiple fill in the blank questions. The fill in the blank questions will all require numerical answers. Do not use decimals or fractions for the numerical answers (round to the nearest integer).

Exam Rules

You may take the exam at any point in the exam window (4:30pm-8:00pm). You must complete all 3 parts by the end of the window: Canvas will cut you off!

You may take the exam in the official university exam period (5:05-7:05pm) - or in the exam window.

If you have another exam in the official period (5:05-7:05), you may take some of this exam before and some after. Or, you can ask the instructor of your other class to extend their window either before or after to give you time for this one (I have already given you flexibility - your other instructor should do the same).

Please remember that during the exam window, you are not permitted to communicate with other students in class. Note: If someone breaks this rule (e.g., by sending a message or posting in a forum), it is your responsibility to ignore it (reading an illegal message is illegal).

During the exam window, you are not permitted to discuss exam-related topics with anyone other than course staff. You may not post questions related to the exam (except to Course Staff - send private messages on Piazza). You should treat AI agents (including modern search engines - Google searches now provide “AI overviews”) as part of “anyone”.

Before beginning this Quiz, check to see if any announcements have been made on Canvas. (You don’t want to do this once the clock starts ticking when you begin the Quiz).

If you have a technical problem, try to resolve the issue yourself and proceed with the quiz as much as possible. Your 20 minutes do not pause once they start. As soon as possible, send a message to the course staff. If you send a message (privately on Piazza), please provide as much detail as you can about your problem and include your email address.

We will generally avoid making announcements during the exam. However, if there is something urgent, we will post it as a Canvas Announcement. We recommend checking the announcements before starting the Quiz. You may want to check announcements before hitting “submit” on the quiz as well (if you have time). If you check announcements, we recommend doing it in a different browser tab or window: if you leave the quiz, Canvas might lose information.

We will not answer questions about the exam content. If you think a question is ambiguous or has a typographical error, take your best guess at what you think we had in mind when writing the question.

Exam Content

The exam is cumulative and may ask questions from any part of class. Anything in the workbooks is fair game.

The questions are designed to focus on the concepts, not the details of specific APIs. That said, we may show you examples from programs written using the languages and APIs that you have learned about in class.

What topics should you focus on? I asked the Notebook-LM what it thought with the prompt “Looking over the course, what are the 5 key things that students should take away?” - which I think gives you a pretty good idea. Spoiler alert: one of these won’t be on the exam (not because it isn’t important, but I can ask everything). (it wrote a paragraph for each, but I am not including that here)

Here are 5 key themes and takeaways that synthesize the core concepts taught throughout the course:

  1. Coordinate Systems, Transformations, and Hierarchical Modeling
  2. Representing Shapes with Curves and Meshes
  3. 3D Perception and Viewing Transformations
  4. Appearance through Shading and Texturing
  5. The Graphics Pipeline, Aliasing, and Programmable Shaders

Exam Instructions

(note: these might be updated - we will post them before the exam, and include them at the introduction to each part)

Summary

  1. You have 20 minutes for this part (unless you hit the end time). The clock starts ticking when you begin the quiz. You must finish all three parts before the end of the exam window.
  2. Check for announcements on Canvas before and after you take each part.
  3. If you have a technical problem, complete the exam part as best you can and send a private note to course staff on Piazza as soon as possible.
  4. We will not answer questions about content. If you think a question is ambiguous or has a typographical error, take your best guess.
  5. You may not discuss the exam with anyone except course staff - including AIs.
  6. Enter numerical answers as integers: use only digits and “-”. Round if necessary. Do not use decimals or leading zeros.
  7. Assume that appropriate setup code has run outside of the pieces we show, for example, assume ctx refers to a valid HTML CanvasRenderingContext2D object.
  8. All coordinate systems are right handed. Rotations are measured via the right-hand rule. In Canvas, the Y axis is pointing down.
  9. Pick the most correct answer in a forced choice.

Full Version

Once you begin this quiz, you will have 20 minutes to complete it (unless the end of exam period comes first). The 20 minutes begin when you start the quiz, so read the instructions before you start. These instructions are the same for all parts of the exam.

You must complete all 3 parts of the exam within the exam window.

Please remember that during the exam window, you are not permitted to communicate with other students in class. Note: If someone breaks this rule (e.g., by sending a message or posting in a forum), it is your responsibility to ignore it (reading an illegal message is illegal).

Please remember that during the exam window, you are not permitted to discuss exam-related topics with anyone other than course staff. Asking a question to an AI agent/chatbot or AI-enabled search engine is considered as part of “anyone other than course staff.”

Before beginning this Quiz, check to see if any announcements have been made on Canvas. (You don’t want to do this once the clock starts ticking when you begin the Quiz).

If you have a technical problem, try to resolve the issue yourself and proceed with the quiz as much as possible. Your 20 minutes do not pause once they start. As soon as possible, send a message to the course staff. If you send a message (privately on Piazza), please provide as much detail as you can about your problem and include your email address.

We will generally avoid making announcements during the exam. However, if there is something urgent, we will post it as a Canvas Announcement. We recommend checking the announcements before starting the Quiz. You may want to check announcements before hitting “submit” on the quiz as well (if you have time). If you check announcements, we recommend doing it in a different browser tab or window: if you leave the quiz, Canvas might lose information.

We will not answer questions about the exam content. If you think a question is ambiguous or has a typographical error, take your best guess at what you think we had in mind when writing the question.

The exam is “open book” - you may consult the course materials or your notes. If something comes from another student, you must have gotten it from them before the exam window.

Many web resources are inappropriate for class - for example, they refer to different systems that work differently than what we discussed in class. There is also misinformation on the web. We are not responsible if you use an inappropriate source.

Many of the questions are “check all that are correct” questions with checkboxes. You may check multiple boxes. Canvas grades these rather harshly: it is the number correct minus the number wrong (although you can’t score less than zero).

Canvas uses square check boxes for “multiple answers” and round check boxes for “multiple choice” (exactly 1 right answer).

Type-in boxes are expecting a numerical answer. Round to the nearest integer. Use only digits and “-” (so “0” not “0.0” or “zero”, or “-1” not “-1.0” or “-1.”). Avoid leading zeros.

Tips and terminology:

For questions that force you to pick a single answer, if you think there is more than one correct answer, pick the one that is “most correct”. In general, prefer things with the simplest explanation (as you are probably over-thinking things).

In this exam, all code fragments use the HTML Canvas 2D API. You can assume that the variable ctx refers to a valid HTML CanvasRenderingContext2D object.

Throughout the exam (like the course):

  1. Rotations follow the right-hand rule (point your thumb along the axis, the curl of your fingers is the direction of rotation). So a positive rotation about the Z axis is from X towards Y. A positive rotation around the Y axis is Z towards X. 

  2. The default coordinate system in Canvas has the origin at the top left, the X-axis going to the right, and the Y-axis pointing down.

  3. Canvas measures angles in radians.

  4. Unless otherwise specified, transformation matrices apply to their arguments (points or vectors) as column vectors on the right.

Good luck!