CS 491 -- CS Skills for Simulation and Game Programming

Fall Quarter 2015


Classes Grades VHR

This page was last updated: December 11, 2015


Prof. Bailey's Finals Week Office Hours are:
Monday, Dec 7 1:00 - 2:00 Office (Kelley 2117)
Tuesday, Dec 8 10:00 - 12:00 Office (Kelley 2117)
Wednesday, Dec 9 1:00 - 3:00 Office (Kelley 2117)
or, anytime my office door is open

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 thing 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 graphics systems in OSU's Computer Graphics Education Lab (CGEL) in Batcheller Hall 244.


Yes, we will be using calculus!

Learning Objectives

Upon completion of the course, students will have demonstrated the ability to:

  1. Manipulate geometry using vectors and transformation matrices
  2. Solve for the motion of Forward Kinematic systems
  3. Solve for the motion of Inverse Kinematic systems
  4. Perform constant-acceleration physics with bouncing
  5. Perform collision avoidance
  6. Create a keyframed animation
  7. Create a 3D particle system
  8. Model various physical phenomena as meshes


The class is being taught by Professor Mike Bailey.

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

Office Hours:

Mondays 10:15 - 12:30 My office (Kelley 2117)
Wednesdays 2:00 - 4:00 My office (Kelley 2117)
Thursdays 10:00 - 12:00 My office (Kelley 2117)
    or, anytime my office door is open
    or, by appointment -- send email


Our TA for this class is Jeff Juozapaitis:


Jeff's Office Hours are:
Mondays 3:00 - 5:00 Kelley Atrium
Fridays 4:00 - 6:00 Kelley Atrium

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 will be no purchased textbook for this class. Instead, the material will consist of my 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 lots 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

Warning: Please don't print these until you are told to. Some of them are still being worked on. They are here just to show you roughly where we are headed. Comments and suggestions on these notes are always welcome.

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

2015 Game Career Guide PDF    
The Premise Behind CS 491 Topics PDF    
Parametric Lines 1pp 2pp 6pp
Vectors 1pp 2pp 6pp
Newton's Method 1pp 2pp 6pp
Matrices 1pp 2pp 6pp
Transformations 1pp 2pp 6pp
Forward Kinematics 1pp 2pp 6pp
Kinematic Physics 1pp 2pp 6pp
Inverse Kinematics 1pp 2pp 6pp
Particle Systems 1pp 2pp 6pp
Keyframe Animation 1pp 2pp 6pp
Dynamic Physics 1pp 2pp 6pp
Collision Avoidance 1pp 2pp 6pp
Meshes of Springs 1pp 2pp 6pp
Collision Detection and Bouncing 1pp 2pp 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 lectures will be held in Cordley 3121.

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.
Football vs. Stanford at 7:00 tonight. You might want to stay away from the bookstore. Also, be aware that some parking lots (e.g., Reser) will close during the day.
2 Sept 28 Vectors, I
Project #1
3 Sept 30 Vectors, II
Solving nonlinear equations -- Newton's Method
4 Oct 2 Matrices
Project #2A
5 Oct 5 Transformation matrices
Project #2B
6 Oct 7 Forward Kinematics
7 Oct 9 Prof. Bailey out of town -- no class today
8 Oct 12 Kinematic acceleration physics -- projectile motion
9 Oct 14 Prof. Bailey out of town -- no class today
10 Oct 16 Prof. Bailey out of town -- no class today
11 Oct 19 Kinematic acceleration physics, II
12 Oct 21 Dan White, Pipeworks, speaking on:
Game Engines: Why and What
The Senior Dinner is tonight!
The Engineering Career Fair is tomorrow!
13 Oct 23 Test #1 review.
Inverse Kinematics
14 Oct 26 Inverse Kinematics
15 Oct 28 Test #1
16 Oct 30 Go over test answers
Inverse Kinematics
17 Nov 2 Brian Apgar, Zynga-Eugene, speaking on:
How the Game Industry Works
18 Nov 4 Particle systems
The Open Textbook Rally is today at 1:00 -- attend and show your support!
19 Nov 6 Particle Systems
Keyframe Animation
20 Nov 9 Keyframe Animation
21 Nov 11 Veterans Day holiday -- no class today
22 Nov 13 Mechanical dynamics
23 Nov 16 Mechanical dynamics
24 Nov 18 Functional Animation, Collision Avoidance
25 Nov 20 Meshes of Springs
26 Nov 23 Meshes of Springs
27 Nov 25 Thanksgiving Holiday -- no class today
28 Nov 27 Thanksgiving Holiday -- no class today
29 Nov 30 Collisions
30 Dec 2 Test #2 review.
31 Dec 4 Class Evaluations.
Where to find More Information.
T2 Dec 8 Test #2 Tuesday, December 8, 6:00 - 7:30 PM.
(You can confirm this for yourself by going here.)


Project # Points Title Due Date
1 50 3D Vector C++ Class October 5
2A 35 Matrix C++ Class October 13
2B 40 (Matrix and) Transformation C++ Class October 18
3 100 Forward Kinematics October 25
4 100 Collisions and Bouncing November 5
5 100 Particle system November 14
6 100 Keyframe Animation November 24
7 100 Mesh of Springs December 7

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

Bonus Days

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.

Project Turn-In Procedures


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 8 projects, two tests, 10 quizzes, and speaker-attendance. You get to keep all the points you earn.
The quizzes will be done via Canvas. They will open on Friday evenings and close Sunday nights.

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 925 grade cutoffs will be no higher than:

Points Grade
875 B+
825 C+
775 C-
750 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 are collaborative efforts between students, faculty and Disability Access Services (DAS). Students with accommodations approved through DAS are responsible for contacting the faculty member in charge of the course prior to or during the first week of the term to discuss accommodations. Students who believe they are eligible for accommodations but who have not yet obtained approval through DAS should contact DAS immediately at 541-737-4098. OSU students can also apply to DAS and request accommodations at the Getting Started with DAS page.

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.

Other Useful URLs: