Description: 
The mathematical and algorithmic foundations of computer graphics.
Spatial data structures, object oriented programming in C++,
mathematics for graphics, 3D graphics API. This is the second of
two courses intended to provide technical foundations for DPA students
coming from the art or design fields. For undergraduates, it provides
a focused introduction to the technical foundations needed for
advanced study in digital production. The course will be challenging,
and fast paced, and will involve considerable outside work on the
computer.
The course is also intended for advanced undergraduate or graduate
students at Clemson who wish to develop an understanding of the use
and programming of visual computing.
This course is not intended for students who are Computer Science
or Computer Engineering students.

Prerequisites: 
DPA 400 or knowledge of C programming, Unix,
2D OpenGL, and approval of the instructor.

Required texts: 
None.

Suggested texts: 
 Weiss, Mark Allen,
Data Structures and Algorithm Analysis in C++,
3rd ed.,
2006.
ISBN: 032144146X
 Deitel & Deitel,
C++ How to Program (any edition), or try
Small C++ How to Program (a briefer edition at a savings).

Reference reading material: 
 Shreiner, Woo, Neider and Davis,
OpenGL Programming Guide,
The Official Guide to Learning Opengl,
Version 1.4, 4/E, Addison Wesley

Professor: 
Dr. Andrew Duchowski

Office: 
McAdams 309, 6567677,
duchowski[at]clemson.edu

Office hours: 
By appointment.

Objectives: 
This course is a second technical course on computing for graphics,
with the first course being DPA 400. This course builds on this
earlier foundation, and completes a comprehensive coverage of the
technical and computing background needed for the core courses in
the DPA Program. In this course, students will learn advanced topics
in C++ programming including concepts of objectoriented programming.
Projects will all make use of either 2D or 3D OpenGL for the
production of interactive graphics. In addition, students will learn
the mathematical foundations for computer graphics. This course
includes programming projects designed to promote familiarity with
2D and 3D graphics concepts.

Programming projects: 
All homework projects involve programming in C++ and require the
use of the OpenGL, and GLUT graphics APIs. All work should be done
under a version of the unix operating system. This would include
any version of Linux, or Mac OSX. However, before turning in an
assignment, the program must be compiled and tested under the
School of Computing Ubuntu distribution of the Linux operating system.
A working Makefile must be provided.
Programming projects will be submitted using the handin command on
the SoC linux system. In order to use handin, all students will need
to use their computer science account. All students enrolled in
DPA 401 or 601 will automatically be assigned CS accounts. You will
need to login early in the semester to change your password, or the
account may be expired. If you have problems logging in, send an
email to helpdesk@cs.clemson.edu from your Clemson email account,
or stop by 109 McAdams with a picture ID.

Assignment late policy: 
Late assignments will be accepted but points will be
deducted according to the formula (3n)^{3} where
n is the number of days late. Example: assuming assignments
are due on Tuesday, the point deduction is as follows:
Max points possible 
Day received 
Days late 
100  Tuesday  0 (due date) 
73  Wednesday  1 day late 
0  Thursday  2 days late 
Late assignments will receive lowest priority for grading and
returning.

Evaluation:
%  Grade 
90100  A 
8089  B 
7079  C 
6069  D 

Class Participation  10% 
Quizzes  10% 
Programming Projects  40% 
Midterm  15% 
Final Exam  25% 
600level students will be required to analyze and report on technical
papers in the area and complete advanced programming extensions.

Attendance: 
Roll will be taken for the first one or two weeks while
the class roll fluctuates. However, attendance is not required.
Absence, excused or not, does not change the responsibility for
assigned work.
Tests missed due to excused absences will normally result
in the test not being counted in the average grade (i.e., there will
normally be no makeup tests). An unexcused absence from a
test will normally result in a grade of zero for that test. Students
are expected to give at least one week advance notice for excused
absences.

Academic dishonesty: 
The University policies on academic dishonesty apply.
Publiclyavailable code or other material may be freely used if
appropriately attributed. Each student is responsible for protecting
his or her files from access by others. Work that is essentially
the same and submitted without proper attribution is considered
to be a violation of academic dishonesty policy by all those
submitting the work, regardless of who actually did the work.
 
Class cancelation: 
Students are expected to wait for 15 minutes after
the class beginning time before leaving if the instructor is late.
 
Topical outline: 
Lecture topics
 Quick review of C++ programming, OpenGL, GLUT
 2D OpenGL
 C++ variables, types, control statments
 C++ functions and scope
 C++ syntax
 Advanced C++ topics
 Pointers, dynamic allocation
 Lists, sorting, stacks, queues
 Trees, and operations on trees (recursion)
 File I/O
 More C++ topics
 Classes
 Copy constructor
 Function overloading
 Operator overloading
 Linear algebra for 3D graphics
 vectors
 matrices
 affine transformations
 Curves and surfaces
 polynomials
 piecewise polynomial curves
 Splines
 Bicubic patches
 3D graphics
 Transformations
 Simple 3D shpaes
 Projection systems/camera
 Lighting and surfaces
