Design of Computer Programs by Peter Norvig
-
Steps of the design process and developing for clarity and generality.
-
Arguments for program correctness and exprimentation and simulation.
-
Design trade-offs; Simplicity and clarity; Decomposition and composability.
-
Back of envolope calculations: When to use brute force and when to be clever.
-
The Zebra puzzle: Generator expressions.
-
Permutations and combinations.
-
Cryptarithmetic; Recursive and wishful thinking; Longest palindrome substring algorithm;
-
Defining the language of regular expressions and interpreting the language.
-
Defining the set of strings matched by regular expression
-
Other languages.
-
Search: finding your way with a flashlight or boat.
-
Analying the efficiency of algorithm.
-
Recurrence relations and matching data types with algorithms.
-
Probability: the game of Pig.
-
Maximizing expected utility to optimize strategy.
-
Managing complexity
-
Large sets of words
-
Appropriate data structures