Summarize the main ideas of this chapter. Can you describe them in terms of different levels of abstraction?
How is abstraction reflected in the structure of this book (described in the introduction of the book)?
Find information about the evolution of programming languages. Explain connections between different characteristics of each language and the heuristics discussed in this chapter. Explain how each generation of programming languages helped reduce some of the cognitive complexity involved in software development.