On Tue, Feb 2, 2016 at 1:28 AM, kirby urner <kirby.ur...@gmail.com> wrote:
> > We remember that Scheme (PLT version in particular) came with "levels" > i.e. one could actually set a global that predetermined which features > would be usable. > In PLT, the notion of levels is primarily about giving meaningful error messages. (cons 1 2) is meaningful in full Racket, but for a beginner, this is almost certainly an error. All of the language levels, even the so-called "advanced student language", are very minimalist in terms of their feature sets, and there are really good reasons to teach programming using a restricted set of language constructs. My biggest concern about your Python "belt" system is that you present it as a kind of checklist that students should strive to understand on their way to mastering the language. But most of the things on your list are language features, not deep concepts, and I see that as a problem. For example, in PLT, I can take a student who knows only Intermediate Level constructs (https://docs.racket-lang.org/htdp-langs/intermediate-lam.html), and spend two years teaching him or her deeper and deeper problem solving techniques, without ever introducing a single new language feature. This is where one's true strength as a programmer is derived. I find it interesting that your subject line talks about "fluency", because there's an analogy here to studying foreign language that you seem to have missed. In my experience, fluency has very little to do with how much vocabulary you know. When I study a foreign language, I'm pretty good at memorizing new words. But then I routinely meet people who know far fewer words than I, yet are far more fluent, because they are better at using the words they know to talk about whatever they wish, while I spend a noticeable amount of time searching my brain for just the right word. Going with that analogy, your belt list comes across as a series of "vocabulary lists", but memorizing all that vocab isn't what's going to make you fluent. Better to learn how to express yourself with a restricted vocabulary, better to learn how to think in the foreign language. The PLT "list of things to master" would start out with things like: writing functions to operate on atomic data, writing functions to operate on structured data, writing functions to operate on collections, understanding structural recursion, understanding generative recursion, learning how to write well-tested code, etc. Where are these things on your list? So, I encourage you to rethink your belt system in terms of concepts, in terms of thinking and problem solving, in terms of fluency as it is defined in foreign languages. See http://www.ccs.neu.edu/home/matthias/Thoughts/Growing_a_Programmer.html for more ideas.
_______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig