A first programming course should not be directed towards learning a particular programming language, but rather at learning to program well; the programming language should get out of the way and serve this goal. The simple, powerful Racket language (related to Scheme) allows us to concentrate on the fundamental concepts and techniques of computer programming, without being distracted by complex syntax. As a result, this book can be used at the high school (and perhaps middle school) level, while providing enough advanced concepts not usually found in a first course to challenge a college student. Those who have already done some programming (e.g. in Java, Python, or C++) will enhance their understanding of the fundamentals, un-learn some bad habits, and change the way they think about programming. We take a graphics-early approach: you'll start manipulating and combining graphic images from Chapter 1 and writing event-driven GUI programs from Chapter 6, even before seeing arithmetic. We continue using graphics, GUI and game programming throughout to motivate fundamental concepts. At the same time, we emphasize data types, testing, and a concrete, step-by-step process of problem-solving. After working through this book, you'll be prepared to learn other programming languages and program well in them. Or, if this is the last programming course you ever take, you'll understand many of the issues that affect the programs you use every day.
Cited By
- Walker H (2015). Computational thinking in a non-majors CS course requires a programming component, ACM Inroads, 6:1, (58-61), Online publication date: 9-Feb-2015.
- Ramsey N On teaching *how to design programs* Proceedings of the 19th ACM SIGPLAN international conference on Functional programming, (153-166)
- Ramsey N (2014). On teaching *how to design programs*, ACM SIGPLAN Notices, 49:9, (153-166), Online publication date: 26-Nov-2014.
- Bloch S and Stemkoski L (2013). Functional game programming in Java-based CS1, Journal of Computing Sciences in Colleges, 29:2, (154-161), Online publication date: 1-Dec-2013.