Programming Fundamentals Using C++

Instructor Information

Who teaches this course and how the support model works. No personal contact details are published on this site — your section's Learning Management System lists the instructor's name, office location, and office hours for the current term.

Teaching model

Audience: instructors, teaching assistants, and content authors. Student-facing counterpart: student/README.md.


1. Pedagogical stance

  1. Concepts before syntax, syntax before shortcuts. Every feature is introduced with the problem it solves before its grammar. Example: loops appear as "how do we avoid copy-pasting 100 lines?" before any for is shown.
  2. Live coding is the default mode. Students must watch programs being built, broken, and fixed in real time — including failures and compiler errors. A lecture without live coding is a reading session; use the notes.
  3. Tracing is the core skill. From week 4 onward, every lecture includes at least one desk-check (state table) exercise; this is what exams assess.
  4. Errors are curriculum. Common beginner errors (missing ;, = vs ==, integer division, off-by-one, uninitialized variables) are deliberately demonstrated, named, and collected in the lecture notes' "Common pitfalls" section.
  5. Typed memory pictures from day one. Variables are introduced with a box-and-value diagram; pointers in week 12 extend the same notation rather than introducing a new mental model.
  6. Two audiences, one course. CS students need the machine model (week 12 pointers, arrays-as-memory); DS students need data pipelines (week 13 files, week 14 STL). The schedule keeps both tracks honest without splitting.

2. Course-load calibration

This is a first course for students who have never programmed. Plan for:

3. Lecture delivery pattern (2-hour slot)

MinutesSegment
0–10Recall: one trace-table or predict-the-output question from last lecture
10–60New concept A: motivation → live coding → pitfalls
60–65Break (non-negotiable; retention collapses after ~60 min)
65–105New concept B (or the applied second half of concept A)
105–120In-class exercise (from exercises/in_class/) + exit question

Exit questions feed the next lecture's recall segment — a two-minute loop that surfaces misconceptions early.

4. Using the repository materials

5. TA guidelines (do/don't)

DoDon't
Ask "what have you tried? what did you expect?"Take the keyboard and type the fix
Point to the diagnostic line and teach reading itTranslate errors into silent rewrites
Sketch the memory/state diagramGive the assignment's final code
Encourage a debugging logSay "this is easy" — ever

6. Assessment construction

7. Calendar variants

8. Adapting the course

If you fork/adopt this course:

  1. Keep the outcome codes (PF-…) so assessment mapping remains traceable.
  2. Record local policy changes (grading, integrity, late policy) in COURSE_OVERVIEW.md § 4 rather than editing assessments silently.
  3. Maintain the audience split: never move instructor-only material into student-facing folders; see instructor/ACCESS_CONTROL.md.
  4. Log changes in docs/CHANGELOG.md.

9. First-time instructor checklist

Support model

Course policies

Catalog-style description · module structure · policies · grading · support model


1. Course identification

FieldValue
TitleProgramming Fundamentals Using C++
LevelUndergraduate (year 1)
Duration16 weeks · 16 modules (module n in week n)
Lectures32 (two per week) × 2 hours = 64 contact hours + labs
Credits3 + 1 (adjust to local credit rules)
Language of instructionEnglish (adjust locally)
Primary language taughtC++ (C++17 standard) — see docs/CPP_STANDARD.md

1.1 Description

A first course in structured programming using C++ for students with no prior programming experience. The curriculum progresses through sixteen modules — from what is a program? through types, operators, decisions, loops, algorithm design, functions, arrays (1-D and 2-D), strings, searching and sorting, pointers and references, dynamic memory and structures, file handling and error management, to an introduction to object-oriented programming. Students learn to design, implement, trace, test, and debug small programs, with the emphasis on correct reasoning about program behavior rather than syntax memorization. The module sequence deliberately prepares both target audiences: the machine-model track (pointers, memory, arrays) for BS Computer Science students, and the data track (files, records, string processing) for BS Data Science students.

1.2 Intended audience

1.3 Prerequisites

None. Basic secondary-school algebra is assumed. No prior exposure to programming, the command line, or compiler tooling is assumed — these are taught in Module 1.

1.4 What this course is not


2. Module structure (summary)

ModuleThemeNew "hard idea"
1Introduction to Programming and C++the translation pipeline
2Variables, Data Types, and Input/Outputnamed, typed memory
3Operators and Expressionsexpressions as computed values
4Decision-Making Statementsconditional execution
5Loops and Repetitioncontrolled repetition
6Problem-Solving and Algorithm Designdesign & verification as skills
7Functions Fundamentalsabstraction & the call stack
8Advanced Function Conceptsoverload resolution, references
9One-Dimensional Arrayscollections & indices
10Two-Dimensional Arraysgrids & row-major layout
11Strings and Character Processingtext as processable data
12Searching and Sortingalgorithm comparison & cost
13Pointers and Referencesaddresses & indirection
14Dynamic Memory and Structuresheap lifetime & records
15File Handling and Error Managementpersistence & robustness
16Introduction to Object-Oriented Programmingdata + behavior + access control

The authoritative week-by-week plan with lecture titles, outcomes, and the assessment calendar is COURSE_SCHEDULE.md. The outcome system (CLO-1…8, PF-m.n) is LEARNING_OUTCOMES.md.


3. Weekly rhythm

SlotActivityDuration
Lecture AModule concept part 1 + live coding2 h
Lecture BModule concept part 2 + in-class exercises2 h
Labs (weeks 2, 4, 6, 8, 10, 12, 15)Supervised practice per labs/2 h
HomeworkReleased at second lecture, due before next module ends~4–6 h self-study

4. Assessment & grading

ComponentWeightDetails
Quizzes (16 module quizzes, drop lowest 2)15 %15 min each, week n's second lecture
Programming assignments (8, drop lowest 1)20 %40 marks each, ~every 2 weeks
Lab reports (16 labs)10 %checkpoint-based, weeks 2–15
Midterm (week 8, L16)15 %90 min, closed book, Modules 1–8
Final (week 16, L32)25 %120 min, cumulative, emphasis Modules 9–16
Practical coding assessment5 %2-hour supervised lab exam (variants A–D)
Capstone project (P5)10 %proposal wk 12 · milestone wk 14 · demo wk 16

Pass threshold: ≥ 50 % overall and ≥ 40 % on the final exam (local policy may adjust). The assessment calendar is COURSE_SCHEDULE.md § Assessment calendar; rubrics live next to each assessment.

4.1 Late policy (suggested)

Assignments: −10 % per 24 h up to 3 days, then instructor discretion. Documented illness/exception: equal-footing extension.

4.2 Academic integrity

Collaboration at the idea level only; every submitted line must be written and understood by you. Similarity checks apply; first violation zeroes the item, second fails the course. Suggested AI policy: assistants may explain errors, not write submitted code (see student/GETTING_HELP.md § 4).

5. Required tools

All free; setup in docs/TOOLCHAIN.md: a C++17 compiler (MinGW-w64 / MSVC / Xcode CLT / gcc), VS Code with the C/C++ extension. Verification (Module 1, L01):

g++ -std=c++17 -Wall -Wextra -pedantic examples/hello_world.cpp -o hello

6. Content access policy

Student-visible: lecture planning files, examples, lab manuals, exercise statements, project specs, review guides. Instructor-only: solution folders, quiz keys, exam papers, pacing guide — the complete restricted-path map and the semester-mirror workflow are in instructor/ACCESS_CONTROL.md.

7. Support model

8. Accessibility & inclusion

Text-first markdown materials (screen-reader friendly); live coding always paired with spoken explanation and posted notes; culturally neutral problem contexts across science, data, games, and text processing. Accommodation requests in week 1 — no reason needs to be disclosed.

9. Versioning

Materials carry a semester tag (2026-fall). Changes are logged in docs/CHANGELOG.md; adaptation guidance for adopting instructors is in TEACHING_GUIDE.md § 8.

Contributing and contact

Corrections and improvements to the course materials follow the repository's contributing rules. Students: report broken links or confusing passages to your instructor or TA — the materials improve every term from exactly such reports.

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