Course Overview
What this course is
Problem Solving — Computer Science & Data Science is a 32-lecture course (2 hours per lecture, 64 contact hours total) built around interactive, case-based problem solving. Rather than lecturing first and exercising later, each lecture presents short problems on a projector: students attempt them for about five minutes, then the class unpacks the solution together.
The course serves students in their first, second, and third semesters of Computer Science and Data Science programmes. It works both as a stand-alone problem-solving course and as a companion to parallel introductory programming and mathematics courses.
Design principles
- Problem first, technique second. Techniques are introduced as answers to problems students have already struggled with.
- Five minutes is enough. Every case is sized so a focused attempt fits in roughly five minutes; depth comes from the discussion afterwards.
- Same case, many levels. Each case states core requirements everyone completes, plus optional extensions for stronger students.
- Reasoning is the product. Solutions are judged by the quality of explanation — pseudocode, flowcharts, or prose — not by whether code runs first time.
- Nothing unexplained. Every tool used in a case (a Python feature, a math idea) is either taught earlier in the course or explained inline.
What students will be able to do
By the end of the course students can: decompose problems, reason with algorithms and pseudocode, trace and debug programs, test systematically, analyse running time, use math as a modelling tool, and choose strategies for unfamiliar problems. Full statements are in Learning Outcomes.
Course arc (four blocks)
| Block | Lectures | Focus |
|---|---|---|
| I — Foundations | 01–08 | Computational thinking, pseudocode, flowcharts, first Python, traces and debugging |
| II — Core techniques | 09–16 | Iteration patterns, lists and strings, tables and grids, functions, sets, counting, math modelling |
| III — Algorithms | 17–24 | Searching, sorting, binary search, recursion, greedy thinking, dynamic programming, graph basics |
| IV — Data science & strategy | 25–32 | Data cleaning, summarisation, visual reasoning, statistics, simulation, optimisation, capstone cases |
Workload
| Component | Per lecture | Total |
|---|---|---|
| Contact hours | 2 | 64 |
| In-class cases attempted | 4 base + applied extras | 144 across the course |
| Short homework (optional but recommended) | ≈ 30 min | ≈ 16 h |
| Labs, quizzes, assignments, project | — | see Assessment Plan |
Difficulty progression
Cases are tagged Beginner, Foundational, Intermediate, Advanced, or Expert. First-semester students are expected to succeed on Beginner and Foundational cases and many Intermediate ones; Advanced and Expert cases are discussion targets for the whole class and stretch goals for individuals. The mix per block shifts from roughly 70% Beginner/Intermediate in Block I to roughly 60% Advanced/Expert in Block IV, so the same course serves all three semesters.
Mandatory vs enrichment
- Mandatory: the core case sequence of every lecture, four labs, all quizzes and assignments, one term project.
- Enrichment: every case's Extensions section, expert-level cases beyond a lecture's core four, the enrichment activities, and the second term project. Instructors may skip enrichment without breaking the course.