San José State University
College of Science / Department of Computer Science
CS-116A, Introduction to Computer Graphics, Section 1, Fall 2016

Course and Contact Information

Instructor: Robert Bruce
Office Location: Duncan Hall, DH-282
Office Hours: Mondays and Wednesdays 4pm-5pm, or by appointment
Class Days/Time: Monday and Wednesday, 6pm-7:15pm
Classroom: SCI-311
Prerequisites: MATH 31, MATH 129A, CS 146 (with a grade of "C-" or better in each) and previous programming experience in C/C++, or instructor consent.

Course Format

Technology Intensive, Hybrid, and Online Courses

This class is technology intensive. You will need an Intel x86 or compatible laptop or desktop machine. We will be working in a Linux development environment using OpenGL. You will be using command line tools such as Make, gcc, etc. You will need an internet connection to access materials on the course website and Canvas. I will be providing a 120GB solid state drive configured with Linux for you with a USB3.0 or two USB2.0 interfaces. Generally, Mac notebooks and Windows-based notebooks work fine. The most difficult task is getting the external Linux drive to boot into secure boot environments. All software and software development tools we will be using are open source. You are expected to program in the C or C++ programming languages for this course.

Faculty Web Page and MYSJSU Messaging

All course materials (handouts, assignments, lectures, etc.) will be posted to my course web site at: You will be using Canvas to submit your programs and receive feedback/grades on your assignments and exams. You are responsible for regularly checking with the email messaging system through MySJSU at to learn of any updates.

Course Description

Vector geometry, geometric transformations and the graphics pipeline. Basic raster graphics algorithms for drawing discrete lines, clipping, visible surface determination and shading. Display of curves and surfaces. Graphics data structures. Prerequisite: MATH 31, MATH 129A, CS 146 (with a grade of "C-" or better in each) and previous programming experience in C/C++, or instructor consent.

Course Learning Outcomes (CLO)

Upon successful completion of this course, students will be able to:

1. Course Learning outcome: Describe different color spaces.

2. Course Learning outcome: Describe the impact of shading in computer graphics.

3. Course Learning outcome: Compare and contrast vector and bitmap graphic file formats.

4. Course Learning outcome: Describe different techniques used in image compression.

5. Course Learning outcome: Explain how linear transformations are used in computer graphics.

6. Course Learning outcome: Create a three-dimensional OBJ file format visualizer.

7. Course Learning outcome: Create two-dimensional primitives including line segments, rectangles, ellipses, and bezier curves using OpenGL.

Required Texts/Readings


Computer Graphics with OpenGL (4th Edition) by Donald Hearn, M. Pauline Baker, and Warren R. Carithers. ISBN 0-13-605358-0

I've put one personal copy of this book on course reserves for twenty-four hour checkout from the SJSU King Library. Alternately, you can purchase this book from an online bookstore such as Amazon, Barnes and Noble, etc.

Other Readings


Other technology requirements / equipment / material

You will be provided with a 120GB solid state drive with a USB3.1 interface. This drive has been pre-configured with Linux Mint in a graphical X-windows environment along with a host of GNU development and programming utilities. You are expected to use this drive during lab times. This course has no service-learning components.

Library Liaison

Linda Crotty,

Course Requirements and Assignments

There are four programming projects in this course. Detailed instructions and specifications for each programming assignment will be posted to my SJSU faculty webpages at with adequate time for students to complete each assignment by the assignment deadline. Students are strongly encouraged to ask the instructor for clarification on each programming assignment specification.

There will also be one midterm and one final examination.

Incomplete assignments

Points will be deducted for incomplete or partially working solutions. Point penalties vary with each assignment but are listed in the programming project assignment.

Late assignments

Programming assignments submitted after their specified due date will be considered late and subject to minimally 50% loss in points (additional points will be deducted for incomplete projects as noted above). For example, if programming project 1 is submitted late, it will be worth, at most, 5 points.

Makeup Exams

Exams are closed note and closed book. Exams must be your own work. Makeup exams will only be given in extraordinary circumstances with instructor approval; instructor MUST be notified in advance.

Grade breakdown

Programming Project 1 10
Programming Project 2 15
Programming Project 3 20
Programming Project 4 25
Midterm Exam 15
Final Exam 15

Grading Scale:

Percent range Grade
97% to 100% inclusive A+
93% to 96% inclusive A
90% to 92% inclusive A-
87% to 89% inclusive B+
83% to 86% inclusive B
80% to 82% inclusive B-
77% to 79% inclusive C+
73% to 76% inclusive C
70% to 72% inclusive C-
67% to 69% inclusive D+
63% to 66% inclusive D
60% to 62% inclusive D-
Below 60% F

Final Examination

There will be a final exam on Wednesday, December 14 in SCI-311 at 5:15pm. The final exam will be based on in-class lecture material and material from our book. The final exam will be comprised of 15 multiple choice questions. The final exam is worth 15% of your overall grade.

Grading Information

Each programming assignment will include detailed specifications. I expect each of your assignments to compile without syntax errors or logic errors. Points will be deducted for programs that do not meet the specifications and/or programs containing syntax errors.

Determination of Grades

There will be four programming projects:

Programming Project 1: Drawing Mandelbrot fractals (10 points)
Programming Project 2: Simulated flying over surface (15 points)
Programming Project 3: A visualizer for OBJ files (20 points)
Programming Project 4: A 2D paint and draw program (25 points)

Midterm Exam: 15 points
Final Exam: 15 points

The total points possible for this class are 100. This means programming project 1 is worth 10% of your overall grade, programming project 2 is worth 15% of your overall grade, programming project 3 is worth 20% of your overall grade, programming project 4 is worth 25% of your overall grade, the midterm exam is worth 15% of your overall grade, and the final exam is worth 15% of your overall grade.

As noted above, programs that are submitted after the due date will be subject to a minimum 50% point loss. For example, programming project 1 submitted late would be worth a maximum 5 points.

Classroom Protocol

Regular class attendance is highly recommended. Please plan to arrive early or on-time. Arriving to class late is disruptive to students and the instructor. Students are responsible for knowing all materials covered through in-class lectures and assigned readings. Please be mindful of fellow students and the instructor by not talking on mobile phones during instruction. Students are expected to leave the class quietly in the event they must use their mobile phones.

University Policies

Per University Policy S16-9, university-wide policy information relevant to all courses, such as academic integrity, accommodations, etc. will be available on Office of Graduate and Undergraduate Programs' Syllabus Information web page at

CS-116A / Introduction to Computer Graphics, Fall 2016, Course Schedule

Course Schedule

Week Date Topics, Readings, Assignments, Deadlines.
1 Wednesday,
August 24
Topic: Introduction and course objectives.
1 Monday,
August 29
Topic: Introduction to OpenGL and GLUT.
Readings: pp. 35-50 of Computer Graphics with OpenGL.
2 Wednesday,
August 31
Topic: Fractals.
Readings: pp. 695-722 of Computer Graphics with OpenGL.
2 Monday,
September 5
CAMPUS CLOSED. No office hours today.
Note: Last day to drop course is September 6!
3 Wednesday,
September 7
Topic: Splines.
Readings: pp. 411-461 of Computer Graphics with OpenGL.
3 Monday,
September 12
Topic: Mesh: Vertices, Edges, and Faces.
Readings: none.
4 Wednesday,
September 14
Topic: Event driven programming, capturing keypresses and mouse clicks.
DUE: Programming Project 1
4 Monday,
September 19
Topic: Camera and clipping plane. (Talk about Interactive program to adjust frustum, near, and far clipping planes.)
Readings: pp. 307-357 of Computer Graphics with OpenGL.
5 Wednesday,
September 21
Topic: Animating the camera.
Readings: none.
5 Monday,
September 26
Topic: Light and Color (part 1 of 2).
Readings: pp. 579-597 of Computer Graphics with OpenGL.
6 Wednesday,
September 28
Topic: Light and Color (part 2 of 2).
Readings: pp. 507-529 of Computer Graphics with OpenGL.
6 Monday,
October 3
Topic: Graphics File Formats. (Talk about Alias/Wavefront OBJ file format.)
Readings: pp. 767-782 of Computer Graphics with OpenGL.
DUE: Programming Project 2
7 Wednesday,
October 5
Topic: Creating mouse-driven menus in GLUT.
Readings: none.
7 Monday,
October 10
Topic: Developing Graphical user interface widgets with OpenGL.
Readings: none.
8 Wednesday,
October 12
Question and Answer session / review for midterm exam.
8 Monday,
October 17
9 Wednesday,
October 19
Topic: Hidden surface removal.
Readings; pp. 479-503 of Computer Graphics with OpenGL.
9 Monday,
October 24
Topic: GLSL: OpenGL Shading Language (part 1 of 2).
Readings: pp. 665-694 of Computer Graphics with OpenGL.
10 Wednesday,
October 26
Topic: GLSL: OpenGL Shading Language (part 2 of 2).
Readings: none.
10 Monday,
October 31
Topic: Accelerated Graphics Hardware (GPU).
Readings: pp. 9-33 and pp. 803-812 of Computer Graphics with OpenGL.
11 Wednesday,
November 2
Topic: Metaballs and Blobbies.
Readings: none.
11 Monday,
November 7
Topic: Linear transformations.
Readings: pp. 279-305 of Computer Graphics with OpenGL.
DUE: Programming Project 3
12 Wednesday,
November 9
Topic: Coordinate systems in OpenGL.
Readings: none.
12 Monday,
November 14
Topic: Introduction to Blender.
Readings: none.
13 Wednesday,
November 16
Topic: Algorithmic animation and modelling (part 1 of 2).
Readings: none.
13 Monday,
November 21
Topic: Algorithmic animation and modelling (part 2 of 2).
Readings: none.
14 Wednesday,
November 23
NO LECTURE TODAY. I will be in my office during office hours.
14 Monday,
November 28
Topic: Squash, Stretch, and Bounce: The twelve principles of animation.
Readings: none.
15 Wednesday,
November 30
Topic: Character Rigging for animation.
Readings: none.
15 Monday,
December 5
Topic: Augmented Reality and Virtual Reality.
Readings: none.
16 Wednesday,
December 7
Topic: Introduction to WebGL.
Readings: none.
16 Monday,
December 12
Question and Answer session / review for final exam.
DUE: Programming Project 4
Final Exam Wednesday,
December 14
SCI-311 at 5:15PM