CS 410 teaches students how to program a computer to generate photo-realistic images. The general idea is that given a scene model, a sensor model and a viewpoint, one should be able to create the same image that a camera would for that scene and viewpoint. Scene models include 3D object models and light sources. Objects models are composed of surfaces, and include both geometry (where is the surface?) and material properties (what is it made of? What color is it?).
This course will emphasize geometric objects and transformations, perspective projections, lighting and reflectance models, shading models, and 3D curves and surfaces. Students will design and implement a ray tracing program from scratch, thereby becoming intimately familiar with the sensor, lighting and object models described above. Perhaps most importantly, students may come to more fully appreciate the power of linear algebra.
In order to understand the material in this course, you will need to have a good working knowledge of data structures such as linked lists, trees, symbol tables, including dynamically allocated structures. You will need to know how to implement these data structures in C++ or Java. This course will also draw on knowledge of the 2D and 3D geometry of vectors and coordinate systems, and on the use of matrix algebra for coordinate transformations. In other words, you should be familiar with material on the above topics covered in M229 (Matrices and Linear Equations), CS200 (Algorithms and Data Structures), CS253 (Software Development with C++) and CS314 (Software Engineering).
The textbook for this course is: Fundamentals of Computer Graphics by Marschner and Shirley. You may buy a physical copy of this book from the University bookstore (or elsewhere), or you may an electronic version directly from the publisher.
Now a word about the textbook being optional this year. A talented and motivated student can gain all they need to succeed in this class from lecture and side readings readily available on the web. Lectures themselves are taught in a manner independent of the textbook. That said, the textbook is the best we have found for providing a parallel introduction to much of what is covered in CS 410. If you are the sort of student who wants a well organized and well prented written complement to the lectures and material covered you are encouraged to obtain a copy of this textbook; either the third or fourth edition should server you well.
Here are the formally graded elements of the course and associated weighting:
|Programming Assignments||50 %|
|Midterms (2)||20 %|
|Final Exam||20 %|
Semester grades are determined by the weighted sum of points earned in each of these areas. Total points for each area are normalized so that the best possible score for the semester is 100. Typically the A- to B+ cutoff falls at 90 points, the B- to C+ cutoff at 80 points, and so on. While this is the typical grading procedure, the instructor reserves the right to make adjustments.
Exams and projects will always be done individually and grades assigned on an individual basis. Further, students not already familiar with the CSU Honor Pledge should review this clear and simple pledge and always adhere to it.
Midterm and Finals: Make-up exams are only given for unforeseeable emergencies (e.g., medically documented illness). Students must consult with the instructor as soon as possible, preferably before the start of the exam. Course examination dates are listed in the syllabus; be aware of them and plan accordingly.
Projects: Unless otherwise specified, programming assignments are to be submitted electronically through CANVAS. Specifics will be included in each assignment. Always check the assignment page for due dates. Electronic submission closes when assignments are due; students not having submitted programs receive an automatic zero on the assignment.
|First in class midterm||Tuesday September 27|
|Second in class midterm||Tuesday, November 8|
|Final Exam||Wednesday, December 14th, 9:40 to 11:40AM|
It is hoped that exams will administered online using CANVAS. However the logistics of space and machines is still being worked out. While no changes to the midterm dates are anticipated, the instructor reserves the right to change these dates with one weeks notice.
All students taking this course are expected to participate actively. This includes asking and responding to questions. Questions may be asked or answered in class, via email, or during office hours.
All students are expected to conduct themselves professionally. We, specifically the instructors and GTAs, assume you are familiar with the policies in the student information sheet for the department. This course will adhere to CSU's policies as explained at the Academic Integrity website and the Student Conduct Code. At a minimum, violations will result in a grading penalty in this course and a report to the Office of Conflict Resolution and Student Conduct Services.
Additionally, you are computing professionals. You should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct HERE.
We work to maintain an environment supportive of learning in the classroom and laboratory. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular:
A class discussion board is being used to support this course. In particular, the discussion board is hosted at Piazza. All normal expectations regarding professional conduct apply to the discussion board. In addition, here are some explicit guidelines to assist in establishing the tone and expectations regarding the use of Piazza.
This last item deserves additional comment. Please, keep in mind every word you type may be retained and shared by the instructor with others when the instructor determines there is good reason to do so. This should not concern you. It is the nature of a public discussion board that what you type is archival and public. However, understanding the public and personally identifiable nature of the discussion board should help reinforce the comments above about the importance of Professionalism.