data-centric-computing / dcic-public

Repository for (for now) filing bug reports about DCIC.
19 stars 2 forks source link

[DCIC]: "Processing lists" chapter -- placement, dependencies, etc #5

Open dbp opened 2 years ago

dbp commented 2 years ago

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):

9 | From Tables to Lists 10 | Processing Lists 11 | Introduction to Structured Data 12 | Collections of Structured Data 13 | Recursive Data

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 and rest or link() and empty. 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").

debanjan16 commented 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.