Skip to main content

Reference and Selective Reading

You do not need to read the source books front-to-back for this module. Use the concept pages and practice pages first. Open these local chunks only when you need alternate exposition, more worked examples, or a deeper exercise lane.

Source Roles

SourceRoleWhy it is here
How to Solve It by Computer (Dromey)Primary teaching sourceBest available concrete bridge from Polya's problem-solving framework to algorithmic thinking, verification, and debugging
How to Solve It (Polya, external)Conceptual ancestorThe origin of the four phases; linked externally, not required
Mathematics for Computer ScienceSelective supportUsed only for contradiction, induction, and invariant reinforcement

Read Only If Stuck

Polya's Four-Phase Framework

Structural Reasoning and Construction

Debugging and Verification

Cluster 5: Problem-Solving as the Bridge to Computing

For informal-to-formal translation, reading unfamiliar code, and deadline-bounded triage. The most useful local material is the pre- / post-condition discipline in Dromey 1.5 and the getting-started and debugging chunks that treat problem statements as artifacts you construct, not find.

External anchors when the local chunks do not cover the specific angle:

Optional Deep Dive

Additional algorithmic case studies from Dromey that illustrate the module's strategies in action:

These are case studies, not required reading. They are valuable for seeing strategies instantiated as full algorithm designs.

Concept-to-Source Map

Primary conceptBest source if stuckWhy this source
Problem-solving begins with understandingDromey: 1.2.2 Getting started on a problemStrongest short treatment of "what am I actually being asked?"
Devising a planDromey: 1.2.6 General problem-solving strategiesConcrete heuristic catalogue with examples
Carrying out the planDromey: 1.5 Program verificationBest short treatment of per-step justification
Looking backDromey: 1.7.1 Computational complexityGood analogue for the "can this be faster or simpler?" review
Working backwardsDromey: 1.2.6 General problem-solving strategiesContains concrete backward-reasoning examples
Special cases and simplificationDromey: 1.7.4 Probabilistic average case analysis (Part 1)Good model of isolating one variable at a time
Patterns and analogiesDromey: 1.3.2 Choice of a suitable data structureStrong example of structural matching
Contradiction and invariantsDromey: 1.5.5 Verification of program segments with branchesBest treatment of invariant preservation
Construction and algorithmsDromey: 1.5.8 Proof of terminationCore treatment of finiteness and effectiveness
Divide-and-conquer and DPDromey: 1.6.2 Inefficiency due to late terminationUseful for paradigm-choice tradeoffs
Debugging mathematical and algorithmic reasoningDromey: 1.4.4 Debugging programsDirect treatment of localization and fix-vs-replan
Generalization, transfer, and research problemsDromey: 1.2.6 General problem-solving strategiesFrames heuristics as reusable across problems
Translating informal problems into formal specsDromey: 1.2.2 Getting started on a problemClosest short treatment of extracting a formal problem from a vague prompt
Reading code as problem-solvingDromey: 1.5 Program verificationPre- and post-conditions give the vocabulary you need to read someone else's loop
Problem-solving under deadlinesDromey: 1.2.6 General problem-solving strategiesStrategy catalogue useful when ranking sub-problems under a time budget

External Reference (Optional)