Ross Beveridge
Office: 348 CS Building
Office Hours: 4:45 - 5:30 Tue/Thu (Zoom)
Yongxin Liu
Campus: CSB 120 Tues 7:00-10:00PM
Online: Teams Wed 9:00-11:00AM
Vishal Kuvar
Campus: CS 120 Wed 6:00-9:00PM
Lecture Time and Place:
3:00-4:45PM, Tue, Thur, Online (Zoom)

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


For Fall 2020 lectures will be conducted using Zoom. Students are encouraged to attend live during the scheduled lecture time. Links to these Zoom sessions will not be shared publicly (for obvious reasons) but will be prominently posted on CANVAS. Lectures will also be recorded and while live attendance is encouraged it is not required. Files of the recorded lectures will be avaiable through CANVAS: generally the same day the lecture is given. An important note about these recorded lecture files. For simplicity they will be available through a sharable link on the instructors Google Drive. Please do NOT post these links anywhere on the public internet. Also, be aware some of these files will be large and so take that into account when planning to download these files for viewing. There is an upside to the size of the recorded files, the native video resolution is much higher than has been normal in the past. This detail will likely prove helpful for viewing the live code examples presented during lecture.

Required Cloud Platform CoCalc ($14 per student)

For several years CS410 has made extensive use of Jupyter Notebooks specialized to run SageMath. In past semesters this has entailed extra work and complexity as each student has had to work out how to run these notebooks either in the CS department or on their own computer. While not really in concept a challenging task, experience demonstrated that having this extra layer of complexity created friction for all concerned. Therefore, this year all CS410 students will be required to subscribe to a cloud resource, CoCalc, in order faciliate use of these Notebooks. The cost per student is expected to be $14. Specific instructions for setting up your account will be offered in the first lecture and through CANVAS. At a minimum this will streamline greatly the distribution and utilization of these notebooks. The use of CoCalc also promises to offer us all new modes of collaboration and instruction through real-time sharing of notebooks.

Textbook (optional)

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. A talented and motivated student can gain all they need to succeed in this class from the lectures, SageMath Notebooks and side reading on the web. Further, the course will not follow closely the textbook, so a commitment by a student to use the textbook includes some personal initiative to connect the dots between lectures and the textbook. With that disclaimer, the optional textbook suggestion remains because there are students who benefit greatly from having a single coherent secondary written resource, and the optional textbook will fill that role well for those students.


Here are the formally graded elements of the course and associated weighting:

Activity Weight
Quizzes 10 %
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.

Late and Makeup Policy

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.
Fall 2020 is different from previous semesters in many ways. Put simply, unforseen circumstances are more of a norm now then I have ever seen before. Therefore, the Programming Projects late policy shall be as follows. Assignmeents turned in within 7 days of the due date and time will be graded and worth 75% of what an assignment turned in on time is worth. An assignment turned in any time during the semester will be graded and worth 50% of an assignmnet turned in on time. This change is in effect as of September 23, 2020 and consequently covers all Projects.

Important Dates

First Midterm Thursday September 24Tuesday September 29
Second Midterm Thursday November 5
Final Exam Wednesday, December 16th, 2:00 to 4:00 PM

Exams will be administered online using CANVAS. Most students it is hoped will choose to use their own laptops or possibly tablets to take the exams. Students needing a machine provided to them will contact the instructore a week before the exam to make suitable arrangements. While no changes to the midterm dates are anticipated, the instructor reserves the right to change these dates with one weeks notice. Online students will take the exams at the same time as the oncampu students if possible, and if not possible by prior coordination with the instructor to pick a suitable time window.

Active Participation

All students taking this course are expected to participate actively. This may seem obvious, but learning works better when all parties are engaged. So, for example, students are expected to respond to questions and when being asked questions please keep in mind the goal is not to instantly pass back 'the right answer'. Instead, and much more important, it is to foster active engagement. Also, keep in mind, one of the most important things and instructor can hear is 'I don't really undstand what you are asking?'. A note for Fall 2020, how exactly engagement will be best fostered through online tools such as Zoom and CoCalc is something we collectively will be exploring this fall. Everyone's patience, creativity and good humor will be appreciated.

Professional Conduct

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:

  • Please turn off the ring on your cell phone. If you are expecting an emergency call, sit near the door and slide out discretely to take it.
  • In class use of electronic devices in general, and laptops specifically, is permitted as a courtesy so that you may better participate and learn. If at any time the instructor judges that your use of an electronic device is becoming a distraction to others, you may be asked to to turn it off and put it away.
  • All exams and are to be done without the aid of notes of any kind.
  • University labs (including but not limited to CSB 120) are professional, not personal, spaces. We expect professional behavior in these labs at all times.

Discussion Boards

A class discussion board will be used to support this course. At this moment it is not yet decided whether it will be best do do this through CANVAS or CoCalc. Whichever option is ultimately chosen will be communicated in the first lecture of the course.

In general, whatever actual tool is used, here are some guidelines for use of the class discussion board.

  1. No posting of any code for assignments.
  2. No inappropriate postings: e.g. profanity, sexism, racism, bullying, inflammatory remarks, bad taste.
  3. No grade inquiries: make those directly to the instructors.
  4. All students are expected to follow the discussions.
  5. Instructor posts, like in-class announcments, may clarify and even alter assignment specifications.
  6. Use the existing topics. Please don't start new threads.
  7. Only answer questions by other students when you are confident you are both correct and able to craft a helpful explanation.
  8. Questions may of course relate to how best to use tools.
  9. Do not expect instant answers. While answers may often come faster, a 24 hour response cycle is reasonable.
  10. Posts are anonymous one student to another through the Piazza interface.
  11. Posts are archival and individualized for the instructors.

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.


While lectures are online for CS410, it is important to note that CSU is asking that all students fill out a student-specific symptom checker each day before coming to classes ([]) . In addition, please utilize the symptom checker to report symptoms, if you have a positive test, or exposed to a known COVID contact. If you know or believe your have been exposed or are symptomatic, it is important for the health of yourself and others that you report it through this checker. You will not be in trouble or penalized in any way for reporting. If you report symptoms or a positive test, you will receive immediate instructions on what to do and CSU’s Public Health Office will be notified. Once notified, that office will contact you and most likely conduct contact tracing, initiate any necessary public health requirements and/or recommendations and notify you if you need to take any steps. For the latest information about the University’s response, please visit the CSU COVID-19 site