0019: Courseworks

There are five individual courseworks in 0019:
Topic Assigned Due Other Info
Unassessed CW 1: Defusing a Binary Bomb 11th January 2022 4 PM, 20th January 2022
Unassessed CW 2: Implementing a Debugging malloc 20th January 2022 4 PM, 3rd February 2022 CS/APP:3e 9.9 discusses malloc() implementations at length
Assessed CW 3: Implementing a Bit-Level LZW Compressor 3rd February 2022 4 PM, 24th February 2022 Welch's classic paper (UCL IS login required) describes the LZW algorithm
Assessed CW 4: Implementing Virtual Memory 24th February 2022 4 PM, 10th March 2022 CS:APP/3e Chapter 9, and Section 9.7 especially
Assessed CW 5: Implementing a UNIX Shell 10th March 2022 4 PM, 5th April 2022 CS:APP/3e Chapters 8 and 10:
Sections 8.4-8.5, 10.1-10.4, and 10.9 especially;
UNIX/Linux man pages on system calls extremely useful!

All programming for these courseworks must be done under Linux.

CW4 must be done in the CS 0019 virtual machine provided below.

We provide a Linux virtual machine (VM) image for you to use to do development on your own x86-64 machine. The username and password for this VM are both "user". To use this VM image on your x86-64 machine, you will need to download:

Unzip the above .zip file, start VirtualBox, and open the 0019.vbox file in VirtualBox.

Two other ways to obtain a Linux environment for remote work are (1) to log into one of the CS lab Linux machines remotely via ssh, and (2) to use the Thinlinc UCL CS Remote Worker (CSRW) thin client, which gives you remote access to a Linux desktop running on a UCL server. Note, however, that Thinlinc will not work for CW4! Both these methods will work fine if you have a machine at home with an Apple M1 CPU.

The CS Linux lab machines are:

frontal parietal occipital sphenoid ethmoid
maxilla palatine zygomatic lacrimal

To log into a lab machine, first ssh into knuckles.cs.ucl.ac.uk, then ssh to any of the lab hosts listed above.

To use the Thinlinc CSRW service, you must first download the ThinLinc client. Instructions for running a remote Linux desktop using the ThinLinc client are available here.