CS 450 / 550 -- Introduction to Computer Graphics

Fall Quarter 2019


"Computer Graphics is the world's #1 enabling technology." -- Mike Bailey

"What will matter is what you learned and how you used it." -- poster outside my office

Handouts Classes Projects Grades VHR Piazza

This page was last updated: November 14, 2019


What We Will Be Doing This Quarter

This course is designed to introduce you to the field of computer graphics in general. You will study 3D graphics basics, and will write programs using the industry-standard API called OpenGL.

The goals of this course are to leave you "career-ready" (i.e., both work-ready and research-ready) for graphics programming. This class will also set you up for taking our other computer graphics classes.

CS 450/550 topics include:

Top Hat Information

Starting in FQ 2019, we will be using the Top Hat classroom response system in class. You will be able to submit answers to in-class questions using Apple or Android smartphones and tablets, laptops, or through text message. Top Hat requires a paid subscription. Visit OSU's support page for information on how to register and more: https://learn.oregonstate.edu/classroom-response/student-tools

An invitation to join the Top Hat course will be emailed to you, but if don't receive this email you can register by simply visiting our Canvas course site and clicking the Top Hat menu link: Unique Course URL
Note: our Course Join Code is 072762.

If you need technical support for Top Hat, please contact their Support Team directly by email support@tophat.com , selecting the in-app support button, or by calling 1--888-663-5491.

Graphics Thinking Comes First

The goal of this class, at least the first part of it, is to develop your "graphics thinking", that is, how to go from an idea in your head to actually getting the pixels on the screen. To get you to that state as quickly as possible, we will start by using a part of OpenGL that has been deprecated, but is easier to learn and understand. (In OpenGL, "deprecated" doesn't mean "gone away", it means "not recommended for efficiency reasons".) Later on, you will learn the recommended (i.e., efficient) ways of using OpenGL.


CS 261 -- Data Structures

Learning Objectives

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

  1. Explain the different coordinate systems used in computer graphics
  2. Describe the names and functions of the elements of the graphics pipeline, as well as the input and output of each stage
  3. Create a dynamic 3D scene using OpenGL
  4. Dynamically alter the viewing of a 3D scene
  5. Explain the elements of a computer graphics framebuffer
  6. Use OpenGL functions to create and apply single and compound transformations
  7. Use OpenGL to perform light-source shading
  8. Use OpenGL to perform texture mapping
  9. Explain the ways Vertex Buffer Objects can improve your display performance
  10. Create and use an OpenGL vertex and fragment shader
  11. Explain how the GLM computer graphics math library is used to create and apply transformations

In addition, those taking this course as CS 550 will also have demonstrated the ability to:

12. Read a computer-graphics-related research paper and write a 5-page analysis paper of it.

(I will make some papers available for you, or you can propose your own. It has to be a real research paper, though, not a blog post or just a web site. And, I need to pre-approve it.)

Here are Some Background Resources for You

Over the last couple of years, various faculty have been putting together mini-tutorials on topics that we (apparently) expect you to magically know, without us ever actually showing you. Here they are. We hope they help.


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  


The TAs for the course are Yeojin Kim, Prashant Kumar, and Yichuan Yin.

Combined Office Hours

Yeajin Kim Prashant Kumar Yichuan Yin Prof. Bailey
kimyea@oregonstate.edu kumarp@oregonstate.edu yinyic@oregonstate.edu mjb@cs.oregonstate.edu
  Mondays, 8:00-12:00 Mondays, 2:00-4:00 Mondays, 2:00-4:00
Tuesdays, 1:00 - 4:00 Tuesdays, 8:00-12:00 Tuesdays, 4:00-6:00 Tuesdays, 10:00-12:00
  Wednesdays, 8:00-12:00 Wednesdays, 2:00-6:00 Wednesdays, 10:00-11:00, 2:00-3:30
    Thursdays, 4:00-6:00  
Fridays, 8:00-11:00   Fridays, 2:00-4:00 Fridays, 11:30-12:30
Kelley Atrium Kelley 3040, desk 13 Kelley 3040, desk 6 Kelley 2117, desk 1 :-)

The Virtual Hand Raise (VHR)

It sometimes takes courage to ask a question in class. But, the worst thing of all is to not ask! So, this class also has 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 by email to the class or in class.


There is no purchased textbook for this course. Course material will consist of handouts, web pages, and notes taken in class.
Warning! Just because you are getting class notes doesn't mean you can skip class. There will be lots of project hints and clarifications in class. Also, there will be quiz questions and test questions that come from things we talked about in class, but were not in the notes. Every year, there are some people who lose a grade level because they missed those questions on the quizzes or tests.


A Brief History of Computer Graphics 1pp 2pp 4pp 6pp
The Computer Graphics Process 1pp 2pp 4pp 6pp
Getting Started with OpenGL Programming 1pp 2pp 4pp 6pp
GL Utility Toolkit (GLUT) 1pp 2pp 4pp 6pp
Sample Program sample.cpp    
Display Lists 1pp 2pp 4pp 6pp
Framebuffer 1pp 2pp 4pp 6pp
Texture Mapping 1pp 2pp 4pp 6pp
Lighting 1pp 2pp 4pp 6pp
A Brief Introduction to Casting Shadows with OpenGL 1pp 2pp 4pp 6pp
Shaders 1pp 2pp 4pp 6pp
Vertex Buffer Objects 1pp 2pp 4pp 6pp
GLM 1pp 2pp 4pp 6pp
OpenGL Transparency 1pp 2pp 4pp 6pp
Geometric Modeling 1pp 2pp 4pp 6pp
Rendering 1pp 2pp 4pp 6pp
Animation 1pp 2pp 4pp 6pp
3D Printing 1pp 2pp 4pp 6pp
Stereographics 1pp 2pp 4pp 6pp
Vulkan 1pp 2pp 4pp 6pp
More Information PDF      

Other Notes You Might Enjoy!

University Classes
Computer Graphics Shaders
Scientific Visualization
Parallel Programming
CS Skills for Simulation and Game Programming

Grades 2-12 Outreach


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 K-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.

Good References

Class Schedule

To see an Academic Year calendar, click here.

Class time is: Monday, Wednesday, and Friday, 1:00 - 1:50.
Unless otherwise specified, all classes will be in Gilbert Hall room 124.

Cancelled dates: 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 of where we'll be when -- it is only approximate.
  Date Topics
1 Sept 25 General course information. Alias web form.
A very brief history of computer graphics.
2 Sept 27 The Graphics Process.
The Graphics Pipeline.
Coordinate systems: Model, World, Eye, NDC, Clip, Screen.
3D coordinate systems.
3 Sept 30 Geometry vs. topology. glBegin-glEnd.
Compound transformations.
Project #1.
4 Oct 2 Projections.
3D viewing.
Display lists.
sample program.
5 Oct 4 sample program.
Project #2.
The rasterizer.
6 Oct 7 Color: RGB, CMYK, HSV.
7 Oct 9 Framebuffer. Texture mapping.
8 Oct 11 Texture mapping. Project #3.
9 Oct 14 Lighting.
10 Oct 16 Prof. Bailey out of the office -- no class today
But, I am leaving a video on Lighting.
11 Oct 18 Prof. Bailey out of the office -- no class today
12 Oct 21 Lighting. Project #4.
The EECS Networking Night is tomorrow tonight!
13 Oct 23 Shaders
The Career Fair is today!
14 Oct 25 Shaders.
Project #5.
15 Oct 28 Test #1 review.
Vertex Buffer Objects
16 Oct 30 Translucency
17 Nov 1 Test #1
18 Nov 4 Go over test answers
Geometric Modeling
19 Nov 6 Geometric Modeling
20 Nov 8 Geometric Modeling Realistic Rendering
21 Nov 11 OSU Veterans Day observance -- no class today
22 Nov 13 Prof. Bailey out of town -- no class today
But, I'm leaving you a video on realistic Rendering.
23 Nov 15 Prof. Bailey out of town -- no class today
But, I am leaving you a video on Realistic Rendering.
24 Nov 18 Prof. Bailey out of town -- no class today
But, I am leaving you a video on Animation.
25 Nov 20 Prof. Bailey out of town -- no class today
26 Nov 22 Animation: physics, keyframing, functional
27 Nov 25 3D Printing.
28 Nov 27 OSU Thanksgiving holiday -- no class today
29 Nov 29 OSU Thanksgiving holiday -- no class today
30 Dec 2 Stereographics.
31 Dec 4 Stereographics.
32 Dec 6 Class Evaluations.
Test #2 review.
More Information.
T2 December 13 Test #2 Friday, December 13, 7:30 - 9:00 AM.
(You can confirm this for yourself by going here.)


Project # Points Title Due Date
1 50 Draw Something Cool in 3D! Oct 7
2 100 Animate a Helicopter Oct 15
3 100 Texture Mapping Oct 23
4 100 Lighting Nov 4
5 100 Shaders Nov 13
6 100 Geometric Modeling Nov 26
FP 100 Final Project Tuesday, Dec 10, 23:59:59 -- No Bonus Days
550-only paper 100 Paper analysis Tuesday, Dec 10, 23:59:59 PM -- No Bonus Days

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

Projects are due at 23:59:59 on the listed due date, with the following exception:

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

  1. No more than 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 due date past the start of Test #2.

48 hours after an assignment's due date, I will go out to Teach and check the submission dates and dock the appropriate number of Bonus Days. This information will then show up on the online grade posting. It is up to you to track these and be sure you do not go over the limits!


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

Click here to see the current grade posting.

CS 450/550 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 afternoon at 2:00 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 you are taking this under (CS 450 or CS 550) 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).

Those taking the class as CS 550 will also do an essay summarizing a research paper. (Those taking the class as CS 450 will get a free 100 points for this assignment.)

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

Points Grade
980 B+
920 C+
860 D+

Downloadable Files

Windows Visual Studio 2015 Sample2015.zip Un-zip and double-click on the .sln file
Windows Visual Studio 2017 Sample2017.zip Un-zip and double-click on the .sln file
Windows Visual Studio 2019 Sample2019.zip Un-zip and double-click on the .sln file
Linux SampleLinux.tar Un-tar and type "make sample"

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 Online Graphics Information