Syllabus: CSE 8433 Advanced Computer Graphics, Spring 2011

Dr. J. Edward Swan II <>
Spring 2011
Course Time and Location
Tue and Thu, 3:30 pm–4:45 pm, 103 Butler Hall
Office Hours and Location
Tue and Thu, 4:45 pm–6:00 pm, 103 Butler Hall
Course Prerequisites
CSE 4/6413 Computer Graphics, or equivalent.
Catalog Description
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. 
Required Text
Peter Shirley and Steve Marschner (and 10 co-authors), Fundamentals of Computer Graphics, 3rd Edition, A. K. Peters, 2009.

Grading Scale

90%–100% A
80%–89% B
60%–79% C
50%–59% D
0%–49% 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 written midterm exam.

Class Presentation: Towards the end of the semester, students will each present an advanced topic in computer graphics to the rest 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. 

Discussion Board and Email

In this class, my goal is for the myCourses discussion board to be the main communication interface between myself, you, and your fellow students.  Don't immediately send me email with questions about the assignments; first try posting your question to the discussion board.  Often, other students will be able to answer your question before I could.  My goal is for the course to build upon a collaborative environment.

Since there may be frequent list activity, check the message board at least once a day, especially near programming assignment deadlines.  You are responsible for knowing any material that I post.

The discussion board is a forum for issues 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 highly 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

This is a programming-intensive class, and students are highly encouraged to use their own machines.  In the past departmental machines have been available for students who did not have their own machine; please talk to me right away if you do not have a machine that you can use.

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, I won't be able to grade it! 

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.  I believe that g++ is also the default compiler for Macs.  The reference library is the standard math library, invoked by the linker command '-lm'.  Note that we will not be using OpenGL, DirectX, or any other graphics library 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; violations will be considered academic misconduct.

Programming Assignment Grading

Submission: Programming assignments will be submitted electronically through the myCourses interface.

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 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, you will loose the vast majority of possible credit for the assignment.

Academic Honesty / Misconduct and Collaboration

In this course, students are expected to uphold the Mississippi State University Honor Code:

"As a Mississippi State University student I will conduct myself with honor and integrity at all times. I will not lie, cheat, or steal, nor will I accept the actions of those who do."

Upon accepting admission to Mississippi State University, a student immediately assumes a commitment to uphold the Honor Code, to accept responsibility for learning, and to follow the philosophy and rules of the Honor Code.  Students will be required to state their commitment on examinations, research papers, and other academic work.  Ignorance of the rules does not exclude any member of the MSU community from the requirements or the processes of the Honor Code.

Students are also expected to maintain the standards of academic honesty that are described in the CSE Department's Graduate Studies Academic Honesty Policy (CSE 6833). 

  • Do not cheat on a quiz or exam. 
  • Do not turn in someone else's work, on a programming assignment or any other type of assignment, as if it were your own. 

These are important policies.  Not only will violators fail to learn the course material, but violators will receive an XF in this course, and will otherwise be handled according the CSE Department's Undergraduate or Graduate Studies Academic Honesty Policies, as well as the Academic Operating Policy and Procedure of Mississippi State University.

As a professor at Mississippi State University, I am required to report all incidents of academic misconduct.

Additional Policies

Attendance and Audits: Attendance is required in this class.  Although attendance will not affect your grade, I will take roll, and I will list absences on midterm and final grade reports. Students who miss class are still responsible for the material covered and for any assignments distributed.  Students who are auditing the course must attend at least 75% of the class meetings in order to receive a passing grade.

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): Following MSU policy, 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.

No Food or Drinks in Class: It is the CSE department's policy that you can't eat or dink in Butler Hall classrooms.

Email: When I send class-related email, I will use your email address.  However, for this class I am more likely to post a message to the message boards than send email.

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

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

B.   Drop after the fifth 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. 

C.   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.

D.  Faculty are expected to provide a student with significant evidence or assessment of his/her class performance within the first 30 class days of the semester.

Right to Change

I reserve the right to change the course policies or schedule in order to facilitate instruction. Any such changes will be discussed in class and updated on the course web site.

Last modified: April 05, 2011