3 ms·
As context, here's an early paper describing the motivation behind the first edition, and why it chose a different approach from the famous Structure and Interp
by capnrefsmmat 9y ago
As context, here's an early paper describing the motivation behind the first edition, and why it chose a different approach from the famous Structure and Interpretation of Computer Programs:
Felleisen, M., Findler, R. B., Flatt, M., & Krishnamurthi, S. (2004). The structure and interpretation of the computer science curriculum. Journal of Functional Programming, 14(4), 365–378.
http://www.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf http://www.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf
A key paragraph:
> Over the past few years, we have developed an alternative approach to teaching the first course. We have translated the approach into a new text book, and we believe that it addresses SICP’s failings along four dimensions. First, the book discusses explicitly how programs should be constructed. Second, to tame the complexity of programming, it defines a series of teaching languages based on Scheme that represent five distinct knowledge levels through which students pass during their first course. The levels correspond to the complexity of data definitions that the program design guidelines use. Third, the book uses exercises to reinforce the explicit guidelines on program design; few, if any, exercises are designed for the sake of domain knowledge. Finally, the book uses more accessible forms of domain knowledge than SICP.
- amelius 9y ago> First, the book discusses explicitly how programs should be constructed. But is it right to assume and teach that there is only one way to do it? Aren't we continuously finding out new ways of constructing programs, and isn't it useful and fun to figure out new patterns while constructing new programs?
- open_bear 9y agoWirth said that program is a combination of data structures and algorithms in 1976, there were no _really_ new ways of constructing programs ever since. HtDP teaches exactly that: proper construction of abstractions, small functions that operate over these abstractions and how to combine everything into a useful software.
- amelius 9y agoSo software engineering techniques such as React and Redux were already known back in 1976? (Just an example)
- hex13 9y agoRedux for sure. Smalltalk had message based system like Redux has (with the difference that in smalltalk this system was object oriented). But functional programming also existed in 1976.