Syllabus for CS307, Computer Graphics
Instructor
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: 2:15-3:45
- Tuesday: 3:45-4:45
- Wednesday: 2:15-3:15
- Friday: 3:30-4:30
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.
Tutors
I'm pleased to have Maya Mau as a tutor for this class. Drop-in hours will be held on Tuesdays from 6pm-8pm in L043, 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
Prerequisites
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.
Instruction
There are two lectures each week. 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.
Readings
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.
Assignments
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.
All assignments will be solo (not pair programming). If you decide to join forces with another student for the final project, you may do so, but each student must take sole responsibility for some clear aspect of the project, so that if something goes wrong (for example, your partner falls ill and is unable to do their portion), the project will succeed nevertheless, albeit in diminshed form.
Project
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.
Grading
The components of your work will contribute to your final grade as follows:
Category Weight Assignments 60% Project 30% Sakai Quizzes 5% Class Participation 5%
Class participation includes attendance and engagement in class activities, including quizzes using Poll Anywhere.
Sakai Quizzes
Before class, I will send out a Sakai quiz based on the reading. The quizzes consist of a few multiple-choice questions that are intended to be straightforward, based on the reading. I don't intend them to be tricky.
They also have an open-ended question of "what would you like me to address in class"? This is the most important part: a chance for you to ask questions about anything that wasn't clear, while the reading is still fresh in your mind.
Because of the timely nature of the quizzes, they may not be submitted late. I will drop the three lowest quizzes, so if you forget once, it won't hurt you at all. (I don't yet know how to do that within Sakai, but I'll figure something out.)
Late Assignment Policy
All assignments are due on the posted due date (see the class schedule). This is a soft deadline; you may take another day or two to finish the assignment, if you need it.
However, the soft deadline is not open-ended. It is important to keep up. If it is going to take you more than 2 extra days 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
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.
I often distribute a model
or example
of what I would like
you to build. That model may be some running code, and having it allows you
to look at the scene from all angles and try different behaviors.
You are not permitted to try to reverse engineer my code,
instead of trying to solve the problem from scratch.
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.
Accommodations
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.