\( \newcommand{\vecIII}[3]{\left[\begin{array}{c} #1\\#2\\#3 \end{array}\right]} \newcommand{\vecIV}[4]{\left[\begin{array}{c} #1\\#2\\#3\\#4 \end{array}\right]} \newcommand{\Choose}[2]{ { { #1 }\choose{ #2 } } } \newcommand{\vecII}[2]{\left[\begin{array}{c} #1\\#2 \end{array}\right]} \newcommand{\vecIII}[3]{\left[\begin{array}{c} #1\\#2\\#3 \end{array}\right]} \newcommand{\vecIV}[4]{\left[\begin{array}{c} #1\\#2\\#3\\#4 \end{array}\right]} \newcommand{\matIIxII}[4]{\left[ \begin{array}{cc} #1 & #2 \\ #3 & #4 \end{array}\right]} \newcommand{\matIIIxIII}[9]{\left[ \begin{array}{ccc} #1 & #2 & #3 \\ #4 & #5 & #6 \\ #7 & #8 & #9 \end{array}\right]} \)

Syllabus for CS307, Computer Graphics


Scott D. Anderson (please feel free to call me "Scott")

My office is room W118, and my normal (in-person) office hours this spring will be:

  • Monday: 11:15-12:15
  • Tuesday: 3-4
  • Wednesday: 2-3
  • Thursday: 2:30-3:30
  • Friday: 1-3

My Calendly link.

Meetings or appointments may sometimes arise during these times, so I'll send e-mail each week to let you know about any changes. You're welcome to make an appointment to meet with me at other times — please contact me by e-mail at scott.anderson@wellesley.edu to schedule a time to meet.

If you cannot attend in-person office hours due to COVID illness or isolation, we can arrange to meet over zoom.


I'm pleased to have Toshali Goel as a tutor for this class. Drop-in hours will be held on Wednesday afternoons from 4pm-6pm in L180, starting the second week of the semester.

Course Description and Learning Goals

CS307 provides an introduction to fundamental techniques used in computer graphics, with an emphasis on three-dimensional graphics. Topics include the graphics pipeline, modeling three-dimensional curves and surfaces, projection, coordinate transformation, synthetic camera specification, color, lighting, shading, surface material, texture mapping, hidden surface removal, transparency, animation, and user interaction. We also introduce some of the mathematical foundation underlying computer graphics. Students create web-based computer graphics displays using software that integrates JavaScript, WebGL, and Three.js.

In CS307, you'll learn how to

  • build interesting, complex 3D object models in a computer graphics system
  • describe the mathematical representation of 2D and 3D lines, curves, and surfaces, and their rendering in 2D raster graphics
  • describe the coordinate systems for models, the world, the camera, and the screen, and how to convert among them, including perspective and parallel projection
  • describe and use techniques for realistic rendering of objects, including the modeling of different surface materials and illumination conditions, texture mapping, hidden line removal, z-buffering, and ray tracing
  • create dynamic, interactive displays that incorporate animation and user input


The prerequisite for CS307 is CS230 Data Structures. Mathematical descriptions will mainly draw on basic algebra, geometry, and trigonometry. Knowledge of linear algebra is useful, but not required. Essential math background is described in online readings.


There are two lectures each week in the computer classroom, SCI H402. Here's a link to the class schedule. There will be reading to complete before each class, and we will often do hands-on computer exercises in class that use concepts from the reading.


There are extensive online notes for this course, linked from the class schedule, which I will update this spring. Notes whose link text begins with "Reading:" on the schedule page must be read before class. This requirement helps to ensure that you are prepared for in-class partner work on the new material.

There is no required text for this course, but we will draw some material from Jos Dirksen's Learn Three.js - Third Edition, which has code examples posted on GitHub.

Lecture Handouts

An online lecture handout for each class, also linked from the class schedule, describes the material covered and the lab exercises to be completed. I may make revisions to these handouts up until the night before each class. After class, I will post links to the exercise solutions in the handouts.


There will be six assignments during the semester. All assignments will involve programming, and the first four will also have separate math problems. Assignment handouts will be posted on the class schedule on the date that they are due. The assignment handout will be posted at least a week before the assignment is due.

Some assignments will be solo and some will be with an assigned partner. The creative scene and final project will be in pairs.


The final project is an opportunity for you to build a graphics application of your own design, that goes beyond the simple examples that you complete for homework and in class. You will create a scene that incorporates animation or user interaction, and employs many of the concepts learned in class to design complex 3D shapes, with rich visual textures, surface materials, lighting, shading, and so on. The final project will be submitted in two phases.

Students will present the first version of their project during the last week of the semester. The final version of your project is due at the end of final exams. Here is more detail on the project.


The components of your work will contribute to your final grade as follows:

Project 30%
Quizzes 5%
Class Participation 5%

Class participation includes attendance and engagement in class activities.

If you need to miss a class for any reason, please inform me in advance. I plan the partners for in-class computer work for every class, and it helps to know when adjustments need to be made.

Late Assignment Policy

All assignments are due on the posted due date (see the class schedule), which will usually be a Friday. Unless otherwise noted, you can use a 48-hour extension on assignment work, no questions asked. However, if this extra time is not sufficient for you to complete the assignment, please contact me to discuss a plan for completing it. We will work together to make sure that the plan is reasonable and effective so that it supports both your learning and your health.

If the solutions to an assignment are distributed before you turn in your work, you are bound by the Honor Code not to examine them. In extenuating circumstances (e.g. sickness, personal crisis, family problems), you may request an extension without penalty. Please try to contact me before the due date.


Collaboration fosters a healthy and enjoyable educational environment, and I encourage you to talk with other students about the course material. You can discuss assignment problems with other students and exchange general ideas about how to solve them, but you should write your own code. You can also work through the solution to math problems together, but each student should write up their own solution to the math problems for each assignment. You should not compose a solution together with other students and turn in two copies of the same work, or copy work from other students, or view solutions from previous semesters of CS307. When in doubt about acceptable levels of collaboration, please ask me for clarification.

In keeping with the standards of the scientific community, you must give credit where credit is due. If you make use of an idea that was developed by (or jointly with) others, please reference them appropriately in your work. It is unacceptable for students to work together but not to acknowledge each other in their write-ups.

Google Group

For correspondence about this course, we will use the Google Group CS-307-01-SP22, and students enrolled in the class have been added as members. Please let me know if you need to be added to the group. You can send e-mail to this group at the address cs-307-01-sp22@wellesley.edu. I will post important announcements here about assignments and other course-related information. I encourage you to post questions or comments related to course material or other topics of interest to students in the class. Feel free to respond to questions posted by other students. Please do not post code here — homework discussions should be at a high level English description.

Observance of Religious Holidays

Please let me know if you anticipate an absence or need accommodations for observance of religious holidays. The College provides an online Religious Observance Notification Form that you can use to inform me of this need.


It is my goal that every student in this course succeed, regardless of challenges they may face. This includes documented disabilities and conditions, as well as other challenges, such as those that may arise as a consequence of the COVID-19 pandemic.

If you have a disability or condition, either long term or temporary, and need reasonable academic adjustments in this course, please contact Disability Services as early as possible in the term so that they can review your request and send a message to me outlining your need for accommodations. If you are unsure but suspect you may have an undocumented need for accommodations, you are encouraged to contact Disability Services. They can be reached at disabilityservices@wellesley.edu, at 781-283-2434, by scheduling an appointment online at their website www.wellesley.edu/disability, or by visiting their offices on the 3rd floor of Clapp Library, rooms 316 and 315.

If you have special needs of any kind, please meet with me to discuss accommodations that may be helpful to you.

Responsible Employee

Wellesley College considers diversity essential to educational excellence, and we are committed to being a community in which each member thrives. The College does not allow discrimination or harassment based on race, color, sex, gender identity or expression, sexual orientation, ethnic or ancestry, physical of mental disability, pregnancy or any other protected status under applicable local, state, or federal law.

Pursuant to Wellesley College policy, all employees, including faculty, are considered responsible employees. That means that any disclosure of discrimination, harassment, or sexual misconduct to a faculty member will need to be shared with the College's Director of Nondiscrimination Initiatives and Title IX Coordinator/504 Coordinator, DaQuana Carter (781-283-2451; titleix@wellesley.edu). Students who do not wish to have these issues disclosed to the College should speak with confidential resources who are the only offices at the College that do not have this same reporting obligation. On campus, confidential resources include Health Services (781-283-2810 available 24/7), the Stone Center Counseling Services (781-283-2839 available 24/7) and the Office of Religious and Spiritual Life (781-283-2685). You should assume that any person employed on campus outside of these three confidential offices has an obligation to share information with Wellesley College through the Office of Nondiscrimination Initiatives.