Seems like some people have gathered up now, but still the posting is close to nothing. With what intentions do you all get into this and what kind of discussions should we have? The post from Matthias Felleisen for example wasn't really focusing on Python but on CP4E using any existing languages or creating one. Are we focusing on general CP4E or Python? Do we wanna build new tools, make smaller implications of the core language of Python, or discuss how to teach, which books are good for teaching and what books we can write? (I'm interested either way:) I've been programming for a couple of years and stumbled onto Python 6 months ago, and now I do all my programming in Python. I'm trying to help some of my friends to start programming with Python instead of C/C++ which they are beeing taught in school now, but don't get at all. Their progress in Python is a lot better however. I think Python is a perfect language to start out with and I'd sure like to teach it to people of any age. (I'm not a teacher, but I might get to teach others in my job) What do y'll think? Regards Ulf Engstrøm (mail) ulf.engstrom@b2b-link.com (phone) +47 6676 5863 (fax) +47 6676 5861 (web) http://www.b2b-link.com ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com
Hi, The point of your letter is exactly what this group should be about. As activists for the core idea of Python, I think we should be trying to change the direction schools are taking in programming. The next step from helping someone who "does not get" C++ is to visit the education officials with some well thought out planned arguments about how they can make programming more available to thier students. I realize that institutions have built in prejudices and when they install systems to teach things like C++ or Microsoft Word, or whatever, changing the system can be quite daunting. That is where a group like this can come in handy.
From the top down the Python organization needs to be activist minded as much as possible. It needs to pursue any advantage it can to getting into the education community wherever it is possible to do so. If that means people who know Python going to a school on a volunteer basis and teaching after hours, ok. Try to do so. If that means pressuring school departments to modernize their approach, then try to do so.
To prompt change in the status quo, we have to pursue every opportunity to illustrate our program. Programming should be ubiquitous. Python makes it easy to become so. Everyone should have the opportunity to at least know that self determination in the operation of information devices is possible. Everyone might not be interested in pursuing that end, but they all should at least have the opportunity. I think that is what this group is all about. My own goal is to eventually start a school where kids come in several times/hours a week and "play" with programming on computers using Python and its game playing education role. I am not prepared yet to implement this goal, but it is something I am working toward. Terry
Greetings folks -- I too am one of the early posters in the February chapter. In case you missed what I wrote, and are curious, here's the URL: http://www.python.org/pipermail/edu-sig/2000-February/000003.html Part of what I like about Python is how easy it is to get right into object oriented thinking, without getting bogged down in a lot of constructs. I like what they say about it being "working pseudo-code". I think the "object" style is highly useful because of how it encourages us to think in real world terms. We're already naturally conditioned to view our reality in terms of systems with insides and outsides (like bodies). Inside, you have the encapsulated "guts" (data and methods), the "under the hood workings". And only "trained mechanics" or "authorized personnel" (aka the programmer-owner of the objects) needs to tinker with the guts. The user (of the object) just needs an interface (dashboard, controls, cockpit, API). So I'm quite excited by the potential of a language like Python to communicate to younger kids: (a) what's actually meant by the term "object oriented" (rescue it from buzzword status) and (b) how this could be a useful paradigm for you too -- when it comes to diagramming a large challenge, even before you start thinking about coding I work to communicate my excitement about object-oriented thinking, and it's potential to impact early math learning, in the following paper (you'll see Python mentioned): http://www.inetarena.com/~pdx4d/ocn/trends2000.html You'll see in the above paper that my other passion is polyhedra. As a geometry teacher, I'm seeing great promise in linking early ideas about "object oriented programming" to polyhedra as "paradigm objects". Why? Because all polyhedra rotate, translate, scale, and consist of points, edges and faces. So we can put these generic methods and data structures in the superclass (Poly) and then subclass Poly to get the various shapes we want to further specify. And polys are great because they drag in so many topics already near and dear to any math teacher's heart: coordinate geometry, trig ops, matrix ops, vectors, rotational symmetry, lattices, sphere packing, volume -- all the things any math savvy kid should know about. Plus there's buy in from students, because spatial geometry is, after all, the segue into computer games, animations and so on (I support the CP4E concept of roping in Alice -- a package I've tinkered with only a little (my approach so far has been to use the Povray ray tracer (freeware) and VRML as target "back ends")). Applying the OOP model to Polys, using Python, is exactly what I've done (source code available) at: http://www.inetarena.com/~pdx4d/ocn/oop7.html Kirby Curriculum writer Oregon Curriculum Network http://www.inetarena.com/~pdx4d/ocn/
Ok... here's my background and interest in this group. I have 4 kids the oldest of which is 10. I live North of New York City. I work for IBM Research. I know more languages than I would like to (C/C++/VHDL/Verilog/Java/Python/Perl /ML/FORTRAN/APL/ and on and on). I blush to say that I can even program in Visual BASIC. Now, my struggle has been what language do I teach my 8 and 10 year olds. Being trained in Computer Science, my first thought was teach my oldest functional programming (ML) before he is corrupted :-) Then, to my horror, he received a math assignment which required BASIC. ugh... This began my journey of trying to find resources for kids to learn programming. Yes, I know of Logo but my kids are all very computer literate and all they really want to do is program Pokemon stuff rather than turtles :-) Actually to be fair, Logo is probably the best thing to teach kids but lets continue on from here. Well, I was amazingly disapointed. As near as I can tell there are no resources to teach kids serious programming. Since my personal favorite language is Python, I decided this was the route to go. Well there are still no materials and my son doesn't really know what virtual methods and dispatch tables are (or by the way binary arithmetic). So, try to tell me how you teach a 4th grader computer architecture (my specialty) and programming when the first question he asks is what is hex! Oh boy... So I figured the best way to learn is just start to copy some programs and see how they run. Thus the Python annotated archives comes to the rescue. He has worked through about 3 programs so far. It has been better than I expected and he has gotten to learn some important math. Oh, by the way, you may ask why he persists in this. Well that's simple - no gameboy time unless he does something educational :-) So this is still totally unsatisfying because now he still does not know what he is typing. However, he can at least use the Python interpreter, emacs, and Linux. We will struggle through the programming part together and eventually he will be able to fly on his own but the learning curve is tremendously steep. However, just wait until he graduates to Zope (which after 3 months I'm still restling with!!!). Now having my eldest jumpstarted I set off to figure out what to do for an 8 year old. This was a total bust and I rationalized Logo was the only choice. Then I found alice. I am just now evaluating it but I am encouraged by what I see. Maybe 3D Pokemon games are just around the corner :-) What I would like to see from this sig is a set of resources for Python which are age appropriate. Perhaps the following categories: 1) Math illiterate (any age but probably under 5) 2) Early Education (5-7 year old) 3) Elementary Education (8-10 year old) 4) Middle school (11-13 year old) 5) Senior high (14-16 year old) 6) Advanced Senior high (16-18 year old) Since I currently have 2/6/8/10 year olds I cover a lot of the categories. I would be interested in helping develop free and open curriculum for these age groups. Thus, I ended up here on this sig. John Glossner glossner@pobox.com http://einstein.et.tudelft.nl/~glossner (my homepage is slightly out of date)
John Glossner wrote on 949642092:
1) Math illiterate (any age but probably under 5)
You should not try to teach them programming.
2) Early Education (5-7 year old)
I think it's still to early to teach kids who can't read programming.
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.
4) Middle school (11-13 year old)
I learned Python at this age. I found it difficult and reread things a lot. Finally, I understood it. You can teach those kids much about classes, but multiple inheritance is more difficult. I don't think they'll understand map, reduce, filter, lambda and multiple inheritance. I don't understand reduce either. Why and when to use it?
5) Senior high (14-16 year old)
There's already enough documentation for this ones, but to encourage them it's needed to use alice like things. Translations are also useful.
6) Advanced Senior high (16-18 year old)
It's not needed to give them extra documentation. They know English and can make their way perfectly.
Since I currently have 2/6/8/10 year olds I cover a lot of the categories. I would be interested in helping develop free and open curriculum for these age groups.
We shouldn't try to teach kids who can't read yet to learn programming. Turtle graphics are also harder than you might think for these ones: there must be a window for "turtle.right(5)", because they don't know about degrees yet. 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-----
Hi Gerrit,
John Glossner wrote on 949642092: 1) Math illiterate (any age but probably under 5)
You should not try to teach them programming.
Why? This could apply as easily to a 30 year old in a third world country as to a 3 year old. If you pick up many programming books (other than visual basic books) you typically end up learning how to solve scientific problems. By the way, if you think there are no requests for this I will introduce you to my 82 year old grandfather who would like to learn how to program but does not have any of the background for it. The hurdle is just too high. He can however use a computer.
2) Early Education (5-7 year old)
I think it's still to early to teach kids who can't read programming.
My just barely 6 year old is fully able to read. She is also extremely computer literate.
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.
I can tell you from experience that it is very difficult to keep their interest. My son complains why does he have to learn this binary arithmetic stuff. Why can't I just make Ash's Pokemon battle Gary? And let's talk about the current literature available to them. It is impossible for them to take any of the Python books and just start reading them. There is too much background that they assume. These books are excellent for programmers but not ok for kids. There really needs to be some python material that gently introduces non-technical people into programming.
4) Middle school (11-13 year old)
I learned Python at this age.
I agree to a large extend that it gets easier at this stage.
5) Senior high (14-16 year old)
There's already enough documentation for this ones, but to encourage them it's needed to use alice like things. Translations are also useful.
Can you tell me where this is? All I can find is BASIC for dummies. I would accept Java, C++ or any other reasonable language. If it is in Python I'll kick my heels up! I have looked and can't find anything appropriate. However, since I'm older ;-) you may have access to sources I don't (ps: they can even be in Dutch if necessary :-)
6) Advanced Senior high (16-18 year old)
It's not needed to give them extra documentation. They know English and can make their way perfectly.
Ouch... so you throw them right into Lutz's excellent book? I suppose it could work. Even my 10 year old is working his way through the annotated archives. But I really think the point of this forum is to find a better way for them.
We shouldn't try to teach kids who can't read yet to learn programming.
Ok. I may grant you that ages 0-4 will find it more difficult but even for them I can envision an environment that allows them to program by visually manipulating commands (ala record).
Turtle graphics are also harder than you might think for these ones: there must be a window for "turtle.right(5)", because they don't know about degrees yet.
I think you really have understood my point. There is so much Math and Computer related concepts required to write your first program that the hurdle is overwhelming for the majority of people. This is what we need to fix. Thanks for your comments. It is nice to have all ages participating in this sig! Best Regards, John Glossner
On Fri, 4 Feb 2000, John Glossner wrote:
2) Early Education (5-7 year old)
I think it's still to early to teach kids who can't read programming.
My just barely 6 year old is fully able to read. She is also extremely computer literate.
But she is by far the exception, not the rule. I think that a core part of the CP4E curriculum is that it brings to the educational table a piece of the equality that is so unique to the online world. We need to target all students, not just the bright ones. And hitting them with programming involving reading at 6 (Kindergarten) will blow away the vast majority of kids.
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.
I can tell you from experience that it is very difficult to keep their interest. My son complains why does he have to learn this binary arithmetic stuff. Why can't I just make Ash's Pokemon battle Gary? And let's talk about the current literature available to them. It is impossible for them to take any of the Python books and just start reading them. There is too much background that they assume. These books are excellent for programmers but not ok for kids.
Why does he have to learn binary arithmetic? For the most part, Python is high-level enough that bits are irrelevant.. However, as for books, I wholeheartedly agree. I learned BASIC from some book with lots of worksheets in it and clowns and cute decorations all over it. So long ago I can't remember what the name was. But it worked! Dustin --------------------------------------------------------------------- | Dustin Mitchell )O( | ---------------------------------------------------------------------
For what it's worth, I gave my 8-year-old son his first taste of Python with the proven "steal this code" approach. We started with a working Tkinter script with buttons calling a function that displayed text in a widget. He already could read and do basic on-screen editing (typing, copy-and-paste). We didn't discuss concepts like scope and parameter passing, but just started copying and modifying code. Soon he was changing the widget colors and printing his own messages to the screen. I think the lesson is that Piaget was right: make the material conform to the student's cognitive developmental level. For 8-10 year olds, that means keeping things concrete and emphasizing the "how" over the more abstract "why." You might say they start off more as language users than programmers (in the same way that I'm a computer user and not a chip designer). Children at this age are not ready for abstractions, but they learn well by seeing things work. Treat the program as a machine, and let the students adjust the input and watch the output change. The quick code-and-run cycle with Python helps qu ite a lot in this regard. Dave Demko Empiric Design, Inc. ----- Original Message ----- From: "Dustin James Mitchell" <djmitche@cs.uchicago.edu> To: "Edu-Sig" <edu-sig@python.org> Sent: Friday, February 11, 2000 1:07 AM Subject: Re: [Edu-sig] Age groups
On Fri, 4 Feb 2000, John Glossner wrote:
2) Early Education (5-7 year old)
I think it's still to early to teach kids who can't read programming.
My just barely 6 year old is fully able to read. She is also extremely computer literate.
But she is by far the exception, not the rule. I think that a core part of the CP4E curriculum is that it brings to the educational table a piece of the equality that is so unique to the online world. We need to target all students, not just the bright ones. And hitting them with programming involving reading at 6 (Kindergarten) will blow away the vast majority of kids.
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.
I can tell you from experience that it is very difficult to keep their interest. My son complains why does he have to learn this binary arithmetic stuff. Why can't I just make Ash's Pokemon battle Gary? And let's talk about the current literature available to them. It is impossible for them to take any of the Python books and just start reading them. There is too much background that they assume. These books are excellent for programmers but not ok for kids.
Why does he have to learn binary arithmetic? For the most part, Python is high-level enough that bits are irrelevant..
However, as for books, I wholeheartedly agree. I learned BASIC from some book with lots of worksheets in it and clowns and cute decorations all over it. So long ago I can't remember what the name was. But it worked!
Dustin
--------------------------------------------------------------------- | Dustin Mitchell )O( | ---------------------------------------------------------------------
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://www.python.org/mailman/listinfo/edu-sig
[Gerrit Holl, on teaching Python to ages 11-13]
... I learned Python at this age. I found it difficult and reread things a lot. Finally, I understood it. You can teach those kids much about classes, but multiple inheritance is more difficult. I don't think they'll understand map, reduce, filter, lambda and multiple inheritance. I don't understand reduce either. Why and when to use it?
Never, Gerrit! reduce is essentially worse than useless in Python (an expert may use it for "go fast" reasons, although in *most* cases it's not only more obscure, but also slower than the obvious Python loop!). At the advanced age of 14, it's time to face an ugly truth: grownups sometimes make really bad decisions too <wink>. I think this raises a larger issue, one of the few wholly valid points in the recent infamous criticism of CP4E: you need to define the goals of a curriculum. If the goal is primarily to teach programming as a means toward the improvement of the mind (developing reasoning skills, & so forth), forcing people to learn things like map and reduce may be a good thing: they're non-trivial but make perfectly good sense, so mastering them is a worthy accomplishment. If the goal is primarily to teach "computer science", then teaching map & reduce etc are essential -- but almost certainly better done in the context of Scheme (or some other language where higher-order functions are "natural", instead of (as in Python) "minor conveniences for people who miss Scheme" <0.1 wink>). If the goal is primarily to teach practical programming skills, best to forget them entirely! They add no power to Python, and the testimony of "almost all" posters to c.l.py over the years who have addressed this issue is that a straight Python loop is easier to write, and to understand later, and *much* easier to modify later (Python's "expression syntax" is (by design!) weak, and so expression-oriented programming suffers badly under modification in Python). I don't claim that those goals can actually be separated, but any specific curriculum will-- consciously or not --emphasize some particular one over the others. Make that decision in advance and it should be a powerful aid in guiding later decisions. one-size-fits-nobody-ly y'rs - tim
I think this raises a larger issue, one of the few wholly valid points in the recent infamous criticism of CP4E: you need to define the goals of a curriculum.
My view is that programming languages give us more opportunities to present some of the same content you might find in an older, pre-computer math notation. Instead of using a big, funny-looking greek letter, called 'sigma', with these little i,j subscripts, we might try communicating some of the same ideas using a do-loop instead. Get back to the sigma later. Lots of kids will get into it deeper if we "lose the geeky greek" and just do it in something less alien -- like APL <grin>. The advantage of taking a math notation and re-expressing it in a programming language is you get something that runs, executes. This means you can start automating processes which are too tedious to do by hand, and your math curriculum can start taking advantage of this ability to do operations "in bulk" (every "add" operation now only costs you a penny, in terms of student time/energy, instead of 10 dollars). You can really start to take advantage of the computer's ability to render spatial forms. "Beyond Flatland" is very much a theme of the emerging 21st century math curriculum, the way I see it. BTW, I agree with comments made earlier that bubble sorts, or sorts of any kind, aren't particularly exciting. A lot of texts just get bogged down in examples that are dry as bones -- are in no way more interesting than the most boring of math books. And that's pretty boring. I think what's more challenging and interesting is to see math as Keith Devlin does, as a discipline which "makes the invisible visible". In this sense, a math teacher's job should be about deobfuscating, demystifying, helping students to flesh out their understanding of systems and infrastructure that runs "behind the scenes" in the real world. In this sense, the teacher is more a storyteller, weaving interesting narratives which interlace history, world affairs, technological innovations. But in order to tell these stories from a math-literate point of view, you have to impart numeracy and, as we get closer to talking about our own time, computer literacy. So in the course of your storytelling, you'll want to toss out a lot of connected "artifacts" which point beyond themselves to how the world works (sometimes I call them "cave paintings" -- because they're rather sketchy, schematic, idealized). Patches of notation, snippets of working code, flow charts, diagrams, graphical displays... always trying to up the comfort level, the confidance level, around working with "technical communications" in their many forms. To this end, I'd like to have sessions where we just play with some of the operatators a runtime (REPL) environment gives us. Play with entering expressions, getting back results (that's satisfying in itself). Play with writing short functions. In whatever language. Part of the fun is reading a short explanation of the syntax, and then testing it for real, to see if you're getting it right. 'map' and 'reduce' and so on are just more toys, fun to tinker with. Python is good because it provides in an immediate feedback setting, as do Scheme, APL, Logo, Xbase, Smalltalk... That's a number one criterion for a "teaching environment" -- this ability to enter an expression and have it be evaluated immediately. It's also good because you can set up an object structure very simply, and start talking about what OOP is all about. That's helpful, because then you can get kids to imagine how much more complicated systems of objects might be used to talk about heart surgery, transportation, toy manufacturing, banking -- you can start to bring the real world into view, in terms of objects. In sum, I'd like to see a more "Smithsonian Institution" approach to math learning, where we take time out to watch documentaries and to really appreciate what challenges people faced in the past, and how their mathematical abilities often entered into whatever solutions they managed to come up with (e.g. radar, encryption devices, navigation devices, ways to paint in perspective). As we approach the present day, we should be looking very closely at what people actually do on the job, and how mathematical thinking enters into that. This helps students to realistically "look over the shoulders" of people in many walks of life -- because if you're a creative teacher, you'll find a "math angle" on just about anything people are doing (and without making it seem highly contrived -- I'm really against all the "faux problems" which fill math texts, which have the ring of inauthenticity (kids know these aren't real problems, and don't want to waste their time on them -- understandably (not talking about abstract problems, which don't pretent to be "real world", but the ones which do so pretend, and fall way short of being convincing in this regard))). Kirby
John Glossner wrote:
So this is still totally unsatisfying because now he still does not know what he is typing. However, he can at least use the Python interpreter, emacs, and Linux. We will struggle through the programming part together and eventually he will be able to fly on his own but the learning curve is tremendously steep. However, just wait until he graduates to Zope (which after 3 months I'm still restling with!!!).
One of the difficulties in using Python for education is that it depends on the host environment for many things -- editor (emacs, TK/IDLE, notepad), window system (COM, Delphi, TK, wxWindows, etc.), running issues (command line, IDE) and so on. So, even the simplest tutorial has to make a commitment to one system. If for example, a tutorial explains Emacs and Linux shells for running Python, it won't be immediately useful for a student trying to use IDLE/TK. For Kirby's excellent lesson plan involving numbers and shapes, one might expect it to come with step by step screen shots of what the Python environment screen should look like at each stage. This is problematical if people are using various editors, debugging approaches, and widget sets. Squeak Smalltalk http://www.squeak.org is another system designed in part of education and use by children that solves some of these problems by creating an entire virtual environment. In short, the VM is written with a common set of primitives. Some of these define a simple surface which bitmaps can be drawn on. Others define simple sound and network interfaces. From there, the entire system (graphics, windows, debugger, compiler, version control, code browsers, update system, 3D graphics, TTS) is written in Smalltalk. This machine dependent part is only around 2000 lines of code or so, and has already been ported to over a dozen platforms (Mac, Win32, WinCE, Acorn, Solaris, Linux, etc.) All of the rest of the VM code is written in a subset of Smalltalk, and then is translated to C for performance. There are some difficulties for beginners with using the Smalltalk system because so much of the source is immediately available. It is not clear which parts are more important and which are rarely needed. Another system like LearningWorks http://learningworks.neometron.com/ (created using VisualWorks Smalltalk) addresses this by creating custom browsers that hide much of the source unrelated to the current learning task. Now I'm not suggesting people here who like Python move to Squeak or LearningWorks. Python's modularity, commercial usage (including Zope web application server), indentational syntax, integration with C, and familiar functional notation (similar to C or BASIC) make it a good choice for education. Python does strike a nice balance. Python is a very approachable language with an extensive set of libraries that can be learned in bits and pieces as needed. But, I might suggest that for a common curriculum to evolve around Python, it would be very advantageous to have the same sort of virtual environment like Squeak has. Then tutorials would look completely consistent for any learner. How could Squeak and LearningWorks be useful to the Python learning effort? It might be possible to create a platform independent graphics environment for Python by leveraging the part of Squeak that was machine dependent (so as to not reinvent that wheel). It might instead be possible to somehow integrate the Python compiler into the Squeak environment, with some sort of inter-object translator, so that one worked in Python on top of Squeak but had access to all the Smalltalk tools and yet was cross platform. Squeak is completely open source, so integrating the Python VM bytecode interpreter alongside the Smalltalk bytecodes would be doable. If one got going on this, one might also be able to add support for other languages as well on top of this common cross platform (object) layer. It might also be possible to adapt some of the LearningWorks ideas of customized learning browsers to interacting with tutorial tasks. The alternative is to focus on making IDLE the learning environment to use. That might be a good choice. But, I've always believed TK/TCL has added an extra burden to learning to use Python for GUI work -- there is just something a little awkward about it (probably mostly due to the TCL layer). That is improving with better documentation, but it still IMO lacks the elegant seamless integration on might otherwise desire. However, perhaps that is all resolveable. When one starts building more sophisticated tutorial environments, some of these integration issues might become more problematic. For example, for a very long time I have had difficulties debugging TK apps under IDLE, as there are (were?) some issues related to who thought they were the top level application. If even such a simple issue was problematical -- then what will happen when one has very fancy complex systems that entail single stepping graphics and other program threads and so on? For example, consider implementing something like: Http://Apsymac33.uni-trier.de:8080/Lisp-Course This is an adaptive Lisp tutor on the web. But, imagine it running under TK and trying to teach you TK programming. What would be the implementation issues? Underlying another aspect of this difficulty when creating tutorial systems is that the common (and preferred) method of defining a Python program is as a text file (where often order of definition matters, given side effects of executing Python code as files are loaded). Something about this way of working makes me less likely to use the IDLE class browser for example. This is a very different mind set than imagining a program as something that lives as a collection of functions in a development environment (like most Smalltalk programs) -- where files are just used for backup and transport. Obviously in John's case, he went with Emacs for editing Python text files (although perhaps is using IDLE too?) Why did you not just go with IDLE for everything? Also, it is quite likely that for complete programming novices, there will need to be many levels of tutorial which have nothing to do with Python programming syntax, but involve perhaps a more graphical type of programming. These early levels would introduce very basic concepts anyone on this list would take for granted. For example, an early exercise might be putting notes on a musical staff to make a musical "program" showing the relation between sequence and effect. Making those earlier tutorial levels widely available requires a common graphics (and probably sound, etc.) platform. There is obviously a tension here -- Python is so useful in part because it interoperates so well with a wide variety of systems, giving the user a lot of choice. And obviously, the issue of TK as the common graphical framework comes up every year. I'm just wondering how that flexibility will interact with using Python for education. -Paul Fernhout Kurtz-Fernhout Software Chappaqua, NY ========================================================= Developers of custom software and educational simulations Creators of the open source Garden with Insight(TM) garden simulator http://www.kurtz-fernhout.com
Hi Paul,
Obviously in John's case, he went with Emacs for editing Python text files (although perhaps is using IDLE too?) Why did you not just go with IDLE for everything?
When I started this I had python 1.5.1 on my Linux box. I should probably re-evaluate this now.
-Paul Fernhout Kurtz-Fernhout Software Chappaqua, NY
By the way, you are very close to me. I live in Carmel NY. John
Ulf Engstrøm wrote on 949593039:
Seems like some people have gathered up now, but still the posting is close to nothing.
That's probably because everyone thinks "I'm not talking yet because I don't want to repeat things". I'm going to say everyone joining after now to read the archives.
With what intentions do you all get into this and what kind of discussions should we have?
Everythink concerning education: * changes to Python like case insensitivity * how to explain things in books, lik a variable is a box with a sticker on it, a dictionairy is a... a class is a... * CP4E * ...any suggestions?
The post from Matthias Felleisen for example wasn't really focusing on Python but on CP4E using any existing languages or creating one.
I wouldn't like it if Python became case sensitive. But that's me. If there'll be a big quarrel, we can split up the interpreter. But I hope that won't be necesarry, because it would only give more difficulties.
Are we focusing on general CP4E or Python?
CP4E, with Python as language.
Do we wanna build new tools,
No, we want to extent idle. One patch I want to write is that "if a:" autoindents, "if a: # if it's true" does not. I can't find where to change it, and that's one thing Guido pointed out: tools would make that easier. Especially (how do you spell that word?) for kids. But I don't think new tools would be needed for that: idle could be extended and promoted.
make smaller implications of the core language of Python,
Why would we?
or discuss how to teach,
Definetely.
which books are good for teaching and what books we can write? (I'm interested either way:)
I'd love to see such a book. And because it's for kids, translating is important. I want to help with the book. I think I'm the youngest one here who learned programming as a kid, *almost* with python. I tried to learn Python first, but didn't understand it. After a Logo like language, learning what variables and lists are, I did understand it. I think that bridge should be destroyed. Not only for English speaking kids, but also for Dutch, German, French, Japanese and Chinese speaking kids. But translating is definately something for the future.
I've been programming for a couple of years and stumbled onto Python 6 months ago, and now I do all my programming in Python. I'm trying to help some of my friends to start programming with Python instead of C/C++ which they are beeing taught in school now, but don't get at all. Their progress in Python is a lot better however. I think Python is a perfect language to start out with and I'd sure like to teach it to people of any age. (I'm not a teacher, but I might get to teach others in my job)
I already got *five* people to learn Python instead of C, C++, Perl, Pascal and Java :) -- 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-----
I haven't introduced myself yet, and I'm not addressing a very central issue, but...
* how to explain things in books, lik a variable is a box with a sticker on it, a dictionairy is a... a class is a...
A variable in Python isn't a box with a sticker on it, it's just a sticker. You can stick multiple stickers on the same thing, but there is still only one of the thing. This matters when the object is mutable: a = [3] # a list [3] with the sticker "a" on it b = a # now the list has stickers "a", "b" on it a[0] = 4 # the list is mutated to [4] # and still has stickers "a", "b" print a # [4] print b # [4] This is extraordinarily hard to explain with variables as boxes. How can I put one object in two boxes, neither of which contains the other? Of course, you can explain Python's semantics with boxes with stickers containing pointers, but that's a rather needlessly complicated approach! Dave Scherer
No, we want to extent idle. One patch I want to write is that "if a:" autoindents, "if a: # if it's true" does not. I can't find where to change it, and that's one thing Guido pointed out: tools would make that easier. Especially (how do you spell that word?) for kids. But I don't think new tools would be needed for that: idle could be extended and promoted.
Note that that particular change is already in the CVS tree for IDLE (python.org/download/cvs.html). I've also found at the conference that there are already at least half a dozen serious IDEs (interactive development environments) for Python in existence or under development. I still want to continue to use IDLE to experiment with some advanced features (such as syntax checking while you type), but I think it's important that the classroom materials allow the choice of different IDEs -- if only because not all IDEs work on all platforms, and we do need to support Windows, Mac and Linux! --Guido van Rossum (home page: http://www.python.org/~guido/)
Hello, Guido van Rossum wrote on 949654658:
No, we want to extent idle. One patch I want to write is that "if a:" autoindents, "if a: # if it's true" does not. I can't find where to change it, and that's one thing Guido pointed out: tools would make that easier. Especially (how do you spell that word?) for kids. But I don't think new tools would be needed for that: idle could be extended and promoted.
Note that that particular change is already in the CVS tree for IDLE (python.org/download/cvs.html).
Ah! I think it would be useful to distribute Idle seperate from Python as well as included: why wait for Python 1.6 releasing such changes to the big public? Or does Idle already rely on string methods?
I've also found at the conference that there are already at least half a dozen serious IDEs (interactive development environments) for Python in existence or under development. I still want to continue to use IDLE to experiment with some advanced features (such as syntax checking while you type), but I think it's important that the classroom materials allow the choice of different IDEs -- if only because not all IDEs work on all platforms, and we do need to support Windows, Mac and Linux!
Unfortunately, yes. Alice isn't crossplatform, is it? But what does any other IDE have what Idle does not have? Idle is crossplatform, isn't it? regards, Gerrit.
On Fri, 4 Feb 2000, Gerrit Holl wrote:
* changes to Python like case insensitivity
In my experience, more relevant changes include flexibility in punctuation. This can range from a relaxation of the grammar to improved parser warnings regarding substitution of '.' for ',' etc.
* how to explain things in books, lik a variable is a box with a sticker on it, a dictionairy is a... a class is a...
I think that trying to decide on one central explaination for such concepts is a self-defeating effort. Although I found the above explaination of variables to be the most effective, not all of my students understood it this way. As educators we must present students with many related ways of looking at a concept and let them pick and choose their own means of understanding it. It is only after studing computers and programming for several years that one gains the perspective to be able to synthesize all the viewpoints.
which books are good for teaching and what books we can write? (I'm interested either way:)
I'd love to see such a book. And because it's for kids, translating is important. I want to help with the book. I think I'm the youngest one here who learned programming as a kid, *almost* with python. I tried to learn Python first, but didn't understand it. After a Logo like language, learning what variables and lists are, I did understand it.
Books are crucial, but kids learning in school will not learn from a book -- learning is much more effective when it comes through multiple channels (blackboard, overhead demonstrations, gesticulations, pictures, manipulatives, etc), and we need to support all of the available channels if we want to be maximally successful. Dustin --------------------------------------------------------------------- | Dustin Mitchell )O( | ---------------------------------------------------------------------
I completely agree with Dustin. In fact, books are probably more "crucial" for teachers than they are for students, but in any case having good textbooks is a necessary but not sufficient condition for getting Python into schools. We also need the other kinds of support materials that Dustin lists. A really good example of kind of materials that we need is the livewires materials that Richard Crook and Gareth McCaughan sent me. I am using them in my classroom now and they are proving very effective. The Open Book Project (http://yhslug.tux.org/obp) will have those materials up within a week. Livewires also has some nice training materials at: http://www.livewires.org.uk/python.html Perhaps Guido could include these on the edu-sig page? Thanks jeff On Thu, 10 Feb 2000, Dustin James Mitchell wrote:
Books are crucial, but kids learning in school will not learn from a book -- learning is much more effective when it comes through multiple channels (blackboard, overhead demonstrations, gesticulations, pictures, manipulatives, etc), and we need to support all of the available channels if we want to be maximally successful.
Dustin
The managing editor of the O'Reilly Network introduced me to CP4E. A discussion of it broke out on our editorial mailing list. At the time I was just beginning my studies with the Wilderness Awareness School (http://www.natureoutlet.com). As a parent intending to homeschool my children, I was also doing a lot of reading on education and how children learn. My reading on homeschooling and education issues led me to the conclusion that the problems are not so much in what we teach, or the tools/materials we use to teach, but in how we teach. How to teach has also been the focus of the Wilderness Awareness School, but their focus is on how to teach tracking for everybody. As I read CP4E, I was struck by how similar the task was to what WAS was doing. I wrote the editors list about it, and alse wrote Guido. I couldn't stop there. I convinced the O'Reilly Network to give me a column to write about similarities between Hackers and Trackers. (http://www.oreillynet.com). I am currently taking a correspondence course with WAS. I don't know how many of you may have tried to learn plant identification, forest ecology, or how to read little markings on the ground, but these are not simple things. They are tough skills to learn. Lots of people buy field guides, learn a few things, but never really master the skills. They often give up in frustration. I have been dabbling with it for years, I got my first bird field guide when I was about 11. But I never made any headway until I started this course. The WAS approach comes from studying the teaching techniques of the most successful tracking cultures. Story telling, awareness games, teaching with questions and misdirection, and a sense of mentoring has been brought together in their written materials used for the correspondence course providing inspiration and guidance in how to tackle this monstrous subject. I am convinced that these same techniques can be applied to teaching other arts, both to create masters and raise general literacy. And I am happy to find somewhere that the passion I feel for nature, the great pleasure I get from computing, and the joy I feel in teaching all come together. I hope to provide insight where I can. I haven't really mastered any of these things, but having my hands in all these things, I think I can help weave them together a bit. Stephen R. Figgins fig@oreilly.com
Well, 125 messages later (Eek) I guess it's time to introduce myself. I am an undergraduate at the University of Chicago, concentrating in Mathematics with a specialization in Computer Science. I have worked with children of all ages in myriad capacities, but the most interesting for the present discourse is the Earn-A-Computer program last summer, in which I taught Python and HTML to about 10 inner-city youth. For various reasons unrelated to the educationanal process, the program didn't last long, but in the process I learned a great deal about teaching, about children (ages 9-12), and about teaching programming to children. My High School had no computer science courses -- it offered a minimal computer lab, and all of the lab attendants / school technology specialists had only one of the following skills: (a) knowledge and skills relating to computers, (b) the ability to relate to youth. So I ended up teaching the programming courses there. :) Dustin --------------------------------------------------------------------- | Dustin Mitchell )O( | ---------------------------------------------------------------------
participants (13)
-
Dave Demko -
David Scherer -
Dustin James Mitchell -
Gerrit Holl -
Guido van Rossum -
Jeffrey Elkner -
John Glossner -
Kirby Urner -
Paul Fernhout -
Stephen R. Figgins -
Tim Peters -
Ulf Engstr�m -
Xenophanes