Syllabus for CS307, Computer Graphics
Ellen Hildreth (please feel free to call me "Ellen"). My office hours are
- Monday: 2:00-4:30
- Tuesday: 9:45-11:00, 12:00-2:30
- Wednesday: 2:15-4:30
- Thursday: 12:30-3:30
In addition to office hours, you're welcome to make an appointment. Contact me by email at firstname.lastname@example.org . My office is room S133 in the Science Center, next to the Leaky Beaker Cafe.
I love to talk with students one-on-one — it's the best part of my job — so please visit me during office hours. You don't even need to have a question!
I'm pleased to have Margaret Flemings and Jennifer Chien as tutors for this class. Drop-in hours will be held on Wednesday and Thursday evenings from 7:00-9:00 in SCI S160A (the MAC Lab along the back corridor of Sage).
CS307 provides an introduction to the use of computers to manipulate and display graphical information, including graphical input methods and interactive graphics, two- and three-dimensional transformations, and the fundamentals of raster graphics.
Almost every modern computer has a graphical user interface (GUI) and newer models will increasingly incorporate advanced techniques in modeling, lighting, animation, and so on. Furthermore, graphical visualization techniques are increasingly used in computer-aided design, engineering, manufacturing (CADEM), human-computer interaction, data visualization, and simulation, as well as entertainment and games. Computer graphics is therefore an important area of research and innovation.
You will learn about how 2D and 3D objects are modeled and rendered on raster graphics computer screens and other 2D output devices. You will learn the fundamental mathematics, as well as efficient algorithms and computer hardware designs.
A successful student will be able to
- Build interesting, complex 3D models in a computer graphics system, including techniques such as texture-mapping, anti-aliasing, and the like
- explain the hardware and software that make raster graphics displays possible
- give the mathematical representation of lines and curves, in 2D and 3D, and their rendering in 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
- use or describe techniques for realistic rendering of objects, including hidden line removal, surface reflection and illumination, z-buffering, and ray tracing
CS307 has CS230 Data Structures as a prerequisite. Students with exceptional programming ability may also be admitted. Knowledge of linear algebra is also useful, but not required.
Instruction will consist of lectures twice a week, Tuesday/Friday at 8:30-9:40 in the computer classroom, SCI 257. Here's a link to the class schedule. There will be reading to complete before each class, and we will often have hands-on computer exercises in class that use concepts from the reading.
Scott Anderson has prepared extensive online notes for this course, linked from the class schedule, which I will update this fall. Notes whose link text begins with "Reading:" should be read before coming to class. The final version of these readings will be posted to the web at least a week before each class.
An online lecture handout for each class, also linked from the class schedule, outlines the material and lab activities to be covered. I may make revisions to these handouts up until the night before each class. To save paper, I will typically not make printouts of these lecture handouts, but if you find it useful, I would be happy to do so. Just let me know.
I will post a Sakai quiz before each class, based on the reading for that class. These quizzes must be completed by 10:00pm on the night before class. Quiz grades accumulate into a single score.
There will be six assignments during the semester. All assignments involve programming, and the first four also have separate math problems. Assignments are due at midnight on Thursdays, unless otherwise noted. Assignment handouts are posted on the class schedule on the day they are due. Final versions of the assignment handouts will be posted at least a week before the assignment is due.
The final project in this class is due in two phases. There is a presentation in class on the last day of the course. Then, the final version is due at the end of exams. You (and, optionally, a partner) will create an animation of a scene and demonstrate it in class. Your animation should have at least two independently moving objects and employ at least two of the major concepts we discussed in class, such as shading, changing camera position, curves, textures, or a user interface. You should go beyond the simple examples we did for homework and in class. Here is more detail on the project.
Pair programming is strongly encouraged! There is a lot of evidence to show that two people working together will produce higher quality code in less time than when working by themselves.
The weights for the final grade are:
Category Weight Assignments 40 Project 35 Midterm 15 Quizzes and class participation 10
The midterm is a take-home exam distributed in mid-November. Each part of a homework assignment is given a point weight. Typically, programs will count for 100 points, and a written problem will count for 10 points, unless it is unusually hard or easy. Class participation includes attendance and engagement in class activities.
Late Assignment Policy
All assignments are due at midnight on the date indicated on the class schedule, which will usually be a Thursday. Late assignments can still be submitted, but will lose 15% credit for each calendar day after the due date. After three days of lateness, you can still receive up to 55% credit on the assignment, regardless of the number of additional late days. 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.
I believe that collaboration fosters a healthy and enjoyable educational environment, and encourage you to talk with other students about the course and to form study groups.
Unless otherwise instructed, feel free to discuss problem sets with other students and exchange ideas about how to solve them. However, there is a thin line between collaboration and plagiarizing the work of others. Therefore, I require that you must compose your own solution to each assignment. In particular, while you may discuss problems with your classmates, you must always write up your own solutions from scratch. It is unacceptable for two students to turn in copies (or near copies) of each other's solutions. I will interpret such a situation as a violation of the Honor Code, and will bring it before the General Judiciary. 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. For example, if person X gets a key idea for solving a problem from person Y, person X's solution should begin with a note that says "I worked with Y on this problem" and should say "The main idea (due to Y) is ..." in the appropriate places. It is unacceptable for students to work together but not to acknowledge each other in their write-ups.
When working on homework problems, it is perfectly reasonable to consult public literature (books, articles, etc.) for hints, techniques, and even solutions. However, you must cite any sources that contribute to your solution. Assignments and solutions from previous terms of this course are not considered to be part of the "public" literature. You must refrain from looking at any solutions from previous terms of CS307. It is my policy that consulting solutions from previous terms of CS307 constitutes a violation of the Honor Code.
Pair Programming means that the pair of you act as an individual would as described above, so one pair can discuss the problem with another pair but cannot look at the code of the other pair.
I often distribute a
example of what I would like
you to build. That model is 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.
A Google Group has been created, CS-307-01-FA17, and students enrolled in this 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-FA17@wellesley.edu. I will post important announcements here about assignments, changes to office hours, and CS department events such as seminars and parties. 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.
Students with Special Needs
If you have special needs of any kind, please meet with me to discuss accommodations that may be helpful to you.