CPEN 221A · Laboratory archive

2025 Laboratory Activities

2025 archive

Jump to the archive

Laboratory activities

  1. Lab 0

    String Chopping

    Develop an algorithm that isolates letters by repeatedly removing parts of a string.

  2. Lab 1

    Problem Solving

    Practise iteration and problem decomposition with three short programming tasks.

  3. Lab 2

    Datatypes and DNA

    Implement a Java datatype for DNA sequences, codons, mass, and mutation.

  4. Lab 3

    DNA Cut-and-Splice

    Debug a provided DNA implementation and add a cut-and-splice operation.

  5. Lab 4

    Abstract Algebra

    Implement and test operations that determine whether a finite table defines a group.

  6. Lab 5

    ADTs and the JobManager

    Design and implement an abstract data type for assigning jobs to robots.

  7. Lab 6

    Representation Invariants and the JobManager

    State and check a representation invariant, then use it to locate implementation bugs.

  8. Lab 7

    Interfaces, Subtypes, and Representation Invariants

    Extend the JobManager with robot subtypes, scheduling policies, records, and comparators.

  9. Lab 8

    Streams and Lambdas

    Use stream pipelines, optional values, lambdas, and functional interfaces.

  10. Lab 9

    Evaluating Arithmetic Expressions

    Build infix and postfix evaluators and practise running and packaging Java applications.

  11. Lab 10

    Client-Server Pattern and Text Processing

    Compute document metrics through a JSON client-server protocol and examine concurrency.

  12. Lab 11

    Stable Matching, Shared Memory, and Concurrency

    Complete a concurrent stable-matching implementation and reason about shared state.

  13. +

    Programming Practice

    Links to the short programming exercises used alongside the 2025 labs.