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