Laboratory activities
- Lab 0
String Chopping
Develop an algorithm that isolates letters by repeatedly removing parts of a string.
- Lab 1
Problem Solving
Practise iteration and problem decomposition with three short programming tasks.
- Lab 2
Datatypes and DNA
Implement a Java datatype for DNA sequences, codons, mass, and mutation.
- Lab 3
DNA Cut-and-Splice
Debug a provided DNA implementation and add a cut-and-splice operation.
- Lab 4
Abstract Algebra
Implement and test operations that determine whether a finite table defines a group.
- Lab 5
ADTs and the JobManager
Design and implement an abstract data type for assigning jobs to robots.
- Lab 6
Representation Invariants and the JobManager
State and check a representation invariant, then use it to locate implementation bugs.
- Lab 7
Interfaces, Subtypes, and Representation Invariants
Extend the JobManager with robot subtypes, scheduling policies, records, and comparators.
- Lab 8
Streams and Lambdas
Use stream pipelines, optional values, lambdas, and functional interfaces.
- Lab 9
Evaluating Arithmetic Expressions
Build infix and postfix evaluators and practise running and packaging Java applications.
- Lab 10
Client-Server Pattern and Text Processing
Compute document metrics through a JSON client-server protocol and examine concurrency.
- Lab 11
Stable Matching, Shared Memory, and Concurrency
Complete a concurrent stable-matching implementation and reason about shared state.
- +
Programming Practice
Links to the short programming exercises used alongside the 2025 labs.