Course Info

Professor: Aline Normoyle

Office:Park 204

Office hours:Tue 2:25-3:45pm, and by appointment

Optional Texts (available at the library):

  • Computer Animation, 3rd Edition by Rick Parent

  • Mathematics for 3D Game Programming and Computer Graphics, 3rd Edition by Eric Lengyel

Activity Location Time


Park 336 (and Zoom (Link posted on Slack))

Tuesday, Thursday, 12:55am-2:15pm EST


Park 230

Thursday, 2:25pm - 3:45pm EST

Professor Office Hours

Science Center (Labs/Atrium/Park 204)

Late afternoon Tues/Weds/Thurs. Check for my availability. No appointment necessary unless you would to talk privately.

Welcome to CS317

The goal of this course is to give students a foundation for programming 3D animated and interactive graphics.

In particular, we will "look under the hood" at the algorithms used by game engines and modeling tools to create authorable, interactive characters and special effects. Labs will give students hands on experience implementing algorithms in C++ as well as opportunities to derive their own unique animations. Topics will include mathematical foundations (coordinate systems, transformations, quaternions), interpolation techniques, keyframing, motion capture and procedural animation, and physically-based systems. Animation is hard work but nothing beats the joy and satisfaction of creating your own worlds and watching them come to life!

Prereqs: Discrete Math (CS 231) and Systems Programming (CS 223). Calculus and linear algebra is also helpful.


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

  • Development environment This refers to the tools we will use to write and run code. We will program in C++ in a Ubuntu programming environment (Park 230), although you may setup your windows or mac laptop for development if you like.

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

You will have everything you need to run your assignments in the CS labs in the Park Science Center (Park 230). If you would like to work on your own laptop, you can follow the instructions below:

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

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

  • Blender (Optional) 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.

Course Preview

Below are some of the demos you will implement during the semester.

Representing and blending between rotations


Bezier curves


Non-human characters


Squirrel paper doll based on forward kinematics.


Characters based on motion capture and hierarchical transformations.


Animations based on inverse kinematics


Figure 1. Crowds based on physically-based steering and flocking behaviors
Physics-based simulation


Motion blending, warping and splicing

splice gangnam walk


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

Week Date Topics, Resources, & ToDo


Aug 31, Sept 2

Course introduction, Hello World

Introduction. Preliminaries. Math and C++ review


Sept 7,9

First animations

Animation design patterns; Points, vectors, and time; Oscillations, forward and circular movement.


Sept 14,16


Linear and cubic interpolation. Bezier curves, Bernstein polynomials. De Casteljau’s algorithm.


Sept 21,23


Catmull-Rom splines. Hermite Splines.


Sept 28,30

Rotations I: Euler angles

Rotations. Matrices. Euler angles. Gimbol lock.


Oct 5,7

Rotations II: Quaternions

General angle-axis rotations. Quaternions. Slerp. Interpolating rotations


Oct 12,14 (Fall Break)




Oct 19,21


Slerp. Transformations. Coordinate systems revisited. Homogeneous coordinates. Skeletons and joints


Oct 28

Characters and motion

More Articulated Characters. Scene Graph. Examples.


Nov 2,4

Motion Editing

Matrix Stack. Fixed-frame vs. Key-framed motion. Motion editing: Blending. Splicing. Interpolation. Transitions. Reorienting a motion. Crossfading.


Nov 9,11

Inverse kinematics

Analytical method for two-link chain. CCD Algorithm.


Nov 16,18


Physics. Intro to rigid body simulation.


Nov 23 (No class Thursday, Thanksgiving)


A simple car model.


Nov 30, Dec 2

Boids, motion capture

Boids. Motion capture technologies.


Dec 7, Dec 9

Character animation in practice

Tools for character modeling, skinning, and keyframing. Character animation techniques in game engines.

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 Exam






Labs and class work

Exam and Quizzes

Quizzes will be given at the beginning of class on the days posted on the schedule. Quizzes are 30 minutes and will be done in groups. Students will go over the answers for quizzes in lab a week later.

There will be one final exam for the semester. Details and dates will be released during the semester. Please read the section on accomodations if you are in need of extra time. You must inform us of accommodations or conflicts at least 2 weeks in advance of the exam.

Quizzes and exams will be open book. You will be given sample questions beforehand to help you study. Warning! Do not rely heavily on your notes for quizzes. You will need to have concepts memorized in order to finish within the time limit.

Homeworks and exercises

This course features weekly lab exercises and assignments which are an important component of the class.

Labs will be used for quizzes, presenting work, and completing assignment work.

Class exercises will be passed out in class. These exercises are short and are intended to help you understand the concepts needed for exams and assignments.

Assignments will be posted Fridays and due Thursday night. You are strongly encouraged to start early so that you can ask questions. See the syllabus for links to the assignments. Assignments are open-source but should still be your own work.

You will submit your assignments electronically using Github.

Course Policies

The purpose of our course 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 aimed to be 10 hours per week.

Late Policy

You may request up to 2 late days on an assignment, provided you give advance notice ahead of time (e.g. plan ahead to see if/when you need more time for an assignment). Your lowest assignment grade will be dropped.

Resubmission Policy

In some cases, it is possible to re-submit course work to recover lost points due to errors. However, you may not re-submit work for which you have no initial submission. Nor will we accept re-submissions that are incomplete or show little improvement from the original. If you resubmit work, you must strive for full marks. You will need permission from the instructor to re-submit work.

Missed Quiz Policy

If you need to miss a quiz, you must make arrangements ahead of time to take it later. If you cannot give notice ahead of time because of a medical emergency, you will need to provide a doctor’s note to schedule a make-up quiz.

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 the class syllabus.

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 a course activity (such as more time on 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. (

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.