Writing programs is the most precise form of thinking, and as such, everybody should—and everybody can—be taught to program as part of a college education. My teaching approach is informed by and supports this claim. I am well-equipped to teach programming, software engineering, compilers, theory of computation, programming languages, algorithms, and theorem proving at the undergraduate or graduate level. Inside the Classroom For the past several years at Northeastern, I have taught programming from first principles, making no assumptions on students ’ background beyond basic high school level training in algebra. I focus on (1) the design recipe, originally developed as part of the How to Design Programs curriculum , which is an intellectual tool to help go from a blank page to a fully developed solution in a systematic and step-by-step way; (2) the design-by-contract methodology, originally developed by Bertrand Meyer, which focuses on a specification driven program development, and (3) pair programming and public code review, which instills social skills needed to articulate and evolve complex designs in groups
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.