Programming Fundamentals Using C++

16-Week Schedule

Weeks are numbered 01–16; lectures are numbered globally 01–32 (week n contains lectures 2n−1 and 2n). Each lecture is 2 hours. **Module n is taught in week n.**

Every lecture has a detailed planning file at lectures/week_NN/lecture_MM.md containing: title, learning objectives, prerequisites, concept sequence, teaching topics, required C++ examples, common misconceptions, classroom activity, practice exercises, exit ticket, and time allocation (see lectures/README.md).

Outcome codes (CLO-x, PF-x.x) are defined in LEARNING_OUTCOMES.md. Difficulty rises monotonically across modules; see § Progression design at the end.


Module map

#ModuleLecturesWeek
1Introduction to Programming and C++01–021
2Variables, Data Types, and Input/Output03–042
3Operators and Expressions05–063
4Decision-Making Statements07–084
5Loops and Repetition09–105
6Problem-Solving and Algorithm Design11–126
7Functions Fundamentals13–147
8Advanced Function Concepts15–168
9One-Dimensional Arrays17–189
10Two-Dimensional Arrays19–2010
11Strings and Character Processing21–2211
12Searching and Sorting23–2412
13Pointers and References25–2613
14Dynamic Memory and Structures27–2814
15File Handling and Error Management29–3015
16Introduction to Object-Oriented Programming31–3216

Week-by-week schedule

Module 1 — Introduction to Programming and C++ (Week 1)

LectureTitleOutcomes
L01What Is a Program? Computers, Algorithms, and the C++ ToolchainCLO-1, PF-1.1, PF-1.2
L02Anatomy of a C++ Program: main, Statements, Compilation, and the Three Error ClassesCLO-1, PF-1.3, PF-1.4

Assessment due: none. First-week focus: every student leaves able to build and run a program (examples/hello_world.cpp).

Module 2 — Variables, Data Types, and Input/Output (Week 2)

LectureTitleOutcomes
L03Variables, Built-in Types, and Initialization (int, double, char, bool, const)CLO-2, PF-2.1, PF-2.2
L04Console I/O with cin/cout: Streams, Formatting, and Input Validation Basics (Lab 1)CLO-2, PF-2.3, PF-2.4

Assessment due: Lab 1 report.

Module 3 — Operators and Expressions (Week 3)

LectureTitleOutcomes
L05Arithmetic Operators, Precedence, and Integer vs Floating-Point DivisionCLO-2, PF-3.1, PF-3.2
L06Type Conversions, Compound Assignment, and Mixed-Type ExpressionsCLO-2, PF-3.3, PF-3.4

Assessment due: Assignment 1 (I/O, types, arithmetic).

Module 4 — Decision-Making Statements (Week 4)

LectureTitleOutcomes
L07if, if/else, and Nested SelectionCLO-3, PF-4.1, PF-4.2
L08switch, Multi-Way Selection, and the Conditional Operator (Lab 2)CLO-3, PF-4.3, PF-4.4

Assessment due: Lab 2 report.

Module 5 — Loops and Repetition (Week 5)

LectureTitleOutcomes
L09while and do-while: Sentinel and Input-Controlled LoopsCLO-3, PF-5.1, PF-5.2
L10for, Nested Loops, break/continue, and Loop PatternsCLO-3, PF-5.3, PF-5.4

Assessment due: Quiz 1 (Modules 1–4).

Module 6 — Problem-Solving and Algorithm Design (Week 6)

LectureTitleOutcomes
L11From Problem to Algorithm: IPO Charts, Decomposition, Pseudocode, FlowchartsCLO-4, PF-6.1, PF-6.2
L12Desk-Checking, Trace Tables, and Test-Case Design (Lab 3)CLO-4, PF-6.3, PF-6.4

Assessment due: Lab 3 report.

Module 7 — Functions Fundamentals (Week 7)

LectureTitleOutcomes
L13Defining and Calling Functions: Parameters, Return Values, voidCLO-5, PF-7.1, PF-7.2
L14Scope, Lifetime, and Program Decomposition with FunctionsCLO-5, PF-7.3, PF-7.4

Assessment due: Assignment 2 (loops + functions).

Module 8 — Advanced Function Concepts (Week 8)

LectureTitleOutcomes
L15Function Overloading, Default Arguments, and Reference ParametersCLO-5, PF-8.1, PF-8.2
L16Debugging Methodology and Midterm Review · MIDTERM EXAM (Lab 4)CLO-1–5, PF-8.3

Assessment due: Midterm exam (L01–L15, 90 min, closed book) · Lab 4 report.

Module 9 — One-Dimensional Arrays (Week 9)

LectureTitleOutcomes
L171-D Arrays: Declaration, Indexing, Bounds, and the Array–Memory ModelCLO-6, PF-9.1, PF-9.2
L18Array Algorithms: Fill, Print, Sum/Average, Min/Max, Count, Linear SearchCLO-6, PF-9.3, PF-9.4

Assessment due: Quiz 2 (Modules 5–8).

Module 10 — Two-Dimensional Arrays (Week 10)

LectureTitleOutcomes
L192-D Arrays: Declaration, Row/Column Indexing, Nested TraversalCLO-6, PF-10.1, PF-10.2
L202-D Operations: Row/Column Totals, Matrix Addition, Transpose, Passing to Functions (Lab 5)CLO-6, PF-10.3, PF-10.4

Assessment due: Assignment 3 (arrays) · Lab 5 report.

Module 11 — Strings and Character Processing (Week 11)

LectureTitleOutcomes
L21Characters and Strings: char Processing and the std::string ClassCLO-6, PF-11.1, PF-11.2
L22String Algorithms: Reverse, Palindrome, Counting, Word ProcessingCLO-6, PF-11.3, PF-11.4

Assessment due: Quiz 3 (Modules 9–10).

Module 12 — Searching and Sorting (Week 12)

LectureTitleOutcomes
L23Linear Search vs Binary Search: Correctness and ComparisonsCLO-6, PF-12.1, PF-12.2
L24Selection Sort and Bubble Sort: Tracing, Swapping, Complexity Intuition (Lab 6)CLO-6, PF-12.3, PF-12.4

Assessment due: Lab 6 report · Capstone project proposal.

Module 13 — Pointers and References (Week 13)

LectureTitleOutcomes
L25Pointers: Addresses, &, *, nullptr, and Pointer ArithmeticCLO-7, PF-13.1, PF-13.2
L26References, Pass-by-Value vs Pass-by-Reference, and Arrays as PointersCLO-7, PF-13.3, PF-13.4

Assessment due: Assignment 4 (2-D arrays + strings).

Module 14 — Dynamic Memory and Structures (Week 14)

LectureTitleOutcomes
L27Dynamic Memory: new, delete, Leaks, Dangling Pointers, std::vector as Managed MemoryCLO-7, PF-14.1, PF-14.2
L28Structures: struct Definition, Members, Nesting, Arrays/Files of RecordsCLO-7, PF-14.3, PF-14.4

Assessment due: none (project milestone week 14 Friday).

Module 15 — File Handling and Error Management (Week 15)

LectureTitleOutcomes
L29Text Files with ifstream/ofstream: Reading, Writing, Appending, EOFCLO-8, PF-15.1, PF-15.2
L30Robust Programs: Stream State, Error Checking, Recovery Strategies (Lab 7-type clinic, project work)CLO-8, PF-15.3, PF-15.4

Assessment due: Lab 6 (project clinic) report.

Module 16 — Introduction to Object-Oriented Programming (Week 16)

LectureTitleOutcomes
L31Classes: Data + Behavior, Constructors, EncapsulationCLO-8, PF-16.1, PF-16.2
L32From Structs to Classes, Course Synthesis · FINAL EXAMCLO-1–8, PF-16.3

Assessment due: Final exam (120 min, cumulative, emphasis Modules 9–16) · Capstone demo & code review (separate session).


Assessment calendar (authoritative)

ItemWeekLecture slotWeight (component overall)
Lab 12L04 week10 % (labs)
Assignment 13due L0620 % (assignments, drop lowest 1 of 8)
Lab 24L08 week—
Quiz 1 (M1–4)5L10 (15 min)15 % (quizzes, drop lowest 2 of 16)
Lab 36L12 week—
Assignment 25due L14 (week 7)—
Lab 4 · Midterm8L16 week15 % exam
Quiz 2 (M5–8)9L18 (15 min)—
Assignment 39–10due L20 (week 10)—
Lab 510L20 week—
Quiz 3 (M9–10)11L22 (15 min)—
Lab 6 · Project proposal12L24 week10 % project
Assignment 412–13due L26 (week 13)—
Project milestone14L28 week—
Lab 7 (robustness clinic + project pass)15L30 week—
Practical (variants A–D)15–16lab session5 % practical
Final · Capstone demo16L32 week25 % exam · project demo

Progression design (why this order)

  1. M1–M3 build the vocabulary of values (programs → variables → expressions) with no control flow: every program is a straight line.
  2. M4–M5 add control (selection → repetition), each fully supported by the straight-line vocabulary already mastered.
  3. M6 consolidates before abstraction: students formalize the design and checking habits used informally since L01 — exactly before functions demand them.
  4. M7–M8 introduce abstraction (functions) on single-purpose problems, then scale to overloading/references — the reference idea here prepares pointers in M13.
  5. M9–M12 are data modules: 1-D arrays → 2-D arrays → strings (a vector-of-chars view) → algorithms over collections (search/sort). Each module reuses the previous collection type, so only one new concept lands at a time.
  6. M13–M14 reveal the machine (addresses, dynamic memory, records) — now meaningful because students have felt why vectors/strings exist.
  7. M15–M16 are integration: persistence and error handling, then the class as "a struct that protects its own data" — the bridge to OOP courses.

No module introduces two independently new hard ideas. Every module's prerequisites are exactly the modules before it that it names.

Scheduling notes for adopters

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