Posted just 3 weeks ago by the same user no less <a href="https://news.ycombinator.com/item?id=35478871" rel="nofollow">https://news.ycombinator.com/item?id=35478871</a>
There's a lot of speculation about the approach used by this book to teach programming. It's the book that my own daughter used as a freshman in college. It was her first programming class, and she ended up deciding to major in CS.<p>The programming language taught in this book is Scheme. Students are introduced to programming concepts and language features gradually and the assignments are intended to be implemented using a growing subset of Scheme features as the students learn the language. By the end of the semester my daughter was familiar with much of Scheme and was comfortable with subjects like recursion, lambda functions, list handling, map functions, and closures. I'm not sure but I don't believe that she learned about continuations or macros.<p>Some comments mention the "toy" languages used in the book, but these aren't really toys, just subsets of Scheme that provide guard rails to keep the students from wandering into parts of Scheme that they haven't yet learned.<p>Another notable feature of the <i>How to Design Programs 2nd Edition</i> is its introduction of a defined sequence of steps for breaking a problem down into parts that are implemented as collection of functions that make up the solution.
I think this approach to the issue of 'what language to start with' has a serious flaw for basic programming instruction:<p>> "Our solution is to start with our own tailor-made teaching language, dubbed “Beginning Student Language” or BSL."<p>The only time the use of a toy language makes sense is if you're learning how to create a programming language in the context of understanding compilers, e.g.<p><a href="https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html" rel="nofollow">https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index...</a><p>Otherwise it's doing the students a disservice as they'll never use the language again and will have to relearn a whole new syntax later on. It's also far better to learn in a widely used language because there will be a wide variety of resources that can help you solve simple problems (and this is even more true in the era of ChatGPT).<p>The argument that a simplified language makes it easier for students to grasp high-level concepts doesn't work either: instead just use a restricted well-defined subset of a language like C, C++, Java, Python, Javascript - and explain to the students the rationale for doing so.
The copyright says 2014, the foreword says they spent 15 years on the 2nd edition since 1995-2000.<p>It also says it was released the 6th of March 2023<p>So is it new or not?