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

  1. Problem first, technique second. Techniques are introduced as answers to problems students have already struggled with.
  2. Five minutes is enough. Every case is sized so a focused attempt fits in roughly five minutes; depth comes from the discussion afterwards.
  3. Same case, many levels. Each case states core requirements everyone completes, plus optional extensions for stronger students.
  4. Reasoning is the product. Solutions are judged by the quality of explanation — pseudocode, flowcharts, or prose — not by whether code runs first time.
  5. 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)

BlockLecturesFocus
I — Foundations01–08Computational thinking, pseudocode, flowcharts, first Python, traces and debugging
II — Core techniques09–16Iteration patterns, lists and strings, tables and grids, functions, sets, counting, math modelling
III — Algorithms17–24Searching, sorting, binary search, recursion, greedy thinking, dynamic programming, graph basics
IV — Data science & strategy25–32Data cleaning, summarisation, visual reasoning, statistics, simulation, optimisation, capstone cases

Workload

ComponentPer lectureTotal
Contact hours264
In-class cases attempted4 base + applied extras144 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