CS 491 -- CS Skills for Simulation and Game Programming

Fall Quarter 2019


Handouts Classes Grades VHR Piazza

This page was last updated: October 15, 2019


What We Will Be Doing (and Not Doing) This Quarter

This is not a game-design course. It is also not a game-creation course. We will not be creating any games. Game and simulation programming is very much a data-, math-, and physics-intensive activity. A certain number of actions must be produced, and producing them by hand is hard. Also, producing them by hand often leads to sucky-looking content.

It's much easier, and produces better-looking results, if we can convince the computer to do the right things for us. But, it takes special knowledge to do that.

That's why you are here. This is a middleware CS course that will fill in many of those special knowledge missing pieces.

Even if you aren't looking for a job in one of these fields, you will likely find these varied topics useful and enjoyable anyway.

CS 491 topics include:

By the way, this is only a little bit a computer graphics course. We will not be writing graphics programs, but you will sometimes be given graphics program skeletons to test your coding. If you want computer graphics, either in addition to this course or instead of, CS 450 is the class you want.

If you need a place to do your programming assignments, you can get access to the Windows 10-based graphics systems in OSU's Computer Graphics Education Lab (CGEL) in Batcheller Hall 244.

Access to the CGEL is by your OSU ID card, which also acts as a card key. The first full week of classes, I will give the EECS Main Office a list of who is in this class, so that they can enable your cards for the CGEL.

Warning! Every so often, I reserve the CGEL for a grades 2-12 outreach activity. (Why? Because I want more "you"s in our major!) I will let you know when one of these is coming up.


Yes, we will be using calculus!


The class is being taught by Professor Mike Bailey.

Office: Kelley 2117 (2nd floor, south side)
E-mail: mjb@cs.oregonstate.edu
Phone: 541-737-2542

Office Hours:

Mondays 2:00 - 4:00 Kelley 2117
Tuesdays 10:00 - 12:00 Kelley 2117
Wednesdays 10:00 - 11:00 and 2:00 - 3:30 Kelley 2117
Fridays 11:30 - 12:30 Kelley 2117
  or, anytime my office door is open  
  or, by appointment -- send email  


Our TA for this class is Jian Tang. tangjian@oregonstate.edu . He is a computer graphics graduate student and has a lot of experience writing his own game engine. We are lucky to have him!

Combined Office Hours

Jian Tang Prof. Bailey
tangjian@oregonstate.edu mjb@cs.oregonstate.edu
Mondays, 12:30-5:30 Mondays, 2:00-4:00
  Tuesdays, 10:00-12:00
Wednesdays, 11:00-12:30 Wednesdays, 10:00 - 11:00 and 2:00 - 3:30
Fridays, 11:00-3:30 Fridays, 11:30-12:30
CGEL (Batcheller 244) Kelley 2117

The Virtual Hand Raise (VHR)

I recognize that it takes a certain amount of courage to ask a question or express an opinion in class. But, the worst thing of all is to not say anything! So, this class has a feature called the Virtual Hand Raise. Click here to get into it. It will allow you to send me a question or comment, completely anonymously. I will answer questions submitted this way at the start of the next class, or if it's urgent, I will email to the entire class.


There is no purchased textbook for this class. Instead, the material will consist of notes and web pages.

Warning! Warning! Warning! Just because you have notes doesn't mean you can skip class! The notes are just enough so that you can listen and discuss more, and write less. They are not meant to be complete. We will add to them in class! Tests will include material not written in the notes, but covered in class.

Every year, some people get an embarassingly bad grade in this class because they don't come to class. That is especially sad for those who envision a career in the gaming world, as this is our only CS class with the actual word "Game" in the title.

Class Note Handouts

Most notes are given in one, two, four, or six slides per page formats. This is so that you can make the readability vs. print-pages trade-off yourself.

2016 Game Career Guide PDF      
The Premise Behind CS 491 Topics PDF      
Parametric Lines 1pp 2pp 4pp 6pp
Vectors 1pp 2pp 4pp 6pp
GLM 1pp 2pp 4pp 6pp
A short GLM primer Here      
Matrices 1pp 2pp 4pp 6pp
Transformations 1pp 2pp 4pp 6pp
Forward Kinematics 1pp 2pp 4pp 6pp
Kinematic Physics 1pp 2pp 4pp 6pp
Inverse Kinematics 1pp 2pp 4pp 6pp
Newton's Method 1pp 2pp 4pp 6pp
Particle Systems 1pp 2pp 4pp 6pp
Keyframe Animation 1pp 2pp 4pp 6pp
Dynamic Physics 1pp 2pp 4pp 6pp
Collision Avoidance 1pp 2pp 4pp 6pp
Meshes of Springs 1pp 2pp 4pp 6pp
Collision Physics 1pp 2pp 4pp 6pp
Collision Detection 1pp 2pp 4pp 6pp
More Information PDF      

Guest Speaker Note Handouts




Class Schedule

To see an academic year calendar, click here.

Class time is: Monday, Wednesday, and Friday, 9:00 - 9:50. Unless otherwise specified, all classes will be held in Owen 103.

Cancelled dates: Oct 9, Oct 16, Oct 18, Nov 11, Nov 13, Nov 15, Nov 18, Nov 20, Nov 27, Nov 29

Note: this schedule is my best guess on where we'll be -- it is only approximate.

1 Sept 25 Introductions. Discussion of class objectives and how we will go about it.
Project #1.
Using the parametric line equation.
2 Sept 27 Vectors, I
Project #1
3 Sept 30 Vectors, II
Here is a short GLM primer
4 Oct 2 Matrices
Project #2
5 Oct 4 Transformation matrices
Project #2
6 Oct 7 Forward Kinematics
7 Oct 9 Prof. Bailey out of the office -- no class today
Kinematic acceleration physics -- projectile motion
8 Oct 11 Kinematic acceleration physics, II
9 Oct 14 Inverse Kinematics
10 Oct 16 Prof. Bailey out of town -- no class today
11 Oct 18 Prof. Bailey out of town -- no class today
12 Oct 21 Inverse Kinematics, II
The Networking Night is tomorrow tonight!
13 Oct 23 Brian Apgar, Zynga-Eugene, speaking on:
"How Running A Live Game Impacts Your Code"

The Engineering Career Fair is today!

14 Oct 25 Solving nonlinear equations -- Newton's Method
15 Oct 28 Test #1 review.
Particle systems
16 Oct 30 Dan White, Pipeworks, speaking on:
"Engineering at a Games Company: What do we do?"
17 Nov 1 Test #1
18 Nov 4 Go over test answers
Particle systems
19 Nov 6 Keyframe Animation
20 Nov 8 Keyframe Animation, II
Mechanical dynamics
21 Nov 11 OSU Veterans Day observance -- no class today
22 Nov 13 Prof. Bailey out of town -- no class today
23 Nov 15 Prof. Bailey out of town -- no class today
Video on Mechanical Dynamics
24 Nov 18 Prof. Bailey out of town -- no class today
But, I'm leaving you a video on Functional Animation
25 Nov 20 Prof. Bailey out of town -- no class today
But, I'm leaving you a video on Functional Animation
26 Nov 22 Meshes of Springs
27 Nov 25 Meshes of Springs
28 Nov 27 Thanksgiving Holiday -- no class today
29 Nov 29 Thanksgiving Holiday -- no class today
30 Dec 2 Collision Physics
31 Dec 4 Collision Detection
32 Dec 6 Class Evaluations.
Test #2 review.
Where to find More Information.
T2 Dec 10 Test #2 Tuesday, December 10, 6:00 - 7:30 PM.
(You can confirm this for yourself by going here.)


Project # Points Title Due Date
1 60 Using GLM to manipulate 3D Vectors October 7
2 80 Using GLM to Manipulate Matrices and Transformations October 14
3 100 Forward Kinematics October 23
4 100 Collisions and Bouncing November 4
5 100 Particle system November 14
6 100 Keytime Animation November 26
7 100 Mesh of Springs December 9, 23:59:59 -- No Bonus Days

Projects are due at 23:59:59 on the listed due date.

Project Turn-In Procedures

Bonus Days and Late Assignments

"I love deadlines. I like the whooshing sound they make when they fly by."
-- Douglas Adams

Each of you has been granted five Bonus Days, which are no-questions-asked one-day extensions which may be applied to any project, subject to the following rules:

  1. Up to 2 Bonus Days may be applied to any one project
  2. Bonus Days cannot be applied to tests
  3. Bonus Days cannot be applied such that they extend a project past the start of Test #2 during Finals Week

Click here to get a copy of the Bonus Day Submission Form. Fill this out and turn it in the next class period after turning in your project.


Grades will be posted through this web page. To protect your privacy, they will be posted by your alias that you give me in Project #1.

Click here to see the current grade posting. CS 491 will be graded on a fill-the-bucket basis. There will be 7 projects, 10 quizzes (weeks 0-8, 10), and two tests. You get to keep all the points you earn.
The quizzes will be done via Canvas. They will open each Friday morning at 10:00 AM and close Sunday night at 23:59:00. Canvas is very unforgiving about due times -- don't push it.

... with the exception of Weeks #0 and #9:

Quiz #0 is due to me by 4:00 PM on Friday, October 4. Fortunately, it is not too hard:

  1. Get a 3"x5" index card (I'll give you one the first day of class).
  2. Print your name neatly at the top (holding the card horizontally).
  3. Print the course number (CS 491) neatly next to your name.
  4. Also, printing neatly, tell me why you are taking this class. What do you hope to get out of being here?
  5. Be honest -- no sucking up!
  6. Bring the card to my office (Kelley 2117: second floor, south side) sometime when I am there. (Don't throw it under the door.)

If you are taking both of my classes this quarter, please fill out an index card for each.

There is no quiz for Week #9 (the week of Thanksgiving).

There are 2 Guest Speakers, and you get 5 points each for attending their lectures.

Your final grade will be based on your overall class point total. Based on an available point total of 950 grade cutoffs will be no higher than:

Points Grade
900 B+
850 C+
800 C-
775 D+

You will notice that these cut-offs are not 90-80-70-... This is because I am going to do a "soft-grade" on your programming projects, i.e., if it works, you get full credit. A "hard-grade" would look at your programming style, etc., which would allow more of a traditional grading scale.

Class Rules

Students With Disabilities

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.

Religious Holidays

Oregon State University strives to respect all religious practices. If you have religious holidays that are in conflict with any of the requirements of this class, please see me immediately so that we can make alternative arrangements.

Life Events

As {John Lennon? Allen Saunders?} has said: "Life is what happens to you while you're busy making other plans". I care about you as a person. When life happens to you, send me an email and come see me. I might be able to help, I might not. But I surely can listen. You are not alone.

Reach Out for Success

University students encounter setbacks from time to time. If you encounter difficulties and need assistance, it's important to reach out. Consider discussing the situation with me or an academic advisor. Learn about resources that assist with wellness and academic success at http://oregonstate.edu/ReachOut. If you are in immediate crisis, please contact the Crisis Text Line by texting OREGON to 741-741 or call the National Suicide Prevention Lifeline at 1-800-273-TALK (8255)

Basic Needs

Any student who has difficulty affording groceries or accessing sufficient food to eat every day, or who lacks a safe and stable place to live, is urged to contact the Human Services Resource Center (HSRC) for support: hsrc@oregonstate.edu, 541-737-3747. The HSRC has a food pantry, a textbook lending program, and other resources to help. Furthermore, if you are comfortable doing so, please come talk with me. I will do everything I can do to help you.

Other Useful URLs Related to Simulation and Game Development: