Programming Fundamentals Using C++

Lab 2 · Variables and Calculations

Module 2 · Lectures L03–L04 · Week 2 · 120 minutes · guided/independent 70/30

Prerequisites: completion of Labs 1–1 (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

type selection, the integer-division trap, formatting — 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. Why does 7/2 give 3 but 7.0/2 gives 3.5?
  2. Which type would you store a phone number in, and why?
  3. What does setprecision(2) do WITHOUT fixed?

6. Instructor demonstration (15 min)

The instructor or TA demonstrates: Types, initialization, formatted I/O. 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: types-and-sizes tour (sizeof, limits)
  2. guided: receipt line with setw/setprecision
  3. independent: unit-price calculator with 2-dp totals
  4. independent: currency converter with a named rate constant

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

A calculator whose totals silently truncate — diagnose, then fix

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 declare and initialize variables of appropriate types; choose int vs double deliberately for money vs counts; format output with fixed precision and field widths; read values with cin and validate non-negative input. 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 ↑