Problem Solving — Computer Science & Data Science

A complete 32-lecture course in computational thinking: every session is built around live case studies — students get five minutes to attack a real problem, then the class dissects the solution and its alternatives together.

Designed for 1st–3rd-semester Computer Science and Data Science students; no prior programming required.

  • 32 lectures × 2 h
  • 144 case studies
  • 12 labs · 8 quizzes · 6 assignments · 3 projects

Start with Lecture 01 Course overview Browse all cases

The course handbook: how the course works, what is assessed, and how to navigate 32 lectures and 144 student case studies.

The homepage of the built site additionally carries the 32-lecture grid and direct links to every material type.

What is public, and what is not

The public site publishes the handbook, all lecture plans and notes, all student-facing case studies, quizzes (without answer keys), and the student side of labs, assignments, projects, and activities. Instructor solutions and every answer-key directory are excluded at build time — the build fails loudly rather than publish them. Full instructor materials are distributed separately (see Instructor Guide).

Site map

Using this repository

Everything is plain Markdown validated by scripts/validate.py. To rebuild the site locally:

python scripts/build_site.py
python -m http.server 8000 --directory site

The site is dependency-free (plain HTML + one stylesheet); search.html runs entirely in the browser over pages.json.

License

Tooling is MIT-licensed; teaching content is CC BY 4.0. See LICENSE.

I · Lectures 01–08

Foundations

II · Lectures 09–16

Core Techniques

III · Lectures 17–24

Algorithms

IV · Lectures 25–32

Data Science & Strategy

Learning goals

Graduates of this course can turn a messy problem into a method:

  • Analyse a problem — inputs, outputs, constraints, assumptions, edge cases.
  • Decompose it, design an algorithm, and express it as pseudocode or a flowchart.
  • Trace, debug, and test before trusting a solution.
  • Reason about efficiency and compare alternative approaches honestly.
  • Apply searching, sorting, recursion, greedy and dynamic-programming thinking, graphs, and simulation to real data-oriented problems.

Learning materials