Topic | Assigned | Due | Other Info |
---|---|---|---|
Unassessed CW 1: Defusing a Binary Bomb | 10th January 2024 | 4 PM, 18th January 2024 | |
Unassessed CW 2: Implementing a Debugging malloc | 18th January 2024 | 4 PM, 1st February 2024 | CS/APP:3e 9.9 discusses malloc() implementations at length |
Assessed CW 3: Implementing a Bit-Level LZW Compressor | 1st February 2024 | 4 PM, 22nd February 2024 | Welch's classic paper (UCL IS login required) describes the LZW algorithm |
Assessed CW 4: Implementing Virtual Memory | 22nd February 2024 | 4 PM, 7th March 2024 | CS:APP/3e Chapter 9, and Section 9.7 especially |
Assessed CW 5: Implementing a UNIX Shell | 7th March 2024 | 4 PM, 27th March 2024 | 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 in the official, supported 0019 Linux environment. For 0019 CW1 (the binary bomb), you should log into one of several 0019 Linux machines remotely over ssh. The hostnames for these Linux machines are:
frontal parietal temporal 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.
For 0019 CW2-CW5, there are two ways to develop your code: working over ssh as above, or you can run Linux under Docker on your own machine.
The 0019 Docker Linux environment will work on your own machine whether you run macOS or Windows on an x86-64 CPU, and also works on your own machine if you run macOS on an ARM CPU. Instructions on how to install Docker and use it on your machine are in the handout for CW2 above.