Open dbp opened 2 years ago
This is a feeling I also had while reading the chapters. Specifically after reading the authors' research about teaching structural recursion before generative recursion. I understand that arriving at lists from Tables appear much more natural to students. But something was missing and I couldn't put it exactly in words which the @dbp has done very clearly.
Contact Details
dbp@dbpmail.net
What's your suggestion?
This is a bit of a structural critique, hopefully that's appropriate and appreciated.
In order to reference chapters by number, I'm including the current numbering (all in v. https://dcic-world.org/2021-08-21):
In 9, we are introduced to lists as the result of extracting columns, and then a series of data-sciencey operations on them -- this all makes sense.
It's after this that it feels like things get muddled. In chapter 10, we learn that lists are an example of structured data (our first! What is structured data? Not a lot of explanation.) and that they are composed of
first
andrest
orlink()
andempty
. We then learn, by example, to write recursive functions on them.Then, in chapter 11, we get a much more systematic introduction to structured data, with fields, how to program against them, define them, etc.
In chapter 12, we learn about collections -- lists and sets. But we don't define them -- we just re-use the existing definitions, sort of combined with data definitions (which, given what we learned in 10, seems strange).
Finally, in chapter 13, we finally start talking about recursive data -- including some really nice diagrams, a systematic description of how to write functions that process them, etc.
What feels out of place about all of this is chapter 10 -- it's trying to get students to do recursion without having understood the structure that makes recursion make sense (made me think of https://parentheticallyspeaking.org/articles/how-not-to-teach-recursion/), and only many chapters later do we have all the pieces to actually really get what we are doing. Some amount of explore-before-understanding seems fine -- but I think chapter 9 does that quite well. Chapter 9 gives a good intuition about sequences of data, builds upon the earlier content with tables (so it's a nice transition), but it doesn't peek under the hood.
Whereas 10, especially with the backtracking into 11 and slight intro in 12 just seems... out of place. It seems like Chapter 10 could just be removed and whatever content of it could be incorporated as exercises to 13, with a little bit of "this nl-list is a specialized-to-Number version of exactly the lists you used in Chapter 9 -- now you can write your own functions to process them, just like the library functions you used before").