Spring 2020 (Section 1, 15826) - 3 credit hours
JMU CS488 - Computer Graphics Applications
Help Policies Solutions Study-Aids Tools
Syllabus


Description: This course is an introduction to 2-D and 3-D computer graphics that covers the material from the bottom up. That is, it starts with the mathematical foundations, then explores the algorithmic issues that arise when implementing those mathematical concepts, and then considers the practice of developing graphical applications (using existing libraries). It covers both pipeline algorithms and tracing algorithms.
Outline: This course is organized as follows, though specific topics and dates may change. (Readings are listed in the right-most column.)
Part I: Preliminaries: C/C++ and Linear Algebra
1/13 About CS488 and An Introduction to Classes and Objects in C++
1/15 I/O in C++
1/17 Memory Allocation
1/22 2D Vector Arithmetic - Part I K4
1/24 Operator Overloading and Exceptions
1/27 2D Vector Arithmetic - Part II
1/29-1/31 Matrix Arithmetic K2
2/3-2/5 Templates , More on Classes and Objects in C++ and Lambda Expressions in C++
2/7 Discussion of PA3
2/10 3D Vector Arithmetic
Part II: Foundations of 2D Graphics
2/12 2D Analytic Geometry (i.e., Graphics Primitives)
2/14-2/17 2D Rasterization
2/19 2D Transformations
2/21 Exam 1
Part III: Foundations of 3D Graphics
2/24 3D Analytic Geometry and 3D Transformations
2/26 Projections: Overview and Classical M&S7
2/28 Viewing
Part IV: An Introduction to Pipeline Algorithms
3/2 Hidden/Visible Objects
3/4-3/6 Lighting
3/16-3/20 (Cancelled) Transitioning to Online Content Delivery Due to COVID-19
3/23 (Online) Shading
3/25 (Online) Curves and Surfaces
3/27 (Online) Cartographic Projections: Background and Examples
3/30 (Online, Synchronous) Discussion of PA9
4/1 (Online) Exam 2
Part V: Applied Pipeline Graphics - Classic OpenGL
4/3 (Online) GLUT Basics and OpenGL Basics RB1 , RB2 and RB3
4/6 (Online) Animation in OpenGL and Transformations in OpenGL
4/8 (Online) Lighting in OpenGL and Texture Mapping RB5
4/10 (Online) Textures in OpenGL and Object-Oriented Animation RB9
4/13 (Online) OpenGL: Display Lists , Text , Curves , Surfaces and Fog RB6 and RB7
Part VI: Applied Pipeline Graphics - Modern OpenGL
4/15 (Online) Overview of the Pipeline and Vertex Specification
4/17 (Online) Vertex Shaders and Fragment Shaders
4/20 (Online) Using Shaders
Part VII: An Introduction to Tracing Algorithms
4/22 (Online) Introduction and 3D Computational Geometry
4/24 (Online) Ray Tracing
4/27 (Online) Path Tracing
Part VIII: Final Projects
4/29 (Online) Work on Final Project
5/4/2020 (Online, Synchronous) Final Presentations (13:00-15:00)

Attendance at lectures is not mandatory but is strongly encouraged. You are expected to come to class prepared to ask and answer questions. Hence, you should complete the readings on a topic before it is discussed in lecture.

Grading: Final grades will be based on your performance on: 2 in-class exams (30% each) , several assignments (20% total) and 1 final project (20% total).
Programming Assignments: 9 programming assignments will be assigned during the semester. Note that their due dates are subject to change.
Programming Assignment 1 ; Due: 1/22, 11:00PM(C/C++ Basics)
Programming Assignment 2 ; Due: 1/29, 11:00PM(Vector Arithmetic)
Programming Assignment 3 ; Due: 2/5, 11:00PM(Matrix Arithmetic)
Programming Assignment 4 ; Due: 2/12, 11:00PM(Specialization in C++)
Programming Assignment 5 ; Due: 2/19, 11:00PM(Templates and Type Safety in C++)
Programming Assignment 6 ; Due: 2/28, 11:00PM(2D Rasterization)
Programming Assignment 7 ; Due: 3/6, 11:00PM(Extended to 3/29 11:00PM)(Transformations and Projections)
Programming Assignment 8 ; Due: 3/20, 11:00PM(Extended to 3/29 11:00PM)(Hidden Lines/Surfaces)
Programming Assignment 9 ; Due: 3/29, 11:00PM(Lighting and Shading)

Make sure you read and understand all of the policies related to programming assignments.

Office Hours: You may meet with Prof. Bernstein during his scheduled office hours or you may schedule an appointment with him.

Copyright 2020