Skip to main content

Learning Resources

This module is populated from the local chunked copy of How to Solve It by Computer (Dromey) in library/raw/semester-01-math-foundations/books. Use this page as a source map, not as an instruction to read everything.

Source Stack

BookRoleHow to use it in this module
How to Solve It by Computer (Dromey)Primary teaching sourceDefault escalation for Polya discipline, strategy selection, termination, verification, and the transition from problem to algorithm
How to Solve It (Polya, external)Conceptual backboneRead-if-curious; the four phases and heuristic catalogue originate here. Wikipedia summary cited below is sufficient for most needs
Mathematics for Computer Science (MCS)Selective supportUse only for proof-technique reinforcement (contradiction, induction, invariants)
Introduction to ProbabilitySelective supportStory-proof chapter is a strong example of constructive-versus-counting reasoning
Linear Algebra and Its Applications (Strang)Selective supportUse only for worked-problem examples of plan-versus-execution discipline

Resource Map by Cluster

Cluster 1: Polya's Four-Phase Framework

NeedBest local chunkWhy
getting started on a problemDromey: 1.2.2 Getting started on a problemBest first pass on the "what am I actually being asked?" move
general problem-solving strategiesDromey: 1.2.6 General problem-solving strategiesCatalogues the heuristic moves Polya names abstractly
carrying out a plan with verificationDromey: 1.5 Program verificationStrongest short explanation of per-step justification in code and proofs
looking-back analogue: efficiency reviewDromey: 1.7.1 Computational complexityGood example of the "can this be faster?" review move
NeedBest local chunkWhy
working-backwards examplesDromey: 1.2.6 General problem-solving strategiesContains concrete backward-reasoning examples
choosing a suitable data structure (analogy reinforcement)Dromey: 1.3.2 Choice of a suitable data structureStrong example of matching problem shape to known tool
special-cases and average-case thinkingDromey: 1.7.4 Probabilistic average case analysis (Part 1)Good drill on isolating one variable at a time

Cluster 3: Structural Reasoning and Construction

NeedBest local chunkWhy
verification with branchesDromey: 1.5.5 Verification of program segments with branchesStrongest piece on invariant preservation across branching
proof of terminationDromey: 1.5.8 Proof of terminationBest short treatment of monovariants and termination
loop terminationDromey: 1.3.6 Termination of loopsCompact reinforcement of finiteness discipline
late-termination inefficiency (DP/D&C tradeoff)Dromey: 1.6.2 Inefficiency due to late terminationUseful when deciding between divide-and-conquer and DP on efficiency grounds
complexity as a strategic lensDromey: 1.7.1 Computational complexityFrames paradigm choice in terms of asymptotic payoff

Cluster 4: Meta-Cognition and Growth as a Solver

NeedBest local chunkWhy
debugging programsDromey: 1.4.4 Debugging programsBest bridge from "program doesn't work" to "where is the reasoning bug?"
verification as a debugging aidDromey: 1.5 Program verificationReinforces localization and per-step justification

Cluster 5: Problem-Solving as the Bridge to Computing

NeedBest local chunkWhy
informal prompt to formal problemDromey: 1.1 IntroductionFrames the problem-to-algorithm pipeline and the role of a precise problem statement
extracting the problem statement itselfDromey: 1.2.2 Getting started on a problemStrongest short treatment of moving from vague prompt to actionable question, including assumption surfacing
specs and per-step post-conditionsDromey: 1.5 Program verificationPre- and post-conditions as the vocabulary of a code spec
reading unfamiliar code (termination and invariants)Dromey: 1.5.8 Proof of terminationSupplies the termination-measure discipline needed to understand someone else's loop
reading code as a debugging skillDromey: 1.4.4 Debugging programsBridges code reading to bug triage
triage, strategy under constraintDromey: 1.2.6 General problem-solving strategiesStrategy catalogue, useful when choosing what to try first under a time budget

Probability note: Introduction to Probability (Blitzstein/Hwang) consistently translates English story problems into formal sample-space specifications. The opening chapters are a working model of informal-to-formal translation in a non-trivial domain; use them as exemplars if the Dromey chunks feel too code-centric.

External Resources (Read-If-Curious)

These are optional external anchors cited in the literature. None are required for module completion.

  • How to Solve It by George Polya: the original four-phase framework (Wikipedia summary)
  • Alan Schoenfeld, Learning to Think Mathematically, 1992: the standard academic treatment of metacognition in problem solving (PDF)
  • Terence Tao, "Solving mathematical problems": a practicing research mathematician's advice (terrytao.wordpress.com)
  • Art of Problem Solving (artofproblemsolving.com): a community resource for contest-level problem training, with wiki and exercise archive
  • Project Euler (projecteuler.net): mathematical programming challenges graded by difficulty
  • SICP §1.1, Structure and Interpretation of Computer Programs (mitpress.mit.edu SICP Ch. 1.1): classical introduction to specifying computations precisely before implementing them -- good exemplar for the informal-to-formal translation concept

Use these only if you want additional volume after the module work is complete.

Use Rules

  • If you are stuck on "what is even being asked?", go to Dromey 1.2.2 first.
  • If you are stuck on "what should I try?", go to Dromey 1.2.6.
  • If your proof passed but felt shaky, go to Dromey 1.5 (verification).
  • If your code runs but gives the wrong answer, go to Dromey 1.4.4 (debugging) before rewriting.
  • Do not read linearly through Dromey. Open a single chunk for a single concept gap.
  • If re-reading is not fixing the problem, stop and rewrite the plan in your own words before reading more.