Tutoring
Before joining the facilities team, I was a tutor (or TA, as I believe it’s called elsewhere) for various computing subjects at the ANU, from 2020 through 2024. Here is some information on each of them, as they were when I was involved. Some are very similar today, while others have been totally redesigned, or are no longer run.
Some of these courses have a course website, containing lab exercises, assignments, and other resources; these are great to read through if you’re considering taking a course (or like the sound of one that doesn't exist anymore!). For courses that have changed a lot since I was involved, I’ve linked an archived version.
COMP1100/1130 Programming as Problem Solving
The first programming subject for undergraduate computing students at the ANU. COMP1100/30 strives to be a good introduction to the wonderful world of computer science for students both with and without previous programming experience. Programming is done in Haskell, which is still one of my favourite languages. If you’d like to know how computers work, or are considering studying computing, give COMP1100 a go!
COMP2300/ENGN2219 Computer Organisation and Program Execution
An introduction to computer architecture: how computers are put together, and how those parts work together to execute programs. COMP2300 and ENGN2219 changed quite a bit over the time I was involved with them. Currently (2024), students get to:
- design their own simple processor (implementing the QuAC instruction set, which I helped design), in a simulator, capable of running real programs; and then
- write low-level (assembly language) programs for the ARM processor on a real development board: the BBC micro:bit (previously the STM32L4 Discovery “Discoboard”).
2021 course website, current course website (different, but not unrecognisable)
COMP2310 Concurrent and Distributed Systems
Prior to 2022, COMP2310 was a great course about the theory and practice of concurrent and distributed systems, with programming mostly in Ada. The course website linked below contains lecture slides, recordings, lab exercises, and assignments from this version of the course. The assignments, while challenging, were great fun :)
The modern COMP2310 is a totally different course, focussing on systems programming in C, and only covers concurrency at a surface level.
COMP3300 Operating Systems Implementation
Operating systems theory and practice. The course textbook, Operating Systems: Three Easy Pieces (a.k.a. OSTEP, the “Comet Book”), is available for free online. When I tutored COMP3300, practical kernel programming consisted of writing modules for the Linux kernel (mainly a filesystem driver); nowadays, the course uses xv6, a simple teaching OS, allowing students to implement more fundamental components.
COMP3310 Computer Networks
A great tour of networking from bottom to top, and both theoretical and practical.
COMP4330 Real-Time and Embedded Systems
Sadly, I never got the opportunity to tutor COMP4330; the subject was the passion project of Uwe Zimmer, who left the university shortly before I was due to tutor it in S2 2021. The archived course website below has lecture recordings and slides, and the assignment specification. If you'd like to borrow a couple of the development boards used for the assignment, let me know.
COMP4712 (was COMP3710) Compiler Construction
Compiler implementation in Java, following the Tiger Book. The language (Mojo – no relation to the Python-like “AI” language of the same name) changes slightly each time.