-----Ursprüngliche Nachricht----- Von: Gerrit Holl <gerrit.holl@pobox.com> [...]
3) Elementary Education (8-10 year old)
You can start here. The concept of variables, lists and functions can be explained. Dictionairies too, I think. Classes will probably be only for the very smart ones.
Don't you think classes are as easy as variables? Start right with objects, before they even know there were non-OO-approaches in the past. (now, i read several posting from functional programming guys stating Haskell etc.would provide all kinds of OO, so i think they won't backstab me, although i have no notion of what OO means in a functional programming context. I also read that Python is a version of Scheme with a funny syntax. So i think they don't really hate OO.) Dirk
On 04 February 2000, Dirk-Ulrich Heise said:
Don't you think classes are as easy as variables? Start right with objects, before they even know there were non-OO-approaches in the past.
Interesting point: I've been trudging through Yourdon & Coad's *Object-Oriented Analysis* of late, and they had an interesting point on teaching OO: their experience is that old-style programmers brought up in a COBOL world have a really hard time "getting" OO, but non-programmers -- in their context, it was marketing and sales staff, but it could be anyone -- "get it" immediately. Another point they drive home again and again is that "generalization/specialization" and "whole/part structures" are not just pie-in-the-sky abstractions dreamed up by CS professors, but two of the fundamental techniques used in human thought. Duh! Of *course* they are, but I never really saw it that way before, since I grew up in a pre-OO world (Pascal and BASIC) and had to learn it through the same artificial examples (biological taxonomy and a graphics library) as everyone else. I think this argues that OO concepts should be built in from the start, if possible. Finally, one more data point: I have known more than one C++ or Perl programmer who thought that *using* objects was fairly natural, but that *defining* them (err, defining classes) was reserved for gurus, something that "mere mortals" don't mess with. Given C++ and Perl syntax, I can see why. However, might it be easier to introduce neophytes to OO first by giving them some canned classes to play with, and *then* show them how to define their own? The icing on the cake would be to show them how they can use inheritance to add functionality to those canned classes they started out with: if that doesn't motivate OO, I don't know what would. Greg
Dirk-Ulrich Heise wrote on 949676434:
-----Ursprüngliche Nachricht----- Von: Gerrit Holl <gerrit.holl@pobox.com> [...]
3) Elementary Education (8-10 year old)
You can start here. The concept of variables, lists and functions can be explained. Dictionairies too, I think. Classes will probably be only for the very smart ones.
Don't you think classes are as easy as variables?
No, they're not. Maybe the theory is as easy as a variable, but the practice isn't. It took quite long for me to find out when to use classes. And multiple inheritance still struggles me, and private methods (__aaa changes to whatever but still isn't private?). I think we shouldn't be too fast with classes. We _can_ explain how to use them (jan = Turtle(100, 200)), but subclassing is not easy to explain. regards, Gerrit. -- Please correct any bad Swahili you encounter in my email message! -----BEGIN GEEK CODE BLOCK----- http://www.geekcode.com Version: 3.12 GCS dpu s-:-- a14 C++++>$ UL++ P--- L+++ E--- W++ N o? K? w--- !O !M !V PS+ PE? Y? PGP-- t- 5? X? R- tv- b+(++) DI D+ G++ !e !r !y -----END GEEK CODE BLOCK-----
Gerrit Holl writes:
Dirk-Ulrich Heise wrote on 949676434:
-----Ursprüngliche Nachricht----- Von: Gerrit Holl <gerrit.holl@pobox.com> [...]
3) Elementary Education (8-10 year old)
You can start here. The concept of variables, lists and functions can be explained. Dictionairies too, I think. Classes will probably be only for the very smart ones.
Don't you think classes are as easy as variables?
No, they're not. Maybe the theory is as easy as a variable, but the practice isn't. It took quite long for me to find out when to use classes. And multiple inheritance still struggles me, and private methods (__aaa changes to whatever but still isn't private?). I think we shouldn't be too fast with classes. We _can_ explain how to use them (jan = Turtle(100, 200)), but subclassing is not easy to explain.
That's funny. My experience was quite different. When I first saw objects and classes it was like a relevation from God. They seemed intuitively obvious and the answer to my prayers. I wonder if this is a right brain/left brain thing or something.
That's funny. My experience was quite different. When I first saw objects and classes it was like a relevation from God. They seemed intuitively obvious and the answer to my prayers. I wonder if this is a right brain/left brain thing or something.
Gerrit is definitely a left-brain type of person :-) --Guido van Rossum (home page: http://www.python.org/~guido/)
Hi All-- Guido van Rossum wrote:
That's funny. My experience was quite different. When I first saw objects and classes it was like a relevation from God. They seemed intuitively obvious and the answer to my prayers. I wonder if this is a right brain/left brain thing or something.
Gerrit is definitely a left-brain type of person :-)
We ought to make up posters advertizing Python, and put Gerrit's picture on them. I'd studied objects before Python, but Python transformed my perception of them. Now they make sense. Only I think that objects and classes are as pure an expression of the Buddha nature underlying all existence as you can find outside of a Tibetan monastery. <so-says-the-guidosattva>-ly y'rs, Ivan;-) ---------------------------------------------- Ivan Van Laningham Callware Technologies, Inc. ivanlan@callware.com ivanlan@home.com http://www.pauahtun.org See also: http://www.foretec.com/python/workshops/1998-11/proceedings.html Army Signal Corps: Cu Chi, Class of '70 Author: Teach Yourself Python in 24 Hours ----------------------------------------------
Ivan Van Laningham wrote on 949667945:
Guido van Rossum wrote:
That's funny. My experience was quite different. When I first saw objects and classes it was like a relevation from God. They seemed intuitively obvious and the answer to my prayers. I wonder if this is a right brain/left brain thing or something.
Gerrit is definitely a left-brain type of person :-)
We ought to make up posters advertizing Python, and put Gerrit's picture on them.
Sorry, I don't understand you both. Am I left-brain? What does left-brain has to do with object oriented design?
I'd studied objects before Python, but Python transformed my perception of them. Now they make sense. Only I think that objects and classes are as pure an expression of the Buddha nature underlying all existence as you can find outside of a Tibetan monastery.
<so-says-the-guidosattva>-ly y'rs, Ivan;-)
---------------------------------------------- Ivan Van Laningham Callware Technologies, Inc. ivanlan@callware.com ivanlan@home.com http://www.pauahtun.org See also: http://www.foretec.com/python/workshops/1998-11/proceedings.html Army Signal Corps: Cu Chi, Class of '70 Author: Teach Yourself Python in 24 Hours ----------------------------------------------
Ivan, can you please shorten your .signature? I find 11 lines much too long! regards, Gerrit. -- Please correct any bad Swahili you encounter in my email message! -----BEGIN GEEK CODE BLOCK----- http://www.geekcode.com Version: 3.12 GCS dpu s-:-- a14 C++++>$ UL++ P--- L+++ E--- W++ N o? K? w--- !O !M !V PS+ PE? Y? PGP-- t- 5? X? R- tv- b+(++) DI D+ G++ !e !r !y -----END GEEK CODE BLOCK-----
When I think of "classes" and 5 year olds, I think of a visual scene (e.g., a trail in an outdoors setting) that has various challenges (e.g., a ledge that needs to be jumped to). To get through the trail, the youngster has to "drop" one object on another, in order to extend the properties of the object to be able to surmount the challenges. A dice roll would determine whether you got to "buy" Michael Jordan's legs for your object, e.g. In other words, take the concepts of subclassing, and put them in the world of the 5-year old. A next step would be a simple command language (simpler than Python) that allows "adding" abilities: myobject.add_ability Michael_Jordan_Legs myobject.Michael_Jordan_Legs.jump with appropriate visual results in both cases, of course. Hank http://www.prosysplus.com
-----Original Message----- From: edu-sig-admin@python.org [mailto:edu-sig-admin@python.org]On Behalf Of Dirk-Ulrich Heise Sent: Friday, February 04, 2000 10:01 AM To: edu-sig@python.org Subject: Re: [Edu-sig] Age groups
-----Ursprüngliche Nachricht----- Von: Gerrit Holl <gerrit.holl@pobox.com> [...]
3) Elementary Education (8-10 year old)
You can start here. The concept of variables, lists and functions can be explained. Dictionairies too, I think. Classes will probably be only for the very smart ones.
Don't you think classes are as easy as variables? Start right with objects, before they even know there were non-OO-approaches in the past. (now, i read several posting from functional programming guys stating Haskell etc.would provide all kinds of OO, so i think they won't backstab me, although i have no notion of what OO means in a functional programming context. I also read that Python is a version of Scheme with a funny syntax. So i think they don't really hate OO.)
Dirk
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://www.python.org/mailman/listinfo/edu-sig
On Fri, 4 Feb 2000, Hank Fay wrote:
When I think of "classes" and 5 year olds, I think of a visual scene (e.g., a trail in an outdoors setting) that has various challenges (e.g., a ledge that needs to be jumped to). To get through the trail, the youngster has to "drop" one object on another, in order to extend the properties of the object to be able to surmount the challenges. A dice roll would determine whether you got to "buy" Michael Jordan's legs for your object, e.g. In other words, take the concepts of subclassing, and put them in the world of the 5-year old.
The visual approach is absolutely necessary. However, I think one of the more confusing aspects of the first step into programming (and, at 5, into life in general) is the notion of sequence. Look at any K - 1st grader's homework (I assistant teach Kindergarten). You'll see a lot of sequencing and cause-and-effect worksheets. These concepts are difficult for a child, and the worksheets are usually non-interactive (most are a series of pictures, and the student must draw lines from each picture to the next in the sequence). Now imagine that we allow a student to drag-and-drop 'steps' into a 'program', then click 'go' to see the program do its thing. Suddenly they can see the effects of their sequencing, and experiment until they get it right. Students at this age also get most of their encouragement from having 'done something themselves' -- the biggest bribe I have for mine is letting them take a message down the hall to the office -- and building a 'program' to do something will give them a big, motivating thrill. Dustin --------------------------------------------------------------------- | Dustin Mitchell )O( | ---------------------------------------------------------------------
Dustin, I think we're in the same ballpark on this. I think having stuff happen right away is better for lower age groups (< 5 or 6 depending on the kid), as conscious thinking about the future is a skill developed over time. Some kids have it at 3 or 4; others get it at 7 or 8; and some people never get it at all. <g> Hank http://www.prosysplus.com
-----Original Message----- From: Dustin James Mitchell [mailto:djmitche@cs.uchicago.edu] Sent: Thursday, February 10, 2000 9:51 PM To: Hank Fay Cc: Dirk-Ulrich Heise; edu-sig@python.org Subject: RE: [Edu-sig] Age groups
On Fri, 4 Feb 2000, Hank Fay wrote:
When I think of "classes" and 5 year olds, I think of a visual scene (e.g., a trail in an outdoors setting) that has various challenges (e.g., a ledge that needs to be jumped to). To get through the trail, the youngster has to "drop" one object on another, in order to extend the properties of the object to be able to surmount the challenges. A dice roll would determine whether you got to "buy" Michael Jordan's legs for your object, e.g. In other words, take the concepts of subclassing, and put them in the world of the 5-year old.
The visual approach is absolutely necessary. However, I think one of the more confusing aspects of the first step into programming (and, at 5, into life in general) is the notion of sequence. Look at any K - 1st grader's homework (I assistant teach Kindergarten). You'll see a lot of sequencing and cause-and-effect worksheets. These concepts are difficult for a child, and the worksheets are usually non-interactive (most are a series of pictures, and the student must draw lines from each picture to the next in the sequence).
Now imagine that we allow a student to drag-and-drop 'steps' into a 'program', then click 'go' to see the program do its thing. Suddenly they can see the effects of their sequencing, and experiment until they get it right.
Students at this age also get most of their encouragement from having 'done something themselves' -- the biggest bribe I have for mine is letting them take a message down the hall to the office -- and building a 'program' to do something will give them a big, motivating thrill.
Dustin
--------------------------------------------------------------------- | Dustin Mitchell )O( | ---------------------------------------------------------------------
participants (8)
-
Dirk-Ulrich Heise -
Dustin James Mitchell -
Gerrit Holl -
Greg Ward -
Guido van Rossum -
Hank Fay -
Ivan Van Laningham -
Steve Morris