COMP 557 Fundamentals of Computer Graphics

COMP 557 (ECSE 532) Fall 2022 - General Information

Lectures 11:35 PM - 12:55 PM, Mondays and Wednesdays
Location TR 0100
Credits 4
Instructor Paul Kry
Office MC423
Office Hours 10:00 AM - 11:00 AM Mondays, or by appointment (any time!)
Teaching Assistants Yunhao Luo, Alexandre Mercier-Aubin, Löic Nassif
Contact information and office hours on My Courses
MyCourses for discussion boards and assignment submission


The study of fundamental mathematical, algorithmic and representational issues in computer graphics. The topics include an overview of graphics pipeline, projective geometry, homogeneous coordinates, projective transformations, quadrics and tensors, line-drawing, surface modeling and object modeling, reflectance models and rendering, texture mapping, polyhedral representations, colour perception, and other selected topics according to available time (see the tentative schedule below).

Assignments, Exercises, and Exams

There will be four assignments during the term, totaling 50% of the course mark. Assignmetns will be equal weight but not equal effort, and may have opportunities for bonus marks. Assignmetns will be in C++ and use OpenGL (4.1 core profile to make it likely that those with Mac to use their own machines). Links to assignments will be posted to MyCourses during the term. Instructions for assignment setup are on github and can be discussed on MyCourses.

Late assignments will be graded with a 10% penalty and will be accepted up to 3 days from the original due date (i.e., if you are not going to make the deadline, get some sleep and find the time to finish your submission properly with only a 10% penalty for all 3 days). Given that we are still undergoing an unpredictable transition from emergency online teaching to a normal classroom, the lowest mark of the four assignmetns will dropped as additional accomodations. The idea is that students can handle any unforseen circumstance that arises in the term with the combination of a minmal late penalty and the possibility of dropping one assignemnt mark. All students are strongly advised to complete all assignments as doing the work will be the best way to learn the material necessary for the exams. Assignment solutions will not be provided, but important parts of the assignemtn solutions may be discussed in class.

There will be two exams, worth a total of 50% of the final grade. The first will be a midterm exam which will take place in mid to late October. It is worth 20% of your grade. There will be a makeup midterm for anyone who misses the midterm. The second exam will take place during the Final Exam Period and is worth 30% of the final grade. Practice problems, old midterms and final exams, and in some cases solutions will be posted to MyCourses during the term.


There is no required text for the course, but the following course textbooks is recommended and is available online for free in the McGill library.
  • Fundamentals of Computer Graphics , 3rd or 4th Edition, Shirley and Marschner
Throughout the term I will also make references to material within another excellent text. You may consider consulting this book too.
  • Computer Graphics Principles and Practice, 3rd Edition, Hughes et al.
I refer to these books with abbreviations FCG and CGPP. Th CGPP book is a recent update of a classic textbook, and is possibly the most complete reference available (covering many additional topics that we will not have time for in the course). That said, I will also provide other reference material on other topics in class.

The other very useful reference for working on OpenGL assignments is the OpenGL programming guide.

  • OpenGL Programming Guide: The official guide to learning OpenGL (4.0 or higher), find an appropriate version in the McGill library or search online
Note that we will be using OpenGL 4.1 core profile in this course.

There are also many alternative and online resources that you may find helpful for much of the material, including these listed below.

  • The Graphics Codex (mostly focuses on rendering, but has an important overlap with many fundamentla topics, and shows how material across several popular texts is related)
Additional resources will be provided in MyCourses throughout the term.


Graduate students interested in this course, who have not already taken a graphics course, will likely have taken courses equivalent to the prerequisites listed below. For undergraduate students, there are three official prerequisites for the course:
  • COMP 206 Introduction to Software Systems -- we build on familiarity with c and the unix make utility as we are using cmake and c++ and various libraries for programming assignmetns in this course. Debugging and testing of code is likewise an important part of the course.
  • MATH 222 Calculus 3 -- Graphics involves parametric representations, partial derivatives and integrals and some vector calculus. This prerequisite will ensure you are prepared, and it or its equivalent is required for all CS Majors.
  • MATH 223 Linear Algebra -- This course will build upon your basic understanding of vectors and matrices. You should have at least a B grade in your linear algebra course, or be prepared for a serious review.
  • COMP 250 Introduction to Computer Science -- This prerequisite is to ensure that students have a sufficiently high level of computer science and mathematical maturity.

Tentative Schedule and Topics

The following list is a tentative schedule of topics. MyCourses course content will have the official list of topics as the term progresses. That is, adjustments will be made to synchronize with assignments and to better match material in the textbook and other sources. Topics will be added and removed depending on interest and time permitting.

  1. Introduction
    Sets as Geometry
    2D Transformations
  2. Vector spaces
    Affine spaces
    Homogeneous coordinates
  3. Transformations
  4. Viewing transformation
    Perspective projection
  5. Projection taxonomy
    Normalized device coordinates
  6. Mesh terminology
    Euler characteristic
    Half edge data structure introduction
  7. Half Edge data structure examples
    Level of Detail introduction
  8. Edge collapse and vertex split
    Point plane distance
    Quadric error metric introduction
  9. Mesh simplification
    Quadric error metric
  10. Subdivision curves
    Corner cutting
    Limit point analysis
    Subdivision surface introduction
  11. Curves introduction
    Bezier, Interpolation, and Hermite curves
    Bezier properties
    Change of basis
  12. Tensor product patches
    Decaslejau algorithm
    Rational curves B-spline introduction and intuition
  13. Surfaces of revolution,
    Swept surfaces,
    Frenet frame,
    Parallel transport
  14. Clipping
    Pipeline rasterization and operations
    Painter's and Warnock algorithm
    Binary space partitions
    Depth Buffer

  15. Midterm Exam (in class)

  16. Ray tracing
    Ray transformation
    Shadow rays
    Ray triangle intersection
    Ray quadric intersection

  17. Barycentric coordinates
    Barycentric interpolation
    Bilinear interpolation
  18. Quadric transformations
    Quadric normals
    Constructive solid geometry
    Illumination (ambient, diffuse, specular, attenuation)
  19. Light and reflectance models
    (Lambertian, Blinn-Phong)
    Shading models (Phong, Gouraud)

  20. Texture mapping
    Magnification and Minification
    Mip maps
    Bilinear interpolation
  21. Shadow maps
    Stencil shadow volumes
  22. The rendering equation
  23. Compositing
  24. Colour
    Colour matching experiment
    Chromaticity diagram
    Colour conversion between different displays

  25. Colour purity and saturation
    Complementary colours
    Just noticable differences
    Gamuts and gamma
  26. Review for final

In case you didn't already know...

McGill University values academic integrity. Therefore, all students must understand the meaning and consequences of cheating, plagiarism and other academic offences under the Code of Student Conduct and Disciplinary Procedures. See for more information, as well as with respect to student rights and responsibilities. From the dean of students, on academic integrity: As instructors, if you suspect a student has plagiarized or cheated on a test or assignment, remember that you cannot penalize them yourself. This must be handled through the Code of Student Conduct and Disciplinary Procedures. The Disciplinary Officer for your Faculty can help guide you through the process.

It should be noted that, in accordance with article 15 of the Charter of Students'Rights, students may submit examination answers in either French or English.

According to Senate regulations, instructors are not permitted to make special arrangements for final exams. Please consult the Calendar, section, General University Information and Regulations at Special arrangements in emergencies may be requested at your Student Affairs Office. If you have a disability, please advise the Office for Students with Disabilities (398-6009) as early in the term as possible so that we can provide appropriate accommodation to support your success.

Please note McGill's Policy for the Accommodation of Religious Holy Days.

In the event of circumstances beyond the instructor's control, the evaluation scheme as set out in this document might require change. In such a case, every effort will be made to obtain consensus agreement from the class.

Additional policies governing academic issues which affect students can be found on the Student Rights and Responsibilities page.