Instructor: | Robert Bruce |
Office Location: | Duncan Hall, DH-282 |
Telephone: | |
Email: | |
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. |
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.
All course materials (handouts, assignments, lectures, etc.) will be posted to my course web site at: http://www.cs.sjsu.edu/~bruce/. 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 http://my.sjsu.edu to learn of any updates.
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.
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.
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.
none
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.
Linda Crotty, linda.crotty@sjsu.edu
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 http://www.cs.sjsu.edu/~bruce/ 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.
Points will be deducted for incomplete or partially working solutions. Point penalties vary with each assignment but are listed in the programming project assignment.
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.
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.
ASSIGNMENT OR EXAM | POINT VALUE |
---|---|
Programming Project 1 | 10 |
Programming Project 2 | 15 |
Programming Project 3 | 20 |
Programming Project 4 | 25 |
Midterm Exam | 15 |
Final Exam | 15 |
TOTAL POINTS | 100 |
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 |
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.
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.
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.
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.
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 http://www.sjsu.edu/gup/syllabusinfo/
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 |
MIDTERM EXAM |
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 |
Fall 2016, CS-116A:
Greensheet
Lectures:
Assignments:
Handouts:
Programs: