Programming Fundamentals Using C++

Lab 16 · OOP Mini-Project

Module 16 · Lectures L31–L32 · Week 16 · 120 minutes · guided/independent 20/80

Prerequisites: completion of Labs 1–15 (Lab 1: none). Bring your laptop with the course toolchain verified (see § 3) and your exercise notebook.

2. Learning objectives

By the end of this lab you can:

These deliver the module's outcomes (PF codes in ../../LEARNING_OUTCOMES.md).

3. Required software and compiler

  g++ --version

4. Relevant theory

class interface design, invariants, composition, demo — full treatment in the lecture notes; the lab applies it, the lecture explains it.

5. Pre-lab questions

Answer in your notebook BEFORE the session; the TA checks them at entry:

  1. What can external code NOT do when a member is private?
  2. Which methods should be const?
  3. What invariant does your class promise after EVERY method?

6. Instructor demonstration (15 min)

The instructor or TA demonstrates: Class design, encapsulation, invariants — graded demo. Watch for the workflow (how errors are read and fixed), not just the final code. The demo ends with the checkpoints you must hit in § 7.

7. Guided coding tasks

  1. guided: interface sketch + instructor-led design review
  2. guided: minimal working class (constructor + 2 methods)
  3. independent: complete the mini-project class pair (e.g., Inventory + Item)
  4. independent: demo script + invariant test evidence

Checkpoint rule: show each guided result to the TA before moving on. TAs give guidance, not solutions (../../TEACHING_GUIDE.md § 5).

8. Independent programming exercises

Complete the tasks labeled independent in § 7 without step-by-step help. You may consult lecture notes and this manual — not a neighbor's screen. The TA records who completes what.

9. Debugging task

Peer design review against the invariant checklist before coding

Use the five-step debug loop (reproduce, isolate, hypothesize, test, fix-and-verify) and record it in your debug log (../../labs/resources/debug_log_template.md) from Lab 4 onward. Identify the stage of each defect (compile, link, runtime, logic).

10. Test cases

Your program must pass at minimum:

Record results in the test-evidence table (../../labs/resources/submission_template.md): input, expected, actual, verdict.

11. Expected learning outcomes

After this lab, verified by the checkpoints and your submission, you can reliably design a class interface before its implementation; enforce invariants through private state and guarded methods; compose classes (has-a) into a small system; present and defend the design in a 3-minute demo. This maps to the module's PF outcomes and feeds the next lab's prerequisites.

12. Submission requirements

Submit via the course LMS before the start of next week's lab:

  1. Source file(s) named per the task list (snake_case).
  2. Test-evidence table (completed template).
  3. Debug log for the § 9 task (Lab 4 onward).
  4. Pre-lab answers (photo or scan is fine).

Code must compile warning-free under the course contract — a warning costs the compile check (§ 13).

13. Assessment rubric (10 points)

CriterionPointsEvidence
Pre-lab completed1notebook check at entry
Guided checkpoints3TA sign-offs during session
Independent tasks correct3code + test evidence
Debug task diagnosed (not just fixed)2debug log with stage + cause
Compiles warning-free + naming/format1build log, file names

Total 10, scaled to the 10 % course component. Labs 1–15 count the best 12 of 15 (drop-lowest); Lab 16 is graded as the project milestone with the same rubric plus the demo (see the instructor notes).

Programming Fundamentals Using C++ · C++17 · 16 weeksBack to top ↑