Covers the rod cutting problem and the change-making problem to optimize recursive calls and find the minimum number of coins needed for a given amount of money.
Introduces Dynamic Programming, focusing on saving computation by remembering previous calculations and applying it to solve optimization problems efficiently.
Explores the representation and transformation of values, focusing on closure conversion and the challenges of representing functions in functional languages.
Explores parsing text into trees using parser combinators in Scala, covering filtering, transforming, sequencing, alternatives, recursion, spaces handling, lexing, monadic nature, and for-notation.