Mini-Exam 2: Rules and Information

The second “Mini-Exam” (I hate to call it a midterm because there are 3 of them, they are small, and its not the middle of the semester) will be Thursday, March 25th during the class period.

The rationale for this style of exam is discussed on the Course Web:

The exam will be semi-synchronous: you must take it during the class period (11am-12:15pm, Madison time, Thursday March 25th), but it is up to you when during that 75 window that you take it.

The exam will be given as two Canvas quizzes. You will be allowed to spend 20 24 minutes on each. You can start a quiz any time during the exam window, but once you begin a quiz, you must complete it within 20 minutes. And you must complete both quizzes by 12:15. If you want to start at 12:10, you will only have 5 minutes. If you want the full 48 minutes to do the work, you need to start before 11:35 11:27. If you start earlier (11am or shortly after), you will have time to take a short break between the quizzes (recommended).

Details of the rules and content are given on the Mini-Exam 2: Rules and Information page on the course web.

Key Rules

These rules are unchanged from Exam 1.

  1. You must not communicate with other students in class during the exam window (even when you are not taking the exam).

  2. You must not discuss the exam with anyone during the exam window. This includes any form of writing (posting, replying, messaging, etc.) to any forums (Piazza, Stack Exchange, Discord, etc.).

  3. You must avoid listening/reading to people violating the rules; e.g., if someone else makes a posting or message during the exam period, you should not read it.

  4. The exam is “open book” - we will not try to prevent you from reading (or viewing) existing materials. The exam timing will limit your ability to do research on the answers to the questions. Remember, that writing (asking a question, or posting an answer) is not allowed during the exam window. And, reading something illegal is academic misconduct.

  5. You may use a “calculator”, which includes writing programs. But, be careful of the time it takes. The questions are designed that you should be able to figure them out “by hand” (with pencil and paper) more quickly than trying to program.

  6. We must be strict about the start/stop time of the exam window because students in class are allowed to discuss the exam and class material outside of the window.

  7. The rules of proper academic conduct apply. See the course page on Collaboration Policy and Academic Conduct for more details.

In case of technical difficulties

Inevitably something will go wrong for someone.

If you have a problem:

  1. If you have a technical issue during the exam, try to complete the quiz you are taking as best you can. You may want to take a screen shot of the problem. You may want to save your work (e.g., a screenshot or print-to-PDF) if you fear Canvas might mess up

  2. After completing the current Quiz, send a private message to the course staff on Piazza explaining the problem. If you have an internet failure that precludes accessing Piazza, you can send email to the Professor. If you can’t even send email, send a message as soon as your internet access is restored.

  3. Please alert us to technical problems as promptly as possible.

  4. We will not answer content questions during the exam. If you feel a question has an error or is ambiguous, take your best guess at what the question means. The questions usually ask for the “most correct” answer (in cases where you feel no answer is exactly correct).

  5. Please check Piazza and Canvas for announcements before beginning each Quiz.

  6. Canvas may allow you to take the quizzes in the wrong order. In the event you start taking the wrong quiz, complete the one you have started. Then complete the remaining quizzes in the correct order.

Technical problems do happen. During the Spring 2020 559 Final, the internet went out in my neighborhood! I had to proctor it by phone (fortunately, the peer mentors and TAs were in a different neighborhood).

Accomodations for McBurney Students

If you have already arranged for additional time, we will try to convince Canvas to give it to you. You must still complete the quizzes within the exam window, but you be given longer to take each quiz. This means that in order to take all of your additional time, you must start the exam relatively promptly at the beginning of the window.

Because of limitations of Canvas, portions of the quiz may not be compatible with screen readers or other assistive technologies. If you are visually impaired and rely on screen reading technology for viewing the web, please contact the course staff before the exam.


Mini-Exam 2 will cover the topics presented in class during weeks 5-8, including Workbook 8 and Lecture 16. Because these topics build on earlier topics, things from the first weeks of class are still relevant (although they will not be tested directly).

You are responsible for all topics discussed in lecture, described in the readings and presented in workbooks. We will ask you about the concepts in the workbook, but generally not things that are specific to the questions. We will not ask you about optional tools (e.g., Visual Studio Code or the Debugger). We may ask questions about JavaScript, particularly the topics discussed in lectures or the workbooks.

The weekly surveys are a good model for the kinds of questions we will ask.

The outline of slides and lectures also provides a topic list (

Topic Outline for Weeks 5-8:

Shapes Basics

  • curves vs. areas vs. surfaces vs. volumes
  • implicit vs. parametric vs. subdivision forms
  • free parameters (parametric representations)

Parametric Curves

  • tangents
  • piecewise polynomials and parameters
  • cubic segments
  • Blending (basis) function forms

Piecewise Parametric curves

  • continuity conditions
  • C vs. G continuity
  • Hermite forms

Interpolating Curves

  • Hermite interpolation
  • sketching and designing with Hermites
  • Cardinal Splines, Catmull-Rom splines
    • sketching, drawing, converting to other forms, …
  • locality (interpolating high-order polynomials)

Bezier Curves

  • Bezier curve principles and properties
  • Quadratic Bezier Curves
  • Cubic Bezier Curves (relationship to Hermite)
  • Geometric Algorithms (DeCastlejau)
  • Basis Functions (Bernstein forms)
  • limits of Bezier curves (why rational curves)
  • Bezier curves in APIs

Advanced Curve Topics

  • Arc length and arc-length parameterization
  • Approximating curves with segments
  • B-Splines
    • motivations, blending/basis functions

3D Basics

  • how we see in 3D
  • depth cues (1 eye, 2 eye, image based)
  • 3D coordinate systems, right hand rule
  • Normals and Tangents


  • comparison of WebGL and THREE
  • main abstractions of 3D Graphics

THREE Basics

  • hello cube abstractions
  • meshes vs. geometries
  • materials
  • transformations and hierarchy
  • deferred loading
  • lighting and shading basics
  • state vs. transformation commands

Transformations in 3D

  • use of homogeneous coordinates
  • rotate, translate, and scale in THREE

Viewing (Projection) transformations

  • Viewing vs. Camera Transformations
  • type of projections
  • projection math
  • clipping and frustum


  • basic facts
  • single axis rotations
  • lookat transformations
  • rotations about multiple axes
  • Euler Angles
  • Axis Angle representations
  • Gimbal Lock and other Euler Angle problems
  • Motivations for Quaternions

JavaScript Tips:

  • ES6 modules
  • Casts and Type Checks
  • modules and type checks
  • inheritance and subclasses
  • methods and this
  • asynchronous programming (callbacks, promises, await)
  • parameter passing with dictionaries (WB7-1)