0019: Courseworks

There are five individual courseworks in 0019:
Topic Assigned Due Other Info
CW 1: Defusing a Binary Bomb 8th January 2019 1:05 PM, 17th January 2019
CW 2: Implementing a Debugging malloc 17th January 2019 1:05 PM, 31st January 2019 CS/APP:3e 9.9 discusses malloc() implementations at length
CW 3: Implementing a Bit-Level LZW Compressor 31st January 2019 1:05 PM, 21st February 2019 Welch's classic paper (UCL IS login required) describes the LZW algorithm
CW 4: Implementing Virtual Memory 21st February 2019 5:05 PM, 8th March 2019 CS:APP/3e Chapter 9, and Section 9.7 especially
CW 5: Implementing a UNIX Shell 7th March 2019 5:05 PM, 22nd March 2019 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 machine. To use this VM image, you will need to download:

Two other ways to obtain a Linux environment for remote work (but N.B. that these will not work for CW4!!) are (1) to log into one of the CS lab Linux machines remotely via ssh, and (2) to use the UCL CS Remote Worker (CSRW) thin client, which gives you remote access to a Linux desktop running on a UCL server. You may also be able to run the Bomb code for CW1 on your own machine under Linux, whether natively or in a VM so long as you are connected to UCL's campus network, either while at UCL or by VPN'ing into UCL. If you find the Bomb will not execute on your own machine, however, we ask you to please use one of the above two methods to run on a UCL CS Linux host; further details on these two methods below.

The CS Linux lab 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.

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