<story><title>How to Design Programs 2nd Edition</title><url>https://htdp.org/2023-3-6/Book/index.html</url></story><parent_chain><item><author>michidk</author><text>I read the abstraction chapter, but I really have a hard time translating those concepts to different languages like Rust. Seems like this book is very specific to this Racket-based teaching language?</text></item></parent_chain><comment><author>chongli</author><text>The racket-based teaching language is actually a series of languages that progress in complexity. The beginner version is very simplified, which makes it perfect for students working on assignments since they won’t be distracted by advanced language features.&lt;p&gt;The specific concepts in the book translate to other functional programming languages, and almost not at all to imperative programming.&lt;p&gt;The general thesis of the book, that you should follow a design recipe, is a universal one. It teaches you how to design your functions and write the documentation before you begin the implementation. This is also the part that students are the worst at, in my experience (as a TA for a first year course based on this book, twice).</text></comment>
<story><title>How to Design Programs 2nd Edition</title><url>https://htdp.org/2023-3-6/Book/index.html</url></story><parent_chain><item><author>michidk</author><text>I read the abstraction chapter, but I really have a hard time translating those concepts to different languages like Rust. Seems like this book is very specific to this Racket-based teaching language?</text></item></parent_chain><comment><author>zabzonk</author><text>concepts presented seem pretty basic to any programmming language - what were you having problems with?</text></comment>