Hi Kirby, Thanks for this response, and the follow up as well. See my comments and questions inline.
Thanks, Steve --- On Mon, 9/8/08, kirby urner <[EMAIL PROTECTED]> wrote: > From: kirby urner <[EMAIL PROTECTED]> > > Our use of 'procedural' may confuse some students > as OO syntax is > eminently step-by-step with flow of control and all the > rest of it, > very recognizably procedural the way I learned the term, > with or > without the explicit dot notation (which is difficult to > hide in real > Python). > Agreed that 'procedural' and 'OO' have a lot more common than different. I didn't mean to suggest in any way that the concepts were orthogonal. Python does have plenty of builtins, where the target is either implicit or supplied as a parameter: http://docs.python.org/lib/built-in-funcs.html Perhaps the "print" statement would be the best example in Python of conciseness winning out over explicitness. Java is perhaps the other extreme, with its "system.out.println" idiom. > I'm inclined to *not* see 'procedural' and > 'object oriented' as > orthogonal concepts i.e. they mix together. Where I do see > a big > dichotomy is in whether one is expected to define new > classes oneself, > or simply use the ones provided. > I agree with the dichotomy. There's some middle ground too, where students can alter or extend existing classes before they write their own. > Apparently early versions of Visual Basic were "read > only" in terms of > not having a class defining infrastructure, merely giving > developers > access to canned OCX objects (instances) with canned APIs, > but I could > be wrong, that's not a track I've ever followed, > even to this very > day. > Most of us learn to read before we write, so I'm not so sure it's necessarily a bad thing to introduce OO to students as consumers before they become producers. On the other hand, I totally understand your desire to have students write their own objects from the beginning. What's an example of a small Python program that your students have written that uses objects that they built? Do they start with model/view/controller objects or otherwise? > As I mention in my Chicago talk, I tell my students > "I've never heard > of procedural programming, it gives me the creeps" but > that's just a > rhetorical device to get the ball rolling, as I start with > dot > notation immediately, within the first 10 minutes. Do students ever get confused by the dot notation, or at least frustrated with the wordiness? > But > that's because > I'm teaching core Python, not another language > *implemented* in core > Python. These aren't little children. > I think it's great that you have students who are ready to jump right into core Python, but I don't think you have to be a little child to benefit from small languages like Karel, Logo, and various cousins. When I was in college, lots of non-CS students got exposed to programming through Karel and got a lot out of it. That was nearly 20 years ago, so I'm sure today's generation comes in with a little more sophistication, but I still see the benefit of starting with a language with very limited syntax. Even if you have a bit of programming background coming into a small language, it can still be a really refreshing exercise to work within its limitations. One of the funnest programs I ever wrote was to have Karel determine whether his beeper world was palindromic. Try to do that without variables! Getting back to little children, though, I do think there will come a day where smaller children learn to program as easily as they learn reading, writing, arithmetic, music, etc. _______________________________________________ Edu-sig mailing list [email protected] http://mail.python.org/mailman/listinfo/edu-sig
