CGRA354 (2024) - Computer Graphics Programming


This course addresses algorithms, mathematical knowledge and programming tools for 3D Computer Graphics, including offline rendering. It covers programming with Modern low-level graphics APIs, shader programming and the graphics processing pipeline (including geometry processing, viewing, projection, transformation, illumination, texture mapping and shading algorithms).

Course learning objectives

Students who pass this course should be able to:

  1. Implement computer graphics applications when given an appropriate basic framework from which to start, and be able to load, view, shade, and manipulate polygon meshes.
  2. Explain and implement three-dimensional rigid object animation using physical simulation.
  3. Demonstrate an ability to use a range of algebraic tools, including trilinear and tricubic interpolation, vector arithmetic (dot and cross products), intersection calculations between a ray and various primitive objects, velocity and position updates in interactive physical simulation.
  4. Explore and implement global illumination algorithms (such as ray tracing) for photorealistic lighting/appearance simulation.

Course content

We’ve designed this course for in-person study, and to get the most of out it we strongly recommend you attend lectures on campus. Most assessment items, as well as tutorials/seminars/labs/workshops will only be available in person. Any exceptions for in-person attendance for assessment will be looked at on a case-by-case basis in exceptional circumstances, e.g., through disability services or by approval by the course coordinator. If you started your programme of study remotely and can only study remotely, please contact the School so we can help and confirm what courses are available.
The course has two components:
 1. Programming in C/C++ and low-level graphics APIs, such as OpenGL: getting to grips with the programming languages and libraries used in professional computer graphics environments.
 2. Mathematical and Physical concepts in Computer Graphics: practical examples of photorealistic shading, interpolation, mesh handling, ray tracing, object animation, and simulation.

Required Academic Background

Students must have passed CGRA 252 to give them an understanding of the basic concepts on which this course builds. Students must have passed an appropriate C/C++ programming course (NWEN 241). Students must have the mathematical background to be able to handle the algebra (either ENGR 121 or MATH 151 is required; alternative mathematical preparation can be considered with Head of School permission).

Withdrawal from Course

Withdrawal dates and process:


Dr Alex Doronin (Coordinator)

We expect to have one or two guest lectures from expert staff at Weta FX or Unity.

Teaching Format

This course is designed for in-person study, with most assessments and activities, including tutorials, seminars, and labs, available only on campus. For exceptional circumstances, we may consider attendance exceptions on a case-by-case basis, with coordination from disability services or course coordinator approval.
During the trimester there are three scheduled slots per week. Two of those slots are for lectures. The third slot may be used for tutorials, labs, or student presentations.

Dates (trimester, teaching & break dates)

  • Teaching: 26 February 2024 - 31 May 2024
  • Break: 01 April 2024 - 14 April 2024
  • Study period: 03 June 2024 - 06 June 2024
  • Exam period: 07 June 2024 - 22 June 2024

Class Times and Room Numbers

26 February 2024 - 24 March 2024

  • Friday 09:00 - 09:50 – LT1, Te Toki a Rata, Kelburn
26 February 2024 - 31 March 2024

  • Tuesday 09:00 - 09:50 – LT1, Te Toki a Rata, Kelburn
  • Thursday 09:00 - 09:50 – LT1, Te Toki a Rata, Kelburn
15 April 2024 - 05 May 2024

  • Thursday 09:00 - 09:50 – LT1, Te Toki a Rata, Kelburn
15 April 2024 - 02 June 2024

  • Tuesday 09:00 - 09:50 – LT1, Te Toki a Rata, Kelburn
  • Friday 09:00 - 09:50 – LT1, Te Toki a Rata, Kelburn
06 May 2024 - 12 May 2024

  • Thursday 09:00 - 09:50 – 103, Murphy, Kelburn
13 May 2024 - 02 June 2024

  • Thursday 09:00 - 09:50 – LT1, Te Toki a Rata, Kelburn

Other Classes

Tutorial sessions will be held in lecture times, as notified by the course lecturers.


There are no required texts for this offering.

There are no required texts for this offering.

Mandatory Course Requirements

There are no mandatory course requirements for this course.

If you believe that exceptional circumstances may prevent you from meeting the mandatory course requirements, contact the Course Coordinator for advice as soon as possible.


This course is evaluated using four programming assignments and two online tests.

Assessment ItemDue Date or Test DateCLO(s)Percentage
 Programming Assignment 1week 3CLO: 110%
 Programming Assignment 2week 6CLO: 1,215%
 Programming Assignment 3week 9CLO: 2,315%
 Programming Assignment 4week 12CLO: 3,420%
Mid-Trimester Testweek 6CLO: 1,220%
End-Trimester Testweek 12CLO: 3,420%


Assignments submitted late receive a 25% penalty for each day late.


Individual extensions will only be granted in exceptional personal circumstances, and should be negotiated with the course coordinator before the deadline whenever possible. Documentation (e.g., a medical certificate) may be requested in some circumstances.

Submission & Return

All work is submitted through the ECS submission system, accessible through the course web pages. Marks and comments will be returned through the ECS marking system, also available through the course web pages.

Marking Criteria

Computer graphics is best learned by doing and showing the results. There will be four programming assignments and work for marking should be submitted electronically using the ECS Submission System. All submitted code must be compiled and run on the ECS  system. You can work on any other platforms, but programs that do not compile and run on the ECS system will not be marked. Since computer graphics is all about showing results on the screen, assignments and projects are marked based primarily on the final output on the display. The details of the assignments will be provided in the lectures and on the course website.


The course requires 150 hours of work. There are 3 hours per week of scheduled class time. Students are expected to spend up to 7 hours per week consolidating what they have learnt in class and working on the assignments.

Teaching Plan

See and/or Nuku.

Communication of Additional Information

All online material for this course can be accessed at and/or Nuku.

Offering CRN: 36029

Points: 15
Prerequisites: CGRA 252, NWEN 241; ENGR 121 or MATH 151
Restrictions: CGRA 251
Duration: 26 February 2024 - 23 June 2024
Starts: Trimester 1
Campus: Kelburn