Syllabus: CSE 8433 Advanced Computer Graphics, Spring 2011
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.
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 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:
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:
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).
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.
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 firstname.lastname@example.org 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:
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