CSE 8433 (Advanced Computer Graphics) Syllabus, Spring 2007

Dr. J. Edward Swan II
Course Time and Location
Tuesday and Thursday, 12:30 pm–1:45 pm, 103 Butler Hall
Office Hours and Location
Tuesday and Thursday, 1:45 pm–3:00 pm, 321 Butler Hall
Prerequisite Course
CSE 4413 / 6413 Computer Graphics, or equivalent
Required Text
Peter Shirley (and 7 co-authors), Fundamentals of Computer Graphics, 2nd Edition, A. K. Peters, 2005.
Additional Readings
As the semester progresses, I will likely assign additional readings from current and classic computer graphics papers and/or additional book chapters.  I will put copies of these papers on the course website.
Catalog Information
Three hours lecture.  Realistic, three-dimensional image generation; modeling techniques for complex three-dimensional scenes;  advanced illumination techniques; fractal surface modeling; modeling and rendering of natural phenomena.

Grading Scale


≥ 90% A
80%–89% B
60%–79% C
50%–59% D
< 50% F

Because my goal is for this course to be a collaborative environment, I will not grade the course on a curve, and thus students are not competing against each other.

Graded Activities

Programming Assignments 52%
Midterm Exam 16%
Class Presentation 16%
Final Project 16%

Programming Assignments: We will have 3−5 programming assignments during the semester.  These assignments will involve writing a simple ray tracer, and then successively adding additional features and capabilities.  Each programming assignment will count an equal weight for the final grade.  Programming assignments are discussed in more detail below. 

Midterm Exam: We will have one midterm exam, which will be closed-notes and closed-book.

Class Presentation: Towards the end of the semester, students will each present an advanced topic in computer graphics to the reset of the class.  This topic will be described in a book chapter and/or 2−4 papers; papers will be chosen from a mixture of "classic" and "new" papers that have been published in the computer graphics field. 

Final Project: Instead of a final exam, we will have a final project, in which students will choose, from a list of options, various advanced features and capabilities to add to their ray tracer.  At the end of the semester students will present their finished programs and discuss their generated images. 

Message Boards and Email

In this class, the WebCT message boards are the main communication interface the instructor and your fellow students.  Do not send email to the instructor with questions about the assignments; post these to the discussion boards instead.  Often, other students may be able to answer your question before the instructor.  My goal is for the course to build upon a collaborative environment.

Since there may be frequent list activity, check the boards at least once a day.  Students are responsible for knowing any material posted by the instructor.

The boards are a forum for discussion related to this class.  Therefore, do not post rude or irrelevant messages. In addition, while algorithms and approaches in general can be discussed on the assignment, exact or partial solutions (including code detailed snippets) are not allowed.  Everyone is to do their own work.  However, posting your sample images and the input files that generated them is encouraged!

Programming Assignments

Programming assignments will make up the bulk of the learning and the work in this class.  I can't stress enough how important the programming assignments are for learning computer graphics.

Machines, Languages, and Compilers

Students may use their own machines, or the machines in Butler 213.  These machines are accessible to any student in the course, and have the reference compilers and libraries listed below installed on the Windows and Linux partitions.

Students should use C++ for the assignments.  If a student wishes to use a different language (for example, Python or Java), discuss it with me --- my main concern will be whether we can work out a reasonable grading scheme.  In general I recommend C++ because (1) historically it has been the most widely used language in the graphics community (although this is changing), and (2) the primary disadvantage of ray tracing is that it is relatively slow, and so a fully compiled language such as C++ is preferred over interpreted or byte-compiled languages such as Python and Java. 

Students may use any compiler they desire to develop and debug the lab assignments.  However, when it is time to turn the assignments in, students' code must compile and link with the following reference compiler and library.  If the code doesn't compile and execute with the reference compiler and library, it won't be graded. 

The reference compiler is GNU g++ version 3.4.4.  This is generally the default compiler for Linux machines.  For a Windows machine, the easiest way to get g++ is by installing Cygwin.  The reference library is the standard math library, invoked by the linker command '-lm'.  Note that we will not be using OpenGL or DirectX in this course.


Real world programmers work in groups.  I encourage students to collaborate on programming assignments in terms of discussing algorithms and general approaches.  Students may also assist each other in program debugging. Students may engage in these activities through the message boards. 

However, the code for each assignment must be written individually by each student.  This means do not use source code downloaded off the Internet or accessed by other means, and don't use outside libraries except for the ones that I provide.  This is an important policy.  Not only will violators fail to learn the course material, but violators of this policy will be handled according to Mississippi State's Academic Honesty Policy 12.07.

Programming Assignment Grading

Submission: Programming assignments will be submitted electronically through the WebCT interface.  In general, programs will be due by 11:55 pm on the indicated date.

Late Submissions: Late programs will be penalized by 10% for each 24-hour period after their due date, including Saturday and Sunday.  In order for maximum learning to occur, programs should work completely.  If it doesn't work, turn it in late, but keep working on it.

Grading: Precise grading details will be provided on an assignment-by-assignment basis.  For some programming assignments, I will compile and execute your code, and then examine the generated images.  For other assignments, we will meet on the due date, and you will explain your images to to me.  In general, programming assignments will be graded on the following criteria:

  • Results: Does the program do what it is supposed to do?
  • Documentation and Program Structure: Does the code contain a sufficient quantity of meaningful comments and meaningful variable names?  Is it well structured and modular?
  • Demonstration of Knowledge: Does the code demonstrate that the student understands the assignment?
  • Reference Compiler and Library: As discussed above, if a program doesn't compile with the reference compiler and libraries, the student will loose the vast majority of possible credit for the assignment.

    Additional Policies

    Attendance and Audits: Except for exams, attending the lectures is not mandatory, but students are responsible for obtaining the course information on their own.  Attendance will not affect a student's grade.  However, I will take roll, and I will list absences on midterm and final grade reports.  Students who are auditing the course must attend at least 75% of the class meetings in order to receive a passing grade.

    Academic Honesty / Misconduct: Students are expected to maintain the standards of academic honesty that are described in the Department of Computer Science and Engineering's Academic Honesty Policy.  As described under the section on Programming Assignments above, I allow a greater degree of collaboration on programming assignments than the strictest possible interpretation of the department's honesty policy. 

    Personal Electronic Devices: Students must respect their fellow students and not disrupt class. Therefore, cell phones, pagers, other such alarms, or personal conversations which disturb the lecture are not allowed.  Students with personal laptops are encouraged to bring them to class; however, laptops are not required for this course.

    Grade of Incomplete (I): Incomplete grades will only be given in extreme circumstances, such as illness, death in a student's immediate family, or similar circumstances beyond a student's control, and furthermore will only be given upon the approval of Dr. Julia Hodges, the CSE department head. 

    Drop / Add Policy: This class follows Mississippi State University's Official Drop/Add Policy:

    Add/drop without penalty: A student has through the fifth class day into the semester to add a course and through the tenth class day to drop a course without being assessed a fee or academic penalty.

    Drop after the tenth class day through the 30th class day into the semester: A student who elects to drop a course during this period must receive the approval of his/her advisor, will be assigned a W on his/her academic record, and be assessed a fee. The advisor who permits the drop will specify its effective date.

    Drop after the 30th class day into the semester: A student cannot drop courses after this period except in documented cases of serious illness, extreme hardship, or failure of the instructor to provide significant assessment of his/her performance. A request to drop a course during this period must be approved by the student's advisor and academic dean. The dean who permits the drop will specify its effective date. A student receiving permission to drop will receive a W on his/her academic record and be assessed a fee.

    Faculty are expected to provide a student with significant evidence or assessment of his/her class performance within the first six weeks.

    Last modified: January 30, 2007