The midterm exam will be on March 12th from 7:15-9:15pm in room 3650 Humanities.

For students who have requested an alternate exam situation: see this post. We expect to be able to accommodate the students who have notified us prior to March 1 in an alternate room. For students who have a class (ECE 317 (2 students), English 431 (1 student), CS 564 midterm (2 students)), we will allow you to take the exam from 8pm-10pm in the alternate room. For the McBurney accomodation request (1), we will have you in this same room with an earlier start time. More details are at see this post.

We will have limited space in the alternate room, and may not be able to accommodate students who have not already placed a request.

## Exam Content Coverage:

All material covered prior to the exam:

- Everything presented in lecture up to (and including) the lecture on Thursday, March 7th. The lecture on March 12th may review material already presented (and covered on the exam). However, new material in the March 12th lecture will not be covered on the exam.
- Everything presented in Workbooks 1-6 (Workbook 6 has it’s “drop dead” date the day before the exam). Workbook 7 will not be covered on the exam.
- All required readings referred to in the workbooks. This includes (but is not limited to):
- Any content on the course web.
- Tutorials from older editions of the class (e.g., Color, images vs. objects, pxiels, points and vectors, SVG tutorial).
- Chapters 5, 6 and 7 of Hart
- Chapters 6, 15 of Fundamentals of Computer Graphics

- You were expected to read on your own to pick up key pieces of JavaScript and Web Programming, and to review Vector Algebra. The important parts were also discussed in lecture and/or the workbooks.

## Exam Format

The exam will be multiple choice using University standard exam sheets. Please bring a #2 pencil and eraser. We will try to have extra pencils, but may not have enough. And we may not have erasers at all.

The exam is closed book and closed notes. You may not bring a “cheat sheet” or use an internet connected device during the exam. (that means you can’t use your phone).

The exam is designed so that you do not need a calculator.

## Exam Non-Content

We do not expect you to memorize details. Of course, this is subjective – but our goal is to test that you know the concepts, not memorize the things you can look up. But some examples of things we will not ask you to remember:

- equations for cubic forms – for example, you should know what a Hermite or Cardinal Spline is, and the geometric intuitions, but you if you need them, we’ll give you the equations for the parametric functions or basis functions
- the parameter list of JavaScript, Canvas or THREE functions. For example, we don’t expect you to remember the order of the parameters, so if we show you the code new THREE.PerspectiveCamera(50, 1, 0.1, 1000 ); and remind you that the first parameter is the field of view, you should know what field of view does.

## Exam Content List

Here is a brief outline of the course content (note: you are responsible for all covered material – we are trying to be complete in this outline, but might have missed something):

- Distributed Source Control (GIT) Concepts
- JavaScript and Programming Concepts (e.g., lexical scope, closures, lightweight objects)
- Interaction models for web programming (event loops, animation loops)
- Displays and display types
- Buffering
- Immediate mode vs. Retained-Mode / Scene-Graph API
- Canvas basics (coordinate systems, state, stroke fill, paths)
- Event models for Canvas vs. SVG
- SVG concepts
- Alpha blending
- Coordinate Systems and Transforms
- Immediate mode transformation systems (e.g. Canvas)
- Hierarchical modeling and instancing
- Transformations as changes of coordinate systems
- Composition of transformations
- Basic transformations (rotate, translate, scale, skew)
- Rotations and articulated chains, Properties of rotations
- Transformations as matrices
- Vectors, Matrices, basic vector and matrix algebra
- Linear transformations, Affine transformations, properties of affine transformations
- Homogeneous coordinates and affine transformations
- Use of matrices in immediate mode APIs
- Flocking
- Linear Interpolation
- Polygons, filling rules
- Curve concepts
- Shape representations (implicit, subdivision, parametric)
- Continuity
- Piecewise polynomials (and interpolating polynomials)
- Cubic Polynomials, Hermite Forms, Cardinal Splines, Matrix forms
- Bezier Curves, Bezier Cubics, Geometric Constructions, Connecting pieces
- Approximation of curves as line segments, adaptive subdivision
- 3D coordinate systems
- Triangles, Barycentric interpolation
- Abstractions of the 3D graphics process (THREE)
- Camera and Viewing
- 3D affine transformations
- Forms of 3D rotations
- Basic concepts of shading
- Any other things we get to in lecture on March 5 or 7