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
The course handbook: how the course works, what is assessed, and how to navigate 32 lectures and 144 student case studies.
- New here? Read Course Overview first.
- Planning your semester? See the Course Outline — it links every lecture and lists the cases used in each.
- Teaching this course? Teaching Methodology and the Instructor Guide are for you.
- Looking for a term? Check the Glossary or FAQ.
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
- Course Overview
- Learning Outcomes
- Course Outline — all 32 lectures with case ranges
- Teaching Methodology
- Assessment Plan
- Instructor Guide
- Resources
- Glossary
- FAQ
- Deployment — how the site is built and published
- Handover Report — repository handover: stack, commands, and the instructor's remaining manual tasks
- Final Audit Report — pre-publication audit across curriculum, cases, security, site, and workflows
- Case Review — pedagogical audit of all 128 cases
- Topic-Coverage Heatmap — which topics the cases cover, lecture by lecture (with CSV and SVG heatmap)
- Case-study catalog — all 144 cases
- Lectures 01–32 — each folder holds the plan, notes, worked examples, and the lecture quiz (see the outline for per-lecture links)
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
- Lecture 01Thinking in Problems
- Lecture 02Pseudocode as Precision
- Lecture 03Flowcharts and Control Flow
- Lecture 04First Python: State and Sequences
- Lecture 05Numbers, Remainders, and Cycles
- Lecture 06Traces and Loop Reasoning
- Lecture 07Debugging as a Method
- Lecture 08Testing Before Trusting
II · Lectures 09–16
Core Techniques
- Lecture 09Aggregation Patterns
- Lecture 10Strings Under the Lens
- Lecture 11Lists and Slicing
- Lecture 12Debugging Lab: Real Defects
- Lecture 13Dictionaries and Sets
- Lecture 14Functions and Reuse
- Lecture 15Counting, Combinatorics, and Choice
- Lecture 16Mid-Course Consolidation
III · Lectures 17–24
Algorithms
- Lecture 17Searching and Linear Scans
- Lecture 18Sorting and Pair Scans
- Lecture 19Invariants and Two Pointers
- Lecture 20Brute Force and When It Wins
- Lecture 21Binary Search Everywhere
- Lecture 22Recursion and Divide-and-Conquer
- Lecture 23Greedy and Dynamic Programming
- Lecture 24Graphs as Models
IV · Lectures 25–32
Data Science & Strategy
- Lecture 25Thinking with Data
- Lecture 26Counting and Probability in Data
- Lecture 27Tables, Cleaning, and Anomalies
- Lecture 28Summaries That Don't Mislead
- Lecture 29Simulation as a Way of Knowing
- Lecture 30Optimization Formulations
- Lecture 31Strategy Under Uncertainty
- Lecture 32The Whole Toolbox: Capstone Cases
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
- Case-study catalogAll 144 cases by lecture and difficulty.
- Labs12 hands-on machine sessions.
- Quizzes8 self-check quizzes (answers discussed in class).
- Assignments6 graded assignments with rubrics.
- Projects3 project options with proposal template and rubric.
- In-class activitiesCase relay, complexity duel, sketch-that-flow.
- ResourcesPython setup and pseudocode style guide.
- Slide decksProjection-ready decks for all 32 lectures.