The second year labs (consisting of sub-courses CO261, CO261C, CO275 and CO276) are coordinated by Mark Wheelhouse. The individual pieces of labwork in the second year are both larger and longer than those encountered in the first year. You are advised to leave plenty of time to work on these exercises as you will find it very hard to complete them at the last minute.

Lab Exercises

The Second Year Laboratory program is broken down into 5 main components:

  • Linkload (individual exercise)
  • C++ Picture Processing (individual exercise)
  • WACC: Compiler Lab (group exercise)
  • Prolog Coursework (pair exercise)
  • Pintos: Operating Systems Lab (group exercise)

For a detailed schedule of the labs, including all material and deadlines, please see CATe.
All of the year's labs are supported through LabTS the Depatment's Laboratory Testing Service.

WACC: Compiler Lab

The WACC Compiler Lab lasts for the majority of the autumn term. As part of the lab, you will be designing and bulding a compiler for the WACC language from scratch. The lab is assessed at 3 milestones, which are spread throughout the term. The tasks require strong Java implementation skills and knowledge of the ARM acrhitecture, so be sure to review your notes from the first year.

We will distribute the documentation for the WACC lab early in the autumn term, as well as how to access a reference implementation of a WACC compiler. There is a lot to read and experiment with, so be sure to start looking over this material early.

The first coursework of the Compilers course (CO221) will provide an introduction to the WACC language via a specification writing exercise.
Note that JMC students are not required to complete the final milestone of the WACC Compiler Lab (part of CO261C).

Pintos: Operating Systems Lab

The Pintos Operating Systems Lab lasts for the majority of the spring term. As part of the lab, you will be designing and implementing the core parts of a simple operating system for the x86 platform. The lab consists of three difficult tasks, which are spread throughout the term (preceded by a short introductory task). The tasks require strong C implementation skills, so be sure to review your notes from the first year.

In the second half of the autumn term we will distribute the documentation for the Pintos lab, which consists of over 100 pages describing the operating system framework that you will be working with. It is advised that you familiarize yourselves with the code and the documentation before the start of the spring term.

A proportion of your Pintos marks (across all tasks) will count towards the Operating Sysytems (CO211) course total.
Note that JMC students are not required to complete the final milestone of the Pintos Operating Systems Lab (part of CO261C).

WebApps: 2nd Year Group Projects

In the summer term you will have a group WebApps project. In this project you will have to use agile techniques and human centred design principles to design and build a web-based or mobile-based application with a database backend.

In the second half of the spring term we will distribute the documentation for this project so that you can begin to plan your work. You are not expect to start work on the program itself until after your exams, but you may find it useful to organise your groups and discuss project ideas before you go on study leave.

A selection of the best WebApp projects from previous years can be found on the WebApp prize-winners page. These projects should help to inspire and challenge you to produce top quality projects, but under no circumstances are they to be copied (we take plagiarism very seriously).

Note that JMC students have the option to work on a Group Project in the Maths Department instead of the WebApps Project.