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.
The Second Year Laboratory program is broken down into 6 main components:
- Pintos: Operating Systems Lab (group exercise)
- C True Concurrency (individual exercise)
- Linkload (individual exercise)
- CI+CD - Continuous Integration/Deployment Experiments (individual exercise)
- Prolog Coursework (pair exercise)
- WACC: Compiler Lab (group exercise)
Pintos: Operating Systems Lab
The Pintos Operating Systems Lab lasts for the majority of the Autumn 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.
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, right at the start of the new acadmic year. It is advised that you familiarize yourselves with the provided code the supporting documentation as soon as possible.
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).
WACC: Compiler Lab
The WACC Compiler Lab lasts for the majority of the Spring term. As part of the lab, you will be designing and bulding a compiler for the WACC programming 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 Spring 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).
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.
We will distribute the documentation for this project towards the end of the Spring term 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.