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!

Course website

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:

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.

2020 course website

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.

2019 course website

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.

Course website