Principled Programming
This book is an introduction to computer programming aimed at the level of a first college course. It is also suitable as a monograph for people beyond the introductory level who are unfamiliar with its methodological content. The book's subject is programming principles, not programming language features. The programming notation used is the common core that is present in all imperative programming languages, including Java, Python, C/C++, and JavaScript, with a description of differences relegated to an appendix. In elementary Physics, one doesn't start learning mechanics by studying one or another brand of springs and pulleys; rather, one learns Newton's Laws, and how to apply them in arbitrary situations. Similarly, this book eschews the study of any particular brand of programming language, opting instead to focus on fundamental laws formulated as rules of program composition.The approach is distinctive in that it presents content to beginners that is often considered advanced. Notwithstanding this, it retains an introductory character-by avoiding formalism, offering intuitive analogies, and providing elementary explanations.Language-oriented introductions to programming are often encyclopedic tomes. In contrast, Principled Programming is a comparatively short, coherent, and digestible book that presents a compelling approach, knitted together by interesting, nontrivial examples woven throughout-a book that invites cover-to-cover reading.