1. Introduction: Starting to Think Like a Programmer
2. A Strategy for Solving Problems
3. Description Languages & Representations
4. Problems of Choices and Repeated Actions
5. Calculating and Keeping Track of Things
6. Extending our Vocabulary: Data & Control Abstractions
7. Object Orientation: Taking a Different View
8. Looking Forward to Program Design
9. Reflections