DPA 4000/6000
Syllabus

Description: The mathematical and algorithmic foundations of computer graphics. Object oriented programming in C++, basic mathematics for graphics, 3D graphics API. This is the first 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: Knowledge of C programming, Unix would be helpful.
Required texts:
Suggested texts:
  • Weiss, Mark Allen, Data Structures and Algorithm Analysis in C++, 3rd ed., 2006.
    ISBN: 0-321-44146-X
  • 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
Online discussion: DPA 4000/6000 Piazza
Office: McAdams 309, 656-7677, duchwoski[at]clemson.edu
Office hours: By appointment.
Objectives: This course is a first technical course on computing for graphics, with the second course being DPA 4001. This course provides the foundation for future 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 object-oriented 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 OS X. However, before turning in an assignment, the program must be compiled and tested under either the School of Computing Ubuntu distribution of the Linux operating system or the DPA Mac OS X operating system (preferred). 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 4000 or 6000 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 not be accepted.
Evaluation:
%Grade
90-100A
80-89B
70-79C
60-69D
Class Participation10%
Quizzes10%
Programming Projects40%
Midterm15%
Final Exam25%

6000-level 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. Publicly-available 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 (time permitting)
  • 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
  • GLUT
  • 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