Course Info


Welcome to CS313. An introduction to computer graphics. Computer graphics is a fundamental technology underlying many applications such as digital photography, film, video games, simulation, training, product design, architecture, and fabrication.

In this class, we will study the fundamental algorithms and data structures used to generate images on a digital display. Students will learn how to model 3-dimensional objects and simulate lights and materials.

Students will additionally gain experience programming with C++ and using git for source control. Students will also practice deriving the mathematical models that underlie common graphics algorithms. These skills will empower students to create their original digital artworks as part of assignments and the final project.

Computer graphics is a multi-disciplinary subject, combining knowledge about hardware, design, physics, and linear algebra. Computer graphics can be a daunting subject because it draws on diverse knowledge and skills. But it also offers many opportunities and ways to succeed! You can focus on aesthetics, user experience, hardware performance, mathematics, or software algorithms. Computer graphics are a medium of self expression that let’s you bring your own ideas to life and be able to share them with others!

Meeting Times:

Activity Location Time


Park 245

Tuesday, Thursday, 1:10-2:30pm


Park 231

Thursday, 2:25-3:45 pm

Office Hours

Park 200A/B, or Park 231

Tuesday 2:30-3:30 pm, Thursday 4-5 pm, or by appointment

Texts and software


Most lecture materials will contain material covered in the following text books. Both should be available from the library and as an e-book.

  • Real-Time Rendering, 4th Edition, by Tomas Akenine-Moller, Eric Haines, Naty Hoffman

  • Fundamentals of Computer Graphics, 4th Edition, by Peter Shirley, Michael Ashikhmin, and Steve Marschner



The Bryn Mawr labs have the following software setup. Students may use the computers in Park 230/231 (Windows/Linux).

  • Github Account Please go to and register. You will be using github to submit assignments.

  • Slack Please go to Our workspace is BrynMawr-CS312-S21. You can ask questions and request one-on-one help over zoom using this course’s slack channel.

(Optional) If you would like to setup your own laptop for graphics development, use the resources below:

  • C++ development environment Please follow the instructions at cplusplus-beginners

  • Graphics development environment Please follow the instructions at getting-started

  • Blender Please go to Blender is an open-source 3D modeling tool and advanced renderer. We will occasionally use blender to inspect and edit models and materials.

  • Gimp Please go to Gimp is an open-source image manipulation tol, similar to Photoshop. Photoshop is also fine to use if you are familiar with it. We will occasionally use this program to edit images and generate textures.


The syllabus may change during the semester. Please check here every week for updates on lecture content, worksheets, and assignments.

Week Date Topics & ToDo


Jan 17, 19

3D Graphics Fundamentals, C++


Jan 24,26

Pixels and colors

  • Topics: pixels, images, color, compositing, C++ classes, structs, pointers and arrays

  • Assignment 01: Interaction is due January 26 at midnight

  • Read: Marschner and Shirley, Chapter 3


Jan 31, Feb 2

Geometry fundamentals


Feb 7,9

2D Drawing

  • Topics: Line equations. Bresenham’s algorithm, Barycentric coordinates, Triangle/Polygon rasterization

  • Read: Marschner and Shirley, Sections 2.7, 8.1.1, 8.1.2


Feb 14,16

2D Drawing (Cont), Meshes

  • Topics: Bresenham special cases. Edge handling for rasterization. Meshes (Vertices, Edges, Faces)

  • Read: Real-time Rendering, Chpt 4, 16.1-16.4.5

  • Read: Marschner and Shirley, 12.1,12.1.1,12.1.2

  • Assignment 03: Green eggs and Bresenham is due in two parts on Feb 16th and 23rd


Feb 21,23

Dot and Cross Product, Matrices, Transformations


Feb 28, March 2

Graphics Pipeline, Shaders, Lighting and Materials I

  • Topics: Cameras, Projections, Graphics pipeline, graphics processing unit, shaders, Phong shading models

  • Read: Real-time Rendering, Chpt 2, 3, 5

  • Read: Marschner and Shirley, Chapter 8

  • Assignment 04: Enmeshed in 3D is due in three parts: March 2nd, 16th, 23rd.

  • Lab (March 2nd): Quiz 01. Study Guide for Quiz 01.


March 7,9

Spring Break

  • No lab/class this week


March 14,16

Lighting, Materials


March 21,23


  • Topics: Texture mapping, sky boxes, sprites, billboards, particle effects

  • Assignment 04: Enmeshed in 3D is due in three parts: March 2nd, 16th, 23rd.


March 28,30

Special guest lecturem, Particles, View/Normal matrices

  • LaJune McMillan special guest lecture!

  • Topics: Particle systems (continued). Geometry Processing: View and Normal matrix derivations

  • Assignment 05: Special effects is due in two parts: March 30th and April 6th


April 4,6

Projection matrices


April 11,13

Advanced Shaders and materials

  • Topics: Environment mapping, reflection, transparency, bump mapping

  • Project details


April 18,20

Advanced Shaders and materials

  • Topics: Shadows, Screen-space effects, Render to texture, Vector projection and applications, Picking

  • Quiz 03: Study Guide 03


April 25,27


Grading Policies

All graded work will receive a grade, 4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.7, 1.3, 1.0, or 0.0. At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:


Final Project




Lab jams (quizzes)


Class/Lab worksheets


Final exam

Late Policy

Because practice is so important for learning how to program, we will do frequent exercises, assignments, and quizzes throughout the term.

The purpose of this work is to give you hands on experience with the topics from class. Most of this work will be due in lecture or labs. The weekly time commitment for this course is approximately 10 hours per week.

Assignments will generally be due on Thursdays. However, you may submit up to one day late (until Friday) with permission. No submissions beyond Friday will be accepted. This allows us time to grade assignments in a timely manner. And it helps prevent you from falling behind.

If you need to miss a quiz, let the instructor know and alternate arrangements for taking it will be arranged if possible.

If you need to miss a lab, let the instructor know. Late lab work will not be accepted. Instead, we will reweight the missing work to your quiz grades.

You may need to provide a doctor’s note if you need special accommodations due to a medical emergency.


Labs will consist of active practice, quizzes, and additional office hour time. I expect that you will run into problems while working on your assignments. Lab is the perfect time to ask for debugging advice and clarifications on the assignment. That’s what I’m here for.

At the end of the semester, we will use lab to share weekly progress on our projects.

Academic Integrity

At Bryn Mawr, we assume students are trustworthy and work with honesty and integrity. Look here for information about Bryn Mawr’s Honor Code.

As you progress in this course, you will see that programming is a creative process, similar to writing. The same problem can be solved in multiple ways. It’s essential that you develop your own skills for developing algorithms and implementing them through programs.

Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else’s code or let anyone else read your code. All code you submit should be your own with the following permissible exceptions: code distributed in class, and code found in the course text book. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.

  • Please don’t hesitate to ask the awesome teaching assistants (TAs) for help. They provide TA hours most week nights and are excellent mentors!

  • Please discuss the readings and associated topics with each other. Work together to understand the material. Reading groups to discuss the material are highly recommended — we will explore many ideas and it helps to have multiple people working together to understand them.

  • It is fine to discuss the topics covered in the homeworks, to discuss approaches to problems, and to sketch out general solutions. However, you MUST write up the homework answers, solutions, and programs individually without sharing specific details, mathematical results, program code, etc.

  • Under NO circumstances should you share computer code with another student. Similarly, you are not permitted to use code found on the internet for any of your assignments.

  • Exams, of course, must be your own individual work.

Academic Accommodations

All classes will be recorded and close-captioned. Links to lectures will be posted on slack.

Any student who has a disability-related need to record this class first must speak with the Director of Access Services, Deb Alder, as part of university policy. Class members need to be aware that this class may be recorded.

To receive an accommodation for quizzes and exams, you must have an Accommodation Letter from the Office of Student Disability Services and you need to contact us to work out the details of your accommodation at least two weeks prior to the activity. Forms can be emailed to me, the instructor.

You are also welcome to contact us privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Student Disability Services.

Students needing academic accommodations for a disability must first register with Access Services. Students can call 610-526-7516 to make an appointment with the Director of Access Services, Deb Alder, or email her at to begin this confidential process. Once registered, students should schedule an appointment with the professor as early in the semester as possible to share the verification form and make appropriate arrangements. Please note that accommodations are not retroactive and require advance notice to implement. More information can be obtained at the Access Services website. (

Academic and Student Support


Out of consideration of others, we ask that no one return to campus with COVID or any other easily communicable virus. If you are experiencing any symptoms, please self-test for COVID prior to your initial return to campus.

For a full outline of college policies, please read the documentation here.

Title IX

Bryn Mawr/Haverford College is committed to fostering a safe and inclusive living and learning environment where all can feel secure and free from harassment. All forms of sexual misconduct, including sexual assault, sexual harassment, stalking, domestic violence, and dating violence are violations of Bryn Mawr/Haverford’s policies, whether they occur on or off campus. Bryn Mawr/Haverford faculty are committed to helping to create a safe learning environment for all students and for the College community as a whole. If you have experienced any form of gender or sex-based discrimination, harassment, or violence, know that help and support are available. Staff members are trained to support students in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, and more.

The College strongly encourages all students to report any incidents of sexual misconduct. Please be aware that all Bryn Mawr/Haverford employees (other than those designated as confidential resources such as counselors, clergy, and healthcare providers) are required to report information about such discrimination and harassment to the Bi-College Title IX Coordinator.

Information about the College’s Sexual Misconduct policy, reporting options, and a list of campus and local resources can be found on the College’s website:

Links that are related to the course may be posted here. If you have suggestions for links, let us know.