3007: Courseworks

There are five individual courseworks in 3007:
Topic Assigned Due Other Info
CW 1: Defusing a Binary Bomb 9th January 2018 1:05 PM, 18th January 2018
CW 2: Implementing a Debugging malloc 18th January 2018 1:05 PM, 1st February 2018 CS/APP:3e 9.9 discusses malloc() implementations at length
CW 3: Implementing a Bit-Level LZW Compressor 1st February 2018 1:05 PM, 22nd February 2018 Welch's classic paper (UCL IS login required) describes the LZW algorithm
CW 4: Implementing Virtual Memory 23rd February 2018 6:05 PM, 9th March 2018 CS:APP/3e Chapter 9, and Section 9.7 especially
CW 5: Implementing a UNIX Shell 9th March 2018 6:05 PM GMT, 23rd March 2018 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 3007 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:

niagara 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.