Taken in AY19/20 Sem 2 under Prof Martin Henz. Modules in this semester were affected by the COVID-19 pandemic, and were required to end one week earlier than usual (i.e. week 13 was cancelled).
All classes (both lectures and labs) could be attended online from early in the semester, going beyond the social distancing measures that were mandated by the school.
This module starts by introducing formal specification of language semantics (inductive definitions; dynamic, static, and denotational semantics; type safety), and then moves on to virtual machines (compilation from the source language to an instruction set architecture, and execution of the compiled program), memory management (with a focus on garbage collection). The last few classes dabble with records, exceptions, lazy evaluation, and object-oriented programming.
The lack of a final exam is somewhat odd for a computer science module. This also means that material covered after Test 2 is effectively non-examinable.
The project is pair work, and it is a programming project that spans the entire semester. Students may choose their partners, but they must be from the same lab group. There was a large range of projects to choose from — students may submit their preferences in the first week of class, but Prof Henz subsequently allocates a project to each team based on their preferences. Many of the projects are features for Source Academy, intended to be integrated at the end of the semester. This also means that many projects require TypeScript.
The project culminates in a half-hour presentation in either weeks 12 or 13. Students are expected to present their projects to Prof Henz and approximately 11 other students (each student has to attend 11 presentations apart from their own).