From agauld@crosswinds.net Mon Dec 4 23:50:03 2000 From: agauld@crosswinds.net (Alan Gauld) Date: Wed, 12 Apr 100 07:39:01 +0100 Subject: [Edu-sig] Update: Python & the "Math Wars" Message-ID: <38f41b40.73de.0@crosswinds.net> >days, but how could schools reasonably require that >my student have a real computer -- even if we could >afford one, many other families would be hard pressed." This is presuming each student needs a computer. Which to some extent reflects the PC culture of the last 2 decades. My school had a computer in 1974 - or more accurately a modem connection to the local university computer down which we could send punch tape messages. Programming consisted of punching the tapes then waiting for the print out to arrive in the post 2 days later... We don't need to go that far back but certainly shared access to a multi user computer is a possibility - it's what X was invented for! One expensive box, lots of cheap ones. >* use some of the money we'd save from not spending > so much on text books to subsidize the purchase of > computers -- provide vouchers towards a computer > purchase In the UK many supermarkets are doing schemes whereby shoppers can collect vouchers to buy comuters for schools. This seems to be a popular scheme with parents. Note that the PCs are bought for the schools not for the pupils... >* use computers in school but don't assign homework > that presumes access in the home I strongly believe this is a good way to go for programming. It encourages of machine design, something that highly responsive RAD/IDE environments have moved peopleaway from. I increasingly find myself going back to doing a paper outline of a design before coding and encouraging that kind of approach could be a blessing in disguise! Also it could focus on the conceptual aspects of computers rather than the apparently compulsory 'hands on' for everything approach currently practiced in many schools (at least in the UK) >* accept hand-me-down equipment from corporations > seeking to upgrade, and wanting to donate amortized > equipment (perhaps for a tax write-off on top of > the amortization), train students to assemble > systems from cannibalized legacy systems This is actively pursued in the UK. The Government has various incentives for organizations to do this. Many schools (and voluntary adult education centres) benefit from this. >Basically, I think this is a bigger issue than just >whether junior has to have a computer to pass algebra. >It's about the potential rift in society, between haves >and have nots in the information age. Indeed. The current UK government have pledged to have a computer in every classsroom - by when???? Its a long way short of perfect but at least the right direction. But the other options above should be considered too. >basic tool for navigating our quasi-democracy and >those with an internet connection have many strategic >advantages over those without. If we're to do anything >more than give lipservice to democratic ideals, we have >to think of ways to make computers available to all who >want/need them. Public libraries have allways seemed like likely candidates for this on a wider front. But interestingly I've never seen a library with a PC that did anything other than permitting searches of the books in stock.... Alan G. From agauld@crosswinds.net Mon Dec 4 23:50:03 2000 From: agauld@crosswinds.net (Alan Gauld) Date: Sun, 19 Nov 100 08:55:17 +0000 Subject: [Edu-sig] Programming for non-programmer IT professionals (in healthcare) Message-ID: <3a179888.1666d.0@crosswinds.net> >this discussion has focused on the application of Python to teaching >programming at the primary and second school levels, with a bit of >introductory programming at the college level thrown in. Yes, I guess this reflects the aims of the CP4E project which originally drove the list(at least when I first joined it). >There is another application for Python in education >.... train individuals for careers in information technology >not primarily oriented to programming. Yes, we have a lot of that in the UK. In fact it was specifically for that group that I created my beginners web tutorial. [ My book takes a slightly wider view and aims for generally computer literate individuals rather than IT literate.] >.... For these latter individuals, it is important that they >understand certain concepts related to coding Just so, > such as control flow, the general meaning of > object-oriented and modular design, > issues related to data parsing, I cover these in my tutor, > expression of data and program structure with UML, but don't cover this. Interestingly tho' I am currently writing some articles for InfomIT on the UML. > communication between systems, > programming for application servers, etc. Wow, thats getting into pretty advanced stuff. I'm not sure it would be fair to expect that from a sys admin or resource manager type. (Otherwise they might expect us to start understanding all the resource management stuff :-) > They also need to be able to discuss program design > issues intelligently with programmers. Agreed, although I'd argue that basoic UML knowledge would suffice. Certainly at the level of, say, Fowler's UML Distilled. > few of the higher level topics I mentioned above > are addressed at that level of C training, Certainly the design and networking stuff are unlikely to be dealt with. > and thirdly because this brief exposure to C does not leave > them with useful tools for their personal work. And thats the real reason I did my tutor in Python. Its great for "personal use" - just making tools that ease the burden of a busy sys admin. > In response to this, I'm beginning to develop > a programming course for medical informatics based on > Python which will be offered to appropriate students > Elkner's Python version of "How to think..." in some detail). Its very good and I saw it once on the Python Intros page. Then it dissapeared, not sure why. >members are interested in this type of teaching, Not at the college course level but certainly its pretty much where my tutor and to a lesser extent my book are aimed. Alan G. http://www.crosswinds.net/~agauld/ From delza@antarcti.ca Wed Dec 6 17:28:35 2000 From: delza@antarcti.ca (Dethe Elza) Date: Wed, 6 Dec 2000 09:28:35 -0800 Subject: [Edu-sig] Interactive Numeracy Message-ID: <006101c05fa9$f6e21fa0$29777318@poco1.bc.wave.home.com> On Kirby's Numeracy pages (http://www.inetarena.com/~pdx4d/ocn/numeracy1.html), he uses python to write out PovRay data and drive PovRay. This is nice and gives an immediate result, which can be added to a web page. I've been playing with VPython, though and it gives a more tactile result: you can immediately manipulate the resulting 3D object(s). One thing which was holding me back from wholeheartedly recommending it was the requirement that you uninstall Python and install VPython. Well, VPython has been updated to use Python 2.0 and now it plays nice with others. You can get it at http://virtualphoton.pc.cc.cmu.edu/projects/visual/. Here is a simple python script to demonstrate "triangular" numbers: from visual import * from math import pi, cos, sin dY = -2*sin(pi/3) # difference in height between rows dX = 1.0 # stagger balls in next by sphere radius (default is 1) class triangle: """Create a triangle of spheres""" def __init__(self, n): """Triangle will have n rows""" for i in range(n): self.yadjust = -n * dY / 2 # amount to move up to center triangle self.line(i + 1) def line(self, n): """A line will have n spheres""" for i in range(n): x = (-n + 2*i)*dX; y = n*dY + self.yadjust; z = 0; sphere(pos=(x,y,z)) if __name__ == "__main__": triangle(5) Let me know if anyone's interested in seeing more of this, I plan on playing around some more with it as I have time (Ha!). --Dethe From pdx4d@teleport.com Wed Dec 6 20:40:40 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Wed, 06 Dec 2000 12:40:40 -0800 Subject: [Edu-sig] Interactive Numeracy In-Reply-To: <006101c05fa9$f6e21fa0$29777318@poco1.bc.wave.home.com> Message-ID: <3.0.3.32.20001206124040.00838920@pop.teleport.com> Hi Dethe -- I've played with Vpython some and think it points in a very promising direction. A trap to avoid is any sense that it has to be either/or. The Povray approach makes sense if you have partially overlapping study programs which delve into Povray more deeply for what it is: a ray tracer with a large vocabulary, lots of features (especially impressive given how lenient are the usage rules). For example, maybe an art class uses Povray (here's an example of one sculptor's output: http://reality.sculptors.com/~salsbury/House/ ) I also like the fact that Povray knows nothing about Python, and Python nothing about Povray (out of the box) and yet they can easily be loosely coupled in this way, to have one output the source files for the other. It could go the other way too: have the Python image processing library make modifications directly to the graphical outputs in Povray. Anyway, I think the number of permutations whereby module A may be used in synergy with module B (and C, and D) is overwhelming, and a great many of these permutations will pay off. All any one of us can do is pick a few that are promising and demonstrate the virtues. So yes, by all means, if you're inspired to do so, please explore the Vpython approach and keep us apprised of your results (as you've just been doing). There certainly may come a time when I do more with it myself. Arthur's approach was also very significant (PyGeo). In my own case, the live interactive geometry program I've done the most curriculum writing around is being developed in Java, is open source and free, and is available in both applet and standalone forms at via http://www.fluidiom.com/ There may be a JPython angle to all this in future, I don't really know. Povray, VRML and ActiveWorlds are already part of that scene. Thanks again for the information. I hadn't realized that Vpython had been upgraded and now coexists with the rest of Python in a more mature fashion. That's good news and I look forward to redownloading it at some future date. Kirby PS: at http://www.inetarena.com/~pdx4d/ocn/oop7.html I do more to wire Python to a VRML back end, vs. just Povray. I think that'd be the next logical step for my source code in the Numeracy essay -- to gain the VRML output option everywhere you currently have the Povray option. At 09:28 AM 12/06/2000 -0800, you wrote: >On Kirby's Numeracy pages >(http://www.inetarena.com/~pdx4d/ocn/numeracy1.html), he uses python to >write out PovRay data and drive PovRay. This is nice and gives an immediate >result, which can be added to a web page. I've been playing with VPython, >though and it gives a more tactile result: you can immediately manipulate >the resulting 3D object(s). One thing which was holding me back from >wholeheartedly recommending it was the requirement that you uninstall Python >and install VPython. Well, VPython has been updated to use Python 2.0 and >now it plays nice with others. You can get it at >http://virtualphoton.pc.cc.cmu.edu/projects/visual/. From delza@antarcti.ca Thu Dec 7 18:26:27 2000 From: delza@antarcti.ca (Dethe Elza) Date: Thu, 7 Dec 2000 10:26:27 -0800 Subject: [Edu-sig] Interactive Numeracy References: <20001207170123.927FAE8AF@mail.python.org> Message-ID: <007701c0607b$369433a0$29777318@poco1.bc.wave.home.com> Hi Kirby, I agree that it's not an all-or-nothing approach, and I really like the idea of small, loosly-coupled tools working together. I just think that direct manipulation is a powerful learning tool. I've written to the VPython folks about string output as PovRay data and their response was, "why?", but some others seem to want that too, so it may happen. My main problem with VRML is the lack of consistency between viewers. Each seems to implement a different subset of VRML with their own extensions, making it really hard to do things cross-platform. I was very focussed on Java for a long time, and built a simplistic 3D tool which ran in the AWT, but I've been concentrating on Python lately. Python is something I heard about years ago, sounded cool, but I never found the time to learn more. Now that I've discovered just how cool it really is, I'm diving in with both feet. One of the things that draws me to Python is this idea I have in the back of my mind (and in copious notes over the years), called "Programming for the Fun of It." I was going to use Java to explain programming to non- or part-time programmers, enough to learn some good habits and build cool stuff. But I want to focus on good habits and design, not on teaching language fundamentals. It's bloody hard to do that in Java. In Python, I think it's feasible. We'll see--I've got my wife and kids to use as guinea pigs, if I can teach them to program and enjoy it, then I'm ready to write the book. --Dethe From pdx4d@teleport.com Thu Dec 7 20:21:10 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 07 Dec 2000 12:21:10 -0800 Subject: [Edu-sig] Interactive Numeracy In-Reply-To: <007701c0607b$369433a0$29777318@poco1.bc.wave.home.com> References: <20001207170123.927FAE8AF@mail.python.org> Message-ID: <3.0.3.32.20001207122110.008497a0@pop.teleport.com> >One of the things that draws me to Python is this idea I have in the back of >my mind (and in copious notes over the years), called "Programming for the >Fun of It." I like it! Even better than Computer Programming for Everyone (CP4E) in some ways. Kirby From pdx4d@teleport.com Fri Dec 8 18:16:05 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Fri, 08 Dec 2000 10:16:05 -0800 Subject: [Edu-sig] Another Forth remark In-Reply-To: <002301c034ee$f1c27e10$13ec1fc2@adtranzsig.de> References: <3.0.3.32.20001012104426.00aace60@pop.teleport.com> Message-ID: <3.0.3.32.20001208101605.0084b7d0@pop.teleport.com> >> As I recall, Python actually ships with a class designed to >> provide a user prompt. You could subclass this, and a parser, >> which automatically analyzes user input into tokens somehow. > >Don't know - which class do you mean? > Turns out I was thinking of the cmd module. Kirby From urner@alumni.Princeton.EDU Mon Dec 11 17:13:44 2000 From: urner@alumni.Princeton.EDU (Kirby Urner) Date: Mon, 11 Dec 2000 09:13:44 -0800 Subject: [Edu-sig] Re: important programming languages References: <912jps$5vr$1@nnrp1.deja.com> Message-ID: Tuomas Pellonpera wrote: >4.) Can Python be used in encryption? If so, IS it being used, too? :) I've read the comments to date and found much to agree with. Python is extended by writing methods in C in a particular way, and then importing the API -- meaning a lot of what you do in Python ends up running as native C, and so is relatively fast. So as a Python programmer, you can piggyback on what's already been written in C to extend Python. In this connection, you already have access to A.M. Kuchling's crypto library: http://weathership.homeport.org/~adam/crypto/python.phtml When it comes to learning programming, I agree that Python provides a clean, well-designed syntax. So even though pure Python source code would be too slow for most practical crypto applications, you might usefully learn the guts of an algorithm that way -- knowledge you could then transfer to another language (even Assembler). In this sense, training in Python helps you think the way a programmer thinks. Then you can branch into C/C++ or Java or whatever (or pick them up simultaneously, if you're impatient to get on with it). Case in point: I've just recently implemented the Blowfish algorithm in pure Python, in the context of a larger math- oriented curriculum which uses Python as the core teaching language. Yes, it's slow, and minimal (no CBC, no key-from- passphrase generator) but it works (runs through the test vectors properly, encrypts/decrypts binary data files, like GIFs). I think someone new to crypto, and to programming in general, could pick up some valuable experience studying such material (which is why I write it). Plus some of the math stuff I do on other pages (e.g. using Python's big number capabilities) provides useful background (as an earlier poster said, you need some theory, not just programming language smarts, when it comes to crypto). Here's the URL (posted about it a couple days ago here on sci.crypt as well, inviting comments): http://www.inetarena.com/~pdx4d/ocn/clubhouse.html I'm a big fan of the computer-at-your-elbow approach to studying math concepts, and am frustrated that classroom teachers seem stuck on an evolutionary plateau with graphing calculators. Calculators are cool, but a lot of school districts have pumped big bucks into computers, and now feel ripped off because Johnny only uses them to run CDROM page-turner software or play games, and Sally just wants to download MP3s. But that's a failure of the curriculum, not the technology. Kids _could_ be learning real programming languages, and math class (not necessarily some separate computer science elective, which many schools don't offer) would be the logical place to get this going. What we're talking about here is basic numeracy, and in this day and age, that includes having knowledge of computer concepts as well as math concepts (a lot of the walls between math and computer science are very artificial to begin with, especially at the elementary level, where overspecialization is only destructive -- is enforced mostly to protect a woefully obsolete status quo curriculum). Teachers mostly won't support this "math through programming" approach unless the text books publishers do, but the text book upgrade cycle is way way too slow. Enter the web, and the option to drive the upgrade cycle on "internet time". More on all this: http://www.oreillynet.com/pub/a/python/2000/10/04/pythonnews.html Kirby From fstajano@uk.research.att.com Mon Dec 11 17:44:26 2000 From: fstajano@uk.research.att.com (Frank Stajano) Date: Mon, 11 Dec 2000 17:44:26 +0000 Subject: [Edu-sig] Re: important programming languages In-Reply-To: References: <912jps$5vr$1@nnrp1.deja.com> Message-ID: <4.3.2.7.2.20001211173844.02c42f08@localhost> At 2000-12-11 09:13 -0800, Kirby Urner wrote: >When it comes to learning programming, I agree that Python >provides a clean, well-designed syntax. So even though >pure Python source code would be too slow for most practical >crypto applications, you might usefully learn the guts of >an algorithm that way -- knowledge you could then transfer >to another language (even Assembler). I could not agree more. A one-page paper in the IPC7 proceedings ( http://www.foretec.com/python/workshops/1998-11/proceedings/posters/stajano/serpent.html ) tells of my experience implementing Serpent in Python and thereby writing the first ever correct implementation of it. From that I then rewrote the reference implementation in C. Serpent was one of the Advanced Encryption Standard candidate ciphers, which was chosen as one of the 5 finalists and got the second highest score from attendees' votes at the latest AES conference, beaten only by Rijndael that eventually won the title. Frank (filologo disneyano) http://www.uk.research.att.com/~fms/ From pdx4d@teleport.com Mon Dec 11 20:59:49 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Mon, 11 Dec 2000 12:59:49 -0800 Subject: [Edu-sig] Re: important programming languages In-Reply-To: References: <912jps$5vr$1@nnrp1.deja.com> Message-ID: <3.0.3.32.20001211125949.0083be60@pop.teleport.com> >Teachers mostly won't support this "math through programming" >approach unless the text books publishers do, but the text >book upgrade cycle is way way too slow. Enter the web, and >the option to drive the upgrade cycle on "internet time". Hence I try to propagandize in favor of "math through programming" on the web, in the form of realistic, doable lesson plans, other posts suggesting what teachers *could* be doing -- if only they would: See: "On using big numbers to open new horizons in K-12" http://www.mathforum.org/epigone/math-teach/zhahcrafah for a most recent example (contains a typo or two, still highly usable and suggestive). Kirby Curriculum writer Oregon Curriculum Network From delza@antarcti.ca Mon Dec 11 21:02:28 2000 From: delza@antarcti.ca (Dethe Elza) Date: Mon, 11 Dec 2000 13:02:28 -0800 Subject: [Edu-sig] Programming for the fun of it Message-ID: <3A3540E4.3040905@antarcti.ca> So, I've been working for awhile on the how of teaching programming to non-geeks. What I think is a more important question, is Why? Why should someone be interested in learning to program? I'm not talking about convincing them to give up their day job, or learn higher math, just to have an interest in occasional programming. Here's my first cut at some possible motivations, but I'm very interested in finding more: * Build problem-solving skills * Learn math * Create toys * Fix the software you use * Understand computers and the digital world better * Extend the software you use * Create tools you need. Any ideas? --Dethe From pdx4d@teleport.com Mon Dec 11 22:52:47 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Mon, 11 Dec 2000 14:52:47 -0800 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <3A3540E4.3040905@antarcti.ca> Message-ID: <3.0.3.32.20001211145247.0083ce90@pop.teleport.com> You mention you're not out to convince someone to give up their day job. But of course many of those we're hoping to reach with this stuff don't have day jobs (yet), are still in school full time. So lets not remove the "more interesting career" incentive from the model -- some programming experience would open new doors in many of these scenarios (including, but not limiting our scope to already-employed adults). The goal of "fixing the software you use" is realistic in an open source context in many cases, but most software users today have no ability to access the source code of the products they're using. If Microsoft Windows or Word has bugs, you'll have to wait for Microsoft to fix them -- even if you're a top notch programmer. [An argument for open source that's often made: more eyeballs examining the code means faster bug fixes and broader understanding of how to evolve/integrate in an OS context -- the development of Python itself being a case in point (the bazaar vs. the cathedral idea (even in the bazaar model, you can have decision-makers like Guido von Rossum or Linus Tovalds guiding the process) See: http://www.tuxedo.org/~esr/writings/cathedral-bazaar/] Your twin goals of learning math and understanding computers and the digital world better also suggest the historical dimension: how people have met challenges using their evolving knowledge of principles (e.g. "the laws of physics") is what history is about in large degree. The historical info woven through my clubhouse.html (and 'Cryptonomicon') is a small example of this. For some fairly engaging discussion re learning math and history in tandem, using each to enhance the other, see: http://forum.swarthmore.edu/discuss/nctm.standards.2000.A/t/645 Kirby At 01:02 PM 12/11/2000 -0800, Dethe Elza wrote: >So, I've been working for awhile on the how of teaching programming to >non-geeks. What I think is a more important question, is Why? Why >should someone be interested in learning to program? I'm not talking >about convincing them to give up their day job, or learn higher math, >just to have an interest in occasional programming. Here's my first cut >at some possible motivations, but I'm very interested in finding more: > >* Build problem-solving skills >* Learn math >* Create toys >* Fix the software you use >* Understand computers and the digital world better >* Extend the software you use >* Create tools you need. > >Any ideas? > >--Dethe From dyoo@hkn.eecs.berkeley.edu Mon Dec 11 23:15:51 2000 From: dyoo@hkn.eecs.berkeley.edu (Daniel Yoo) Date: Mon, 11 Dec 2000 15:15:51 -0800 (PST) Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <3A3540E4.3040905@antarcti.ca> Message-ID: On Mon, 11 Dec 2000, Dethe Elza wrote: > So, I've been working for awhile on the how of teaching programming to > non-geeks. What I think is a more important question, is Why? Why > should someone be interested in learning to program? I'm not talking > about convincing them to give up their day job, or learn higher math, > just to have an interest in occasional programming. Here's my first cut > at some possible motivations, but I'm very interested in finding more: G.H. Hardy's book, "A Mathematician's Apology", covers some of the issues of teaching abstract concepts. Why do people do crossword problems? Crossword problems surely don't have any direct application, yet people derive satisfaction from solving a puzzle. Hardy says that people do mathematics, not because it's practical, but because it's beautiful --- that's his primary justification for mathematics. Likewise, I think people program, not only because it's useful, but because it's intellectually stimulating; there's something wonderfully _neat_ about seeing these processes run under our fingertips. All these other perks: improving one's employability, gaining problem solving skills, are all secondary to the idea that programming is fun. (At least, ideally... *grin*) From carolm@buffy.EECS.Berkeley.EDU Mon Dec 11 23:25:25 2000 From: carolm@buffy.EECS.Berkeley.EDU (Carol Marshall) Date: Mon, 11 Dec 2000 15:25:25 -0800 (PST) Subject: [Edu-sig] Programming for the fun of it In-Reply-To: Message-ID: Very well put Danny. On Mon, 11 Dec 2000, Daniel Yoo wrote: > On Mon, 11 Dec 2000, Dethe Elza wrote: > > > So, I've been working for awhile on the how of teaching programming to > > non-geeks. What I think is a more important question, is Why? Why > > should someone be interested in learning to program? I'm not talking > > about convincing them to give up their day job, or learn higher math, > > just to have an interest in occasional programming. Here's my first cut > > at some possible motivations, but I'm very interested in finding more: > > > G.H. Hardy's book, "A Mathematician's Apology", covers some of the issues > of teaching abstract concepts. Why do people do crossword problems? > Crossword problems surely don't have any direct application, yet people > derive satisfaction from solving a puzzle. Hardy says that people do > mathematics, not because it's practical, but because it's beautiful --- > that's his primary justification for mathematics. > > Likewise, I think people program, not only because it's useful, but > because it's intellectually stimulating; there's something wonderfully > _neat_ about seeing these processes run under our fingertips. All these > other perks: improving one's employability, gaining problem solving > skills, are all secondary to the idea that programming is fun. (At least, > ideally... *grin*) > > > _______________________________________________ > Edu-sig mailing list > Edu-sig@python.org > http://www.python.org/mailman/listinfo/edu-sig > From delza@antarcti.ca Tue Dec 12 00:09:01 2000 From: delza@antarcti.ca (Dethe Elza) Date: Mon, 11 Dec 2000 16:09:01 -0800 Subject: [Edu-sig] Programming for the fun of it References: Message-ID: <3A356C9D.3080407@antarcti.ca> I like this. David Gelertner writes about advances in computer science happening as a pursuit of beauty, and the whole pattern movement came about from a theory of architecture which strives for the "Quality without a Name," i.e., what distinguishes [code|buildings] that are *alive* from those which are not. Wonderful! --Dethe Daniel Yoo wrote: > G.H. Hardy's book, "A Mathematician's Apology", covers some of the issues > of teaching abstract concepts. Why do people do crossword problems? > Crossword problems surely don't have any direct application, yet people > derive satisfaction from solving a puzzle. Hardy says that people do > mathematics, not because it's practical, but because it's beautiful --- > that's his primary justification for mathematics. > > Likewise, I think people program, not only because it's useful, but > because it's intellectually stimulating; there's something wonderfully > _neat_ about seeing these processes run under our fingertips. All these > other perks: improving one's employability, gaining problem solving > skills, are all secondary to the idea that programming is fun. (At least, > ideally... *grin*) > From jhrsn@pitt.edu Tue Dec 12 01:02:22 2000 From: jhrsn@pitt.edu (Jim Harrison) Date: Mon, 11 Dec 2000 20:02:22 -0500 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <3A3540E4.3040905@antarcti.ca> Message-ID: on 12/11/00 4:02 PM, Dethe Elza at delza@antarcti.ca wrote: > * Build problem-solving skills > * Learn math > * Create toys > * Fix the software you use > * Understand computers and the digital world better > * Extend the software you use > * Create tools you need. On a more mundane level than some of the recent discussion...how about: * Work more effectively with computer support personnel, system managers and programmers * Understand the strengths and weaknesses of computers and software for supporting real-world tasks People who do not become programmers benefit from programming experience because it gives them a more realistic view of how computers and "computer people" work. There are relatively few tasks today that don't involve computers in at least a peripheral way, so this experience is highly generalizable. Jim Harrison Univ. of Pittsburgh From Econoprof@aol.com Tue Dec 12 01:12:20 2000 From: Econoprof@aol.com (Econoprof@aol.com) Date: Mon, 11 Dec 2000 20:12:20 EST Subject: [Edu-sig] Programming for the fun of it Message-ID: <75.d63c4c8.2766d574@aol.com> One reason people might take up programming: Because nothing else in the whole world will reliably do what you tell it to do, when you tell it to, if you tell it correctly. (This one's for parents and teachers.) Which leads to my next point. There is still (look, look! at how many schools and classrooms still are NOT using the web for publishing, even when they are well endowed with computing resources and internet access) an awful lot of resistance to using any technology ( = hardware/software combination) in the classroom unless the teacher in charge of that classroom has mastered that particular technology. It is a control issue. Even with all sorts of resources out there on the web for the curious student/parent/teacher, you won't have programming in the classroom on a widespread level unless you turn the teachers into programmers. Or, to borrow Neal Stephenson's metaphor from In The Beginning Was the Command Line, you have to turn the teachers from Eloi (passive consumers of we'll give you what we think you want technology) into Morlocks (the ones who make the technology/write the code). By the way, that is a very accessible book, whether or not you agree with the author on all of his points, and could be used to bring together parents, teachers, and students to talk about these issues. Joan Combs From pdx4d@teleport.com Tue Dec 12 01:32:46 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Mon, 11 Dec 2000 17:32:46 -0800 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <75.d63c4c8.2766d574@aol.com> Message-ID: <3.0.3.32.20001211173246.009169b0@pop.teleport.com> >you have to turn the teachers from Eloi (passive consumers of we'll give you >what we think you want technology) into Morlocks (the ones who make the >technology/write the code). > >By the way, that is a very accessible book, whether or not you agree with the >author on all of his points, and could be used to bring together parents, >teachers, and students to talk about these issues. > >Joan Combs I agree with Joan -- we need more Morlock teachers, as per Neal's non-fiction 'In the beginning was the command line'. And it's not just that teachers are control freaks and won't let technology they haven't mastered take over for silly reasons. On the contrary, I think especially young students are in need of role model adults who aren't phased by computers and know how to put them through their paces. You wouldn't trust a horse riding academy where the trainers were afraid of the beasts. So we definitely want Morlocks, not Eloi, showing off computers in the classroom -- lest we get another generation of passive "you do it for me" types. Teachers are correct not to push computers into the limelight until they achieve Morlock status. As professional teachers, that's their job (to stand for mastery and competence in a particular field). So when I imagine a healthy use of computers in a classroom, it's not necessarily this situation where a teacher gets a CDROM going, and then walks away (computer as babysitter, a kind of boob tube, freeing the teacher to give his or her attention to other students). No, my image of health and proper Morlock role modeling is a teacher with a projected computer screen, writing interactive command lines in a kind of stream of consciousness way, talking and interacting, explaining, popping source code (some of it written by the teacher, some of it by students, some downloaded etc.). Of course too much sustained droaning and watching someone else code is no fun -- that's just a mode the head Morlock should have mastered. Then the students get to turn to their own machines and teach it similar tricks, emboldened by the model of a teacher who has no fear. Kirby From donh@halenet.com.au Mon Dec 11 21:26:50 2000 From: donh@halenet.com.au (Don Hansford) Date: Tue, 12 Dec 2000 07:26:50 +1000 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <3A3540E4.3040905@antarcti.ca> References: <3A3540E4.3040905@antarcti.ca> Message-ID: <20001212072650.1c638d83.donh@halenet.com.au> On Mon, 11 Dec 2000 13:02:28 -0800 Dethe Elza wrote: > So, I've been working for awhile on the how of teaching programming > to > non-geeks. What I think is a more important question, is Why? Why > should someone be interested in learning to program? I'm not > talking > about convincing them to give up their day job, or learn higher > math, > just to have an interest in occasional programming. Here's my first > cut > at some possible motivations, but I'm very interested in finding > more: > > * Build problem-solving skills > * Learn math > * Create toys > * Fix the software you use Only if it's Open Source :-) > * Understand computers and the digital world better > * Extend the software you use See above :-) > * Create tools you need. > > Any ideas? * A better grasp on why some software has limitations * Personally, I found a basic knowledge of programming a huge advantage when working with databases -- This Email is 100% Virus Free! How do I know? Because no Microsoft products were used to generate it! Regards Don Hansford ECKYTECH COMPUTING/ SQIT Warwick "We're tired, we're wired, and our breath smells bad -- -But at least our Operating System doesn't suck!" From agauld@crosswinds.net Tue Dec 12 07:33:02 2000 From: agauld@crosswinds.net (Alan Gauld) Date: Tue, 12 Dec 100 12:30:12 +0000 Subject: [Edu-sig] Programming for the fun of it Message-ID: <3a361b53.b404.0@crosswinds.net> >> * Fix the software you use > >Only if it's Open Source :-) We've already seen this stated but its not true. Most software packages nowadays contain macro capability and in the case of MS Office those macros are written in a programming language - VBA. Thus knowledge of programming frees the Office user of the restraints of the received code and allow them to "fix it" in the sense of writing their own versions of buggy features. So no, Open Source, wonderful tho' it may be, is not the only case where this topic applies. (And anyone who has written any sreerious VBA code knows that it is most definitely programming in the general sense! :) Alan g. From jeff@elkner.net Tue Dec 12 13:38:57 2000 From: jeff@elkner.net (Jeffrey Elkner) Date: 12 Dec 2000 18:38:57 +0500 Subject: [Edu-sig] Programming for the fun of it Message-ID: <200012121338.IAA08967@angelo.arlington.k12.va.us> I like all of Dethe's reasons for non-geeks learning to program, but I particularly like: 1. Build problem-solving skills 2. Create tools you need These two go really well together also. While I have no doubt that the logical reasoning skills that come from learning basic programming will be of general benefit to the programming student, the benefit is abstract and not immediate enough to be the *only* reason for doing it. I think Python's clear syntax, extensive libraries, and rapid development capabilities make it wonderfully suited to the other key reason: creating tools you need. This both gives immediacy to the learning and makes it fun! Last weekend my 5th grade son came to me and asked if I would randomly call out the five notes he was learning to play on the trumpet. I told him that I had a better idea. I would write a little program for him that he could use anytime he wanted. A few short minutes later I had the following: #!/usr/bin/python import time import random notes = ['C', 'D', 'E', 'F', 'G'] while 1: print "Now play " + notes[random.randint(0, len(notes) - 1)] + " . . . ." time.sleep(2) My son really liked this, and for the first time showed some interest in learning about Python. One last thing. I think we need to develop and on-line library of cool little programs like this that show Python's usefullnes. I would be glad to set up this library if folks would send me example programs. To be truely useful to classroom teachers they should meet the following criteria: 1. They should be short enough to be looked at and discussed in 5 to 10 minutes. 2. In keeping with 1 above they should use algorithms that are fairly easy to understand. 3. They should transparent Python, with minimal use of special purpose libraries. jeff elkner yorktown high school arlington, va > So, I've been working for awhile on the how of teaching programming to > non-geeks. What I think is a more important question, is Why? Why > should someone be interested in learning to program? I'm not talking > about convincing them to give up their day job, or learn higher math, > just to have an interest in occasional programming. Here's my first cut > at some possible motivations, but I'm very interested in finding more: > > * Build problem-solving skills > * Learn math > * Create toys > * Fix the software you use > * Understand computers and the digital world better > * Extend the software you use > * Create tools you need. > > Any ideas? > > --Dethe From sabren@manifestation.com Tue Dec 12 14:16:50 2000 From: sabren@manifestation.com (Michal Wallace) Date: Tue, 12 Dec 2000 09:16:50 -0500 (EST) Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <200012121338.IAA08967@angelo.arlington.k12.va.us> Message-ID: On 12 Dec 2000, Jeffrey Elkner wrote: > One last thing. I think we need to develop and on-line library > of cool little programs like this that show Python's usefullnes. > > I would be glad to set up this library if folks would send me > example programs. To be truely useful to classroom teachers > they should meet the following criteria: > > 1. They should be short enough to be looked at and discussed > in 5 to 10 minutes. > > 2. In keeping with 1 above they should use algorithms that > are fairly easy to understand. > > 3. They should transparent Python, with minimal use of > special purpose libraries. I use this one all the time, to pace myself when working out: from Tkinter import * import time def currentTime(start): return "%02i:%02i" % time.localtime(time.time() - start)[4:6] class Clock(Frame): def showTime(self, *args): self.text.configure(text = currentTime(self.start)) self.after(10, self.showTime) def __init__(self, master=None): Frame.__init__(self, master) Pack.config(self) #?? self.start = time.time() self.text = Label(self, {"text": currentTime(self.start), "font": (('Verdana'), 40)}) self.text.pack() self.after(10, self.showTime) clock = Clock() clock.mainloop() Cheers, - Michal ------------------------------------------------------------------------ www.manifestation.com www.sabren.com www.linkwatcher.com www.zike.net ------------------------------------------------------------------------ From delza@antarcti.ca Tue Dec 12 16:26:10 2000 From: delza@antarcti.ca (Dethe Elza) Date: Tue, 12 Dec 2000 08:26:10 -0800 Subject: [Edu-sig] Re: Programming for the fun of it References: <20001212123402.4ADD5E7A1@mail.python.org> Message-ID: <001501c06458$3dc38fa0$29777318@poco1.bc.wave.home.com> Kirby wrote: > So lets not remove the "more interesting career" incentive from > the model -- some programming experience would open new doors > in many of these scenarios (including, but not limiting our > scope to already-employed adults). Agreed. Actually, if this were a class I think the target audience would be at-risk teens, women re-entering the workforce and/or retraining for the tech world, and the economically disadvantaged (a group whose constituents change with geography). These are the folks with the most to gain by adding programming skills to their repetoire, and often the ones with the least inclination to learn programming having been told that it is hard, that you must be a genius, that it's boring, etc. > The goal of "fixing the software you use" is realistic in an > open source context in many cases, but most software users > today have no ability to access the source code of the > products they're using. If Microsoft Windows or Word has > bugs, you'll have to wait for Microsoft to fix them -- even > if you're a top notch programmer. Fixing the software you use is mostly a matter of usability, like learning how to hide the 90% of Word you *don't* use to make the rest more accessible. Also, much of the software we use today is not word or excel, it's websites (which generally have awful usability). A case in point is my local library system -- it never remembers who I am so if I want to reserve a book I have to enter my full name, a system-assigned code (14 digits) and my chosen password. If I want to next check my account to see when the books I have out are due I have to enter all this information again. Of course, the right way to solve this would be to give home users the option of setting a cookie. But then I still wouldn't be able to check on the due dates for both my card and my wife's card easily. But with Python I can open an arbitrary url (or a whole series of urls) rather easily, extract the data, and output the results in either HTML or Tkinter, and voila! I've "fixed" someone else's software. Note that the fix is specific to my own situation, so there may never be impetus for the library to even recognize this as a problem, much less fix it (especially since most libraries rely on canned, proprietary third-party software which they couldn't fix if they wanted to). This is the kind of fix people will never see unless they learn rudimentary (at least) programming. --Dethe From delza@antarcti.ca Tue Dec 12 16:31:42 2000 From: delza@antarcti.ca (Dethe Elza) Date: Tue, 12 Dec 2000 08:31:42 -0800 Subject: [Edu-sig] Re: Programming for the fun of it Message-ID: <001d01c06459$028dfaa0$29777318@poco1.bc.wave.home.com> Kirby wrote: > [An argument for open source that's often made: more eyeballs > examining the code means faster bug fixes and broader > understanding of how to evolve/integrate in an OS context > -- the development of Python itself being a case in point > (the bazaar vs. the cathedral idea (even in the bazaar > model, you can have decision-makers like Guido von Rossum > or Linus Tovalds guiding the process) > See: http://www.tuxedo.org/~esr/writings/cathedral-bazaar/] A lesser known argument, but important in this context, is that programs are a form of literature. Just as you learn to write well by reading a great deal, so you should learn to program well by reading good code. With proprietary solutions there is no body of code to learn from, but with open source we have the Library of Alexandria at our fingertips. Interestingly, the Patterns movement adapted poetry workshops as a method for developing new patterns, and Extreme Programming has the explicit goal of writing programs which are more like literature (highly readable). --Dethe From delza@antarcti.ca Tue Dec 12 16:38:49 2000 From: delza@antarcti.ca (Dethe Elza) Date: Tue, 12 Dec 2000 08:38:49 -0800 Subject: [Edu-sig] Re: Programming for the fun of it Message-ID: <002501c0645a$0107da60$29777318@poco1.bc.wave.home.com> I'm going to have to switch from digest mode to real-time (or whatever the opposite of digest is, perhaps undigested). I keep having ideas and responses that I wished I'd written yesterday in the heat of the thread. OK, here's another reason for learning programming: * Because computer have changed everything we do, being able to program can make you a better photographer, teacher, artist, student, architect, broker, etc. Note, the reverse is true also, that the real world is far more satisfying and stimulating, and by mixing previously unrelated ideas, often from widely disparate fields, we get true innovation. Which is an argument for programmers to learn painting, architecture, medicine, economics, education, etc. --Dethe From infonuovo@email.com Tue Dec 12 16:37:38 2000 From: infonuovo@email.com (Dennis E. Hamilton) Date: Tue, 12 Dec 2000 08:37:38 -0800 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <3A356C9D.3080407@antarcti.ca> Message-ID: I was in a conversation a while back where it was pointed out that the pursuit of science, generally, is one of beauty, and that it is primarily religion which pursues truth. That was very interesting for me. It gave me a new perspective on a famous quote from Albert Einstein and Leopold Infield (The Evolution of Physics, 1938): "Physical concepts are free creations of the human mind, and are not, however it may seem, uniquely determined by the external world." (p.31). It also clarified for me how often techies like myself lapse into religious debates, the tip-off being claims about the "best" programming language, development methodology, or operating-system model without any grounding in empirically confirmable values. It is useful to remind myself that it is all made up and some of it can be beautiful in its conceptual harmony and the utility that becomes available. It's just not the truth. -- Dennis AIIM DMware Technical Coordinator AIIM DMware http://www.infonuovo.com/dmware ODMA Support http://www.infonuovo.com/odma ------------------ Dennis E. Hamilton tel. +1-425-793-0283 mailto:orcmid@email.com fax. +1-425-430-8189 -----Original Message----- From: edu-sig-admin@python.org [mailto:edu-sig-admin@python.org]On Behalf Of Dethe Elza Sent: Monday, December 11, 2000 16:09 To: edu-sig Subject: Re: [Edu-sig] Programming for the fun of it I like this. David Gelertner writes about advances in computer science happening as a pursuit of beauty, and the whole pattern movement came about from a theory of architecture which strives for the "Quality without a Name," i.e., what distinguishes [code|buildings] that are *alive* from those which are not. Wonderful! --Dethe Daniel Yoo wrote: > G.H. Hardy's book, "A Mathematician's Apology", covers some of the issues > of teaching abstract concepts. Why do people do crossword problems? > Crossword problems surely don't have any direct application, yet people > derive satisfaction from solving a puzzle. Hardy says that people do > mathematics, not because it's practical, but because it's beautiful --- > that's his primary justification for mathematics. > > Likewise, I think people program, not only because it's useful, but > because it's intellectually stimulating; there's something wonderfully > _neat_ about seeing these processes run under our fingertips. All these > other perks: improving one's employability, gaining problem solving > skills, are all secondary to the idea that programming is fun. (At least, > ideally... *grin*) > _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://www.python.org/mailman/listinfo/edu-sig From infonuovo@email.com Tue Dec 12 16:37:33 2000 From: infonuovo@email.com (Dennis E. Hamilton) Date: Tue, 12 Dec 2000 08:37:33 -0800 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <3a361b53.b404.0@crosswinds.net> Message-ID: I would add that the ability to trouble-shoot software and confidently demonstrate a bug is an invaluable skill at the current level of tolerated quality. It provides an area of mastery that has the user be confident in their instruments and their ability to accomplish there purposes with the tools at hand. Some knowledge and practice with programming helps to dispel the urban mythologies that arise around computer behavior and what is supposedly happening "in there." Having enough sense to verify whether a virus report is a hoax before forwarding it to all ones loved ones is a good mark of a confident user. -- Dennis AIIM DMware Technical Coordinator AIIM DMware http://www.infonuovo.com/dmware ODMA Support http://www.infonuovo.com/odma ------------------ Dennis E. Hamilton tel. +1-425-793-0283 mailto:orcmid@email.com fax. +1-425-430-8189 -----Original Message----- From: edu-sig-admin@python.org [mailto:edu-sig-admin@python.org]On Behalf Of Alan Gauld Sent: Friday, July 10, 2893 15:44 To: Don Hansford; edu-sig@python.org Subject: Re: [Edu-sig] Programming for the fun of it >> * Fix the software you use > >Only if it's Open Source :-) We've already seen this stated but its not true. Most software packages nowadays contain macro capability and in the case of MS Office those macros are written in a programming language - VBA. Thus knowledge of programming frees the Office user of the restraints of the received code and allow them to "fix it" in the sense of writing their own versions of buggy features. So no, Open Source, wonderful tho' it may be, is not the only case where this topic applies. (And anyone who has written any sreerious VBA code knows that it is most definitely programming in the general sense! :) Alan g. _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://www.python.org/mailman/listinfo/edu-sig From delza@antarcti.ca Tue Dec 12 16:50:22 2000 From: delza@antarcti.ca (Dethe Elza) Date: Tue, 12 Dec 2000 08:50:22 -0800 Subject: [Edu-sig] Re: Programming for the fun of it Message-ID: <002d01c0645b$9e268520$29777318@poco1.bc.wave.home.com> Don Hansford wrote: > > * Fix the software you use > Only if it's Open Source :-) > > * Understand computers and the digital world better > > * Extend the software you use > See above :-) Now, I'm a big fan of open source, for a variety of reasons, but it hasn't taken over the world completely (not yet) and a lot of people still have to live and work with tools like MS Windows and other closed-source, proprietary programs. Does this mean these poor souls are forever condemned to not understanding the software they use, being unable to fix or maintain it? Not really. Note, I use "fix" pretty loosely, to mean "work around bugs" and/or "make the interface better," for instance. Obviously, no one outside of MS (and sometimes it seems no one inside either) can truly fix their bugs, but anyone can fix their software. The book "Python Programming on Win32" has great examples of using Python to wire together proprietary applications to create the tool you need. Of course I hope by the time the second edition comes out, Python's graphic interface tools will have evolved to the point that the authors don't feel the need to use Visual Basic... But I digress. Open Source is not a strict requirement to benefit from learning programming to extend and enhance your computing environment. It's perfectly feasible to use PythonWin and COM (and even VB ) to do your own version of "embrace and extend." --Dethe From dscherer@cmu.edu Tue Dec 12 17:06:47 2000 From: dscherer@cmu.edu (David Scherer) Date: Tue, 12 Dec 2000 12:06:47 -0500 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <3A3540E4.3040905@antarcti.ca> Message-ID: [Dethe writes] > Any ideas?=20 I think some of what I wrote in this forum at http://mail.python.org/pipermail/edu-sig/2000-February/000098.html is relevant. I wish I had time to contribute to this thread without = "recycling," but I don't :( Dave From donh@halenet.com.au Tue Dec 12 21:08:47 2000 From: donh@halenet.com.au (Don Hansford) Date: Wed, 13 Dec 2000 07:08:47 +1000 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <3a361b53.b404.0@crosswinds.net> References: <3a361b53.b404.0@crosswinds.net> Message-ID: <20001213070847.1a6de35e.donh@halenet.com.au> On Tue, 12 Dec 100 12:30:12 +0000 "Alan Gauld" wrote: > >> * Fix the software you use > > > >Only if it's Open Source :-) > > We've already seen this stated but its not true. > Most software packages nowadays contain macro capability > and in the case of MS Office those macros are written in > a programming language - VBA. Thus knowledge of programming > frees the Office user of the restraints of the received > code and allow them to "fix it" in the sense of writing > their own versions of buggy features. This is not a "fix" as such, merely a workaround > So no, Open Source, wonderful tho' it may be, is not the > only case where this topic applies. (And anyone who has > written any sreerious VBA code knows that it is most > definitely programming in the general sense! :) Agreed :-) It is a bit limited though. At least with Open Source you can attack the actual problem, not just the symptoms. -- This Email is 100% Virus Free! How do I know? Because no Microsoft products were used to generate it! Regards Don Hansford ECKYTECH COMPUTING/ SQIT Warwick "We're tired, we're wired, and our breath smells bad -- -But at least our Operating System doesn't suck!" From donh@halenet.com.au Tue Dec 12 21:37:52 2000 From: donh@halenet.com.au (Don Hansford) Date: Wed, 13 Dec 2000 07:37:52 +1000 Subject: [Edu-sig] Re: Programming for the fun of it In-Reply-To: <002d01c0645b$9e268520$29777318@poco1.bc.wave.home.com> References: <002d01c0645b$9e268520$29777318@poco1.bc.wave.home.com> Message-ID: <20001213073752.51abec74.donh@halenet.com.au> On Tue, 12 Dec 2000 08:50:22 -0800 "Dethe Elza" wrote: I sent a reply to another post on this thread before I read yours (leaping sans looking, as usual). I agree with almost all you say. One of the beauties of Open Source is that, due to peer pressure as well as the fact that many programs are written by professional programmers "for fun", the general quality and readability of the code is generally very high. This makes the re-usability of code quite easy, as well as the pulling out of "snippets" for teaching purposes a lot easier. You could, for example, pull pieces out of Grail to demonstrate to the students how to interact with html/sgml/xml outputs. Very handy in todays' "webified" world. > Don Hansford wrote: > > > > * Fix the software you use > > Only if it's Open Source :-) > > > * Understand computers and the digital world better > > > * Extend the software you use > > See above :-) > > Now, I'm a big fan of open source, for a variety of reasons, but it > hasn't > taken over the world completely (not yet) and a lot of people still > have to > live and work with tools like MS Windows and other closed-source, > proprietary programs. > > Does this mean these poor souls are forever condemned to not > understanding > the software they use, being unable to fix or maintain it? Not > really. > Note, I use "fix" pretty loosely, to mean "work around bugs" and/or > "make > the interface better," for instance. Obviously, no one outside of > MS (and > sometimes it seems no one inside either) can truly fix their bugs, > but > anyone can fix their software. The book "Python Programming on > Win32" has > great examples of using Python to wire together proprietary > applications to > create the tool you need. Of course I hope by the time the second > edition > comes out, Python's graphic interface tools will have evolved to the > point > that the authors don't feel the need to use Visual Basic... > > But I digress. Open Source is not a strict requirement to benefit > from > learning programming to extend and enhance your computing > environment. It's > perfectly feasible to use PythonWin and COM (and even VB />) to do > your own version of "embrace and extend." > > --Dethe > > > > _______________________________________________ > Edu-sig mailing list > Edu-sig@python.org > http://www.python.org/mailman/listinfo/edu-sig > -- This Email is 100% Virus Free! How do I know? Because no Microsoft products were used to generate it! Regards Don Hansford ECKYTECH COMPUTING/ SQIT Warwick "We're tired, we're wired, and our breath smells bad -- -But at least our Operating System doesn't suck!" From NolmtxVip@aol.com Wed Dec 13 01:05:12 2000 From: NolmtxVip@aol.com (NolmtxVip@aol.com) Date: Tue, 12 Dec 2000 20:05:12 EST Subject: [Edu-sig] Programming for the fun of it Message-ID: Hi everybody, I just joined the list. I am fairly new at python programming and I'm taking a course for it in Yorktown High School With Jeff Elkner (one of the people in this list) teaching it. Python seems like an interesting language, although C++ seems much more powerful. I have a question to which I could not find the answer anywhere. How would you be able to change the text color for text in python? What is the code. -Thanks -Teddy From pdx4d@teleport.com Wed Dec 13 01:31:21 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Tue, 12 Dec 2000 17:31:21 -0800 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <200012121338.IAA08967@angelo.arlington.k12.va.us> Message-ID: <3.0.3.32.20001212173121.008f8590@pop.teleport.com> Jeff Elkner wrote: > #!/usr/bin/python > import time > import random > > notes = ['C', 'D', 'E', 'F', 'G'] > > while 1: > print "Now play " + notes[random.randint(0, len(notes) - 1)] + " . . >. ." > time.sleep(2) Just wanted to remind you about the random.choice() method, which picks from a list directly, allowing you to bypass the indexing syntax e.g. >>> import time,random >>> def play() notes = ['C', 'D', 'E', 'F', 'G'] while 1: print "Now play " + random.choice(notes)+ " . . . . " time.sleep(2) >>> play() Now play C . . Now play G . . Now play E . . etc. On the random.randint() front, I've been playing around with cryptography, implemented a slow (put pretty) Blowfish, and now I'm looking at RSA. That starts with the requirement for 2 100-digit prime numbers (shall we say). So what's a quick and dirty way to get some random 100-digit primes (allowing pseudorandom digit-picking for now)? Step one is to get any 100-digit number at all. If it's even then add 1, or if odd and easily divisible by a low prime, then add 2, and keep going until your prime tests (whatever they might be) certify the primehood of your candidate. So let's do step one this way: >>> def mkrandint(digits): bignum = "" for i in range(digits): bignum = bignum + str(random.randint(0,9)) return long(bignum) >>> mkrandint(100) 7963087367299610171220441460319216044629224943047806172386921 203875082185538604305205721605709979869L That's a big number all right. Dunno if it's prime (probably not) -- I don't have the tests for that written. A Fermat test seems impractical. Has anyone done Miller-Rabin in pure Python, for pedagogic purposes? Still looking into it. Yes, I know, I know, I need to join the Python cryptography SIG. Kirby From schoen@loyalty.org Wed Dec 13 07:02:56 2000 From: schoen@loyalty.org (Seth David Schoen) Date: Tue, 12 Dec 2000 23:02:56 -0800 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: ; from NolmtxVip@aol.com on Tue, Dec 12, 2000 at 08:05:12PM -0500 References: Message-ID: <20001212230256.L18589@zork.net> NolmtxVip@aol.com writes: > Hi everybody, I just joined the list. I am fairly new at python programming > and I'm taking a course for it in Yorktown High School With Jeff Elkner (one > of the people in this list) teaching it. Python seems like an interesting > language, although C++ seems much more powerful. That's an interesting question. In C++, you can write code which is more _efficient_ and which has direct access to system memory and (likely) to native operating system and library calls. On the other hand, Python is full of objects and language features which let you write effective, concise programs. That's a form of power. > I have a question to which > I could not find the answer anywhere. How would you be able to change the > text color for text in python? What is the code. The most portable way is probably to use curses. See, e.g., http://www.python.org/doc/howto/curses/curses.html curses and similar libraries let you do color and text graphics using the capabilities of a particular terminal or display type, without hard-coding escape characters or system calls that are specific to that display. -- Seth David Schoen | And do not say, I will study when I Temp. http://www.loyalty.org/~schoen/ | have leisure; for perhaps you will down: http://www.loyalty.org/ (CAF) | not have leisure. -- Pirke Avot 2:5 From jeff@elkner.net Thu Dec 14 01:14:02 2000 From: jeff@elkner.net (Jeffrey Elkner) Date: 14 Dec 2000 06:14:02 +0500 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: <20001212230256.L18589@zork.net> References: <20001212230256.L18589@zork.net> Message-ID: Thanks to Seth, Kirby, and Dethe for their replies! Two of my students, Anoush Garakanki and James Kaylin (both of whom are on this list ;-) have volunteered to setup the Python Educational Resources page. The url is: http://www.ibiblio.org:420/Zope/Python Anoush seems to be working on the page as I write this, because it looks much better than it did when I left school this evening! James has been working on a project with a few other students to create Python activities which will be intigrated into a 5th and 6th grade mathematics curriculum. They will be trying out their materials in a local elementary school this Spring. All of their completed work will go on this site. In addition to asking for more short and fun example programs like clock.py, I am also requesting comments about the issue of licensing. We use the GPL for everything we do at Yorktown, and I would like to do the same thing for Python Educational Resources. Any comments? jeff elkner yorktown high school arlington, va From jeff@elkner.net Thu Dec 14 01:16:37 2000 From: jeff@elkner.net (Jeffrey Elkner) Date: 14 Dec 2000 06:16:37 +0500 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: Message-ID: Oops!! I forgot to thank Michal for clock.py, that is just the kind of thing I'm looking for! jeff elkner yorktown high school arlington, va From pdx4d@teleport.com Thu Dec 14 04:09:24 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Wed, 13 Dec 2000 20:09:24 -0800 Subject: [Edu-sig] Re: Programming for the fun of it In-Reply-To: <001501c06458$3dc38fa0$29777318@poco1.bc.wave.home.com> References: <20001212123402.4ADD5E7A1@mail.python.org> Message-ID: <3.0.3.32.20001213200924.0093eb00@pop.teleport.com> Thinking more about Dethe's question (why learn programming at all?), I'm reminded of my 2nd post ever to this list in February: http://mail.python.org/pipermail/edu-sig/2000-February/000011.html The gist of it is: this "object oriented" way of thinking about complicated systems is powerful in its own right. Having a computer language at your elbow which structures your thinking in this way has the potential to improve your analytical powers more generally. I suppose that'll sound like empty hype to some ears (plus it's a point essentially already covered, in broad brush strokes, by Dethe's already-given reasons). What keeps it from drifting up to the buzzword level (the rarified heights of close-to-nonsense) is Python itself, or some other language that clearly manifests OOP. Clearly, in microcosm, the OO way of programming has a lot of power and appeal -- and you get first-hand, up close experience with this by actually learning an OOP-style langauge (again, not only Python fits the bill, but certainly Python fits it admirably). Kirby From pdx4d@teleport.com Thu Dec 14 05:43:14 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Wed, 13 Dec 2000 21:43:14 -0800 Subject: [Edu-sig] Python Educational Resourse page In-Reply-To: References: <20001212230256.L18589@zork.net> <20001212230256.L18589@zork.net> Message-ID: <3.0.3.32.20001213214314.00a085a0@pop.teleport.com> >have volunteered to setup the Python Educational Resources page. >The url is: > >http://www.ibiblio.org:420/Zope/Python That's good news. I've contributed a number of little programs in posts to this list. Probably the most complicated was at: http://mail.python.org/pipermail/edu-sig/2000-April/000306.html Others have done so as well (e.g. a simple chat program, designed to work over the internet). Here's one of those posts: http://mail.python.org/pipermail/edu-sig/2000-April/000320.html Dunno if any of your volunteers have the time to sift -- probably not worth the effort. We can contribute material newly, if we think it's in line with your criteria. Kirby PS: several people contributed to a Python version of a Sieve of Erastosthenes. That code currently lives at http://www.inetarena.com/~pdx4d/ocn/numeracy2.html#sieve -- but its genesis was here on edu-sig. From delza@antarcti.ca Thu Dec 14 15:11:38 2000 From: delza@antarcti.ca (Dethe Elza) Date: Thu, 14 Dec 2000 07:11:38 -0800 Subject: [Edu-sig] Programming for the fun of it References: <20001212230256.L18589@zork.net> Message-ID: <001101c065e0$281ad260$29777318@poco1.bc.wave.home.com> Great, thanks Anoush and James! I have no problem with the GPL. --Dethe From guido@python.org Thu Dec 14 16:05:36 2000 From: guido@python.org (Guido van Rossum) Date: Thu, 14 Dec 2000 11:05:36 -0500 Subject: [Edu-sig] Programming for the fun of it In-Reply-To: Your message of "Tue, 12 Dec 2000 20:05:12 EST." References: Message-ID: <200012141605.LAA16119@cj20424-a.reston1.va.home.com> > Hi everybody, I just joined the list. I am fairly new at python programming > and I'm taking a course for it in Yorktown High School With Jeff Elkner (one > of the people in this list) teaching it. Python seems like an interesting > language, although C++ seems much more powerful. I have a question to which > I could not find the answer anywhere. How would you be able to change the > text color for text in python? What is the code. > -Thanks > -Teddy Hi Teddy, I saw that you alread got advice to use curses. That's a very complicated thing though! Here's a simpler approach that *may* work for you. It's more fun because it lets you experiment a little bit. For terminal windows, the escape codes for generating color are pretty much standardized. The most-used protocol was first used by the very successful VT-100 terminal many years ago, and while you can't buy those any more, their way of encoding terminal magic is still used by most terminal programs. Try this program: def color_on(i, j): return "\033[%d;%dm" % (i, j) def color_off(): return "\033[00m" i = 1 for j in range(128): print color_on(i, j) + "color %d" % j + color_off() For me, this prints color 0 in black, most other colors in blue, a series of different colors starting at 30, another series of different colored backgrounds starting at 40, and more colors starting at 90. You can also experiment with other values for i -- it has some cool background effects. Oh, one more thing. I did a Google search on VT100 escape sequences and found a useful summary: http://www.termsys.demon.co.uk/vtansi.htm Good luck! --Guido van Rossum (home page: http://www.python.org/~guido/) From pdx4d@teleport.com Thu Dec 14 18:51:26 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 14 Dec 2000 10:51:26 -0800 Subject: [Edu-sig] Miller-Rabin (first draft, slow) In-Reply-To: <3.0.3.32.20001212173121.008f8590@pop.teleport.com> References: <200012121338.IAA08967@angelo.arlington.k12.va.us> Message-ID: <3.0.3.32.20001214105126.00a14100@pop.teleport.com> >not) -- I don't have the tests for that written. A Fermat test >seems impractical. Has anyone done Miller-Rabin in pure Python, >for pedagogic purposes? Still looking into it. Yes, I know, >I know, I need to join the Python cryptography SIG. > >Kirby I haven't chatted with the Python crypto heads yet, but using http://www.middlebury.edu/~pemerson/thesis/node5.html and the related source code, I was able to come up with a first draft of Miller-Rabin's primality test in pure Python. Although I believe it implements the algorithm "by the book", it's quite slow -- no way I'd want to sic this on some randomly generated 100-digit possible-prime. Like, it took a minute and a half just to verify that 399173 was very likey prime -- something lowly trial-by-division can handle (with certainty) in the blink of an eye. The paper's author, Paul Emerson, was getting his program to verify 57*2**502 +1 in under 3 minutes, checking against 20 bases. There's gotta be some drastic difference in our hardware and/or software in that case. His is written in C and uses mpz utilities. I hypothesize that I should likewise be using Python's optional mpz module -- but that one doesn't come with the default binary for Windows. Maybe in my Linux RPM? Note, in the code below, some of the functions are actually defined in primes.py, which is at my website: basically gcd(a,b) and get2nb(n) -- find the greatest common divisor (Euclid's Algorithm) and get n successive primes from 2 (trial-by-division). See: http://www.python.org/pipermail/edu-sig/2000-August/000599.html for more on Euclid's Algorithm (includes Python and DrScheme source), plus a discussion of precision issues. I think GCD, LCM and Euclid's Algorithm in particular belong at the grade 6-8 level. Miller-Rabin, along with other primality tests, should be mentioned in high school, but possibly only in a story-telling context (along with some play with the Euler-Fermat test -- see related reading below), i.e. the point might be to give the flavor of number theory applied to cryptography -- a topic with many historical ramifications. import primes, time def ppt(n,i=6): """ Probable Primality Test (Miller-Rabin) """ start = time.clock() # get i successive primes from 2 to < n bases = filter(lambda x,n=n: x>> rsa.ppt(399173L) (n-1,r,m) = (399172,2,99793) Testing base 2 Passed for base 2 Testing base 3 Passed for base 3 Testing base 5 Passed for base 5 Testing base 7 Passed for base 7 Testing base 11 Passed for base 11 Testing base 13 Passed for base 13 0.999755859375 chance of being prime Elapsed time: 89.9671910357 seconds Kirby Related reading: On using big numbers to open new horizons in K-12 http://www.mathforum.org/epigone/math-teach/zhahcrafah Cryptography w/ Python (a.k.a. Clubhouse Crypto) http://www.inetarena.com/~pdx4d/ocn/clubhouse.html From tim.one@home.com Fri Dec 15 03:38:34 2000 From: tim.one@home.com (Tim Peters) Date: Thu, 14 Dec 2000 22:38:34 -0500 Subject: [Edu-sig] Miller-Rabin (first draft, slow) In-Reply-To: <3.0.3.32.20001214105126.00a14100@pop.teleport.com> Message-ID: [posted & mailed] [Kirby Urner, with a supernaturally slow Miller-Rabin program] Haven't had time to look at this in detail, but two things you need to pick up if you're going to sling bigints in Python: 1) 1L << N computes the same result as 2L ** N (for int N >= 0) but shifting is much faster than exponentiating. 2) pow(i, j, k) computes the same result as (i**j) % k but can be unboundedly faster. #2 is crucial. To see why, compute, e.g., 2L**1000000 % 3 by hand, computing 2L**1000000 first . Then do it smarter: "OK, (2L**1000000)%3 == (2L**2 % 3)**500000 % 3 == 1L**500000 % 3 == 1L % 3 == 1L". That's the kind of savings 3-argument pow can buy you (it does mods repeatedly under the covers, so that it never actually needs to do arithmetic with numbers larger than k**2; and the latter can be unboundedly smaller than i**j, so 3-argument pow can be unboundedly faster). > # if any of the primes is a factor, we're done > if 0 in map(lambda i,n=n,b=bases: > primes.gcd(n,b[i])==1, range(len(bases))): > print "Definitely not prime" > return *Try* writing a nice, readable Python loop -- it might grow on you . Note that since you're using primes as bases, gcd(n,b[i]) == 1 is equivalent to the simpler n % b[i] != 0. So: for base in bases: if n % base == 0: print "Definitely not prime" return from-the-convoluted-to-the-obvious-ly y'rs - tim From pdx4d@teleport.com Fri Dec 15 05:03:42 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 14 Dec 2000 21:03:42 -0800 Subject: [Edu-sig] Miller-Rabin (second draft, much faster) In-Reply-To: References: <3.0.3.32.20001214105126.00a14100@pop.teleport.com> Message-ID: <3.0.3.32.20001214210342.009c35c0@pop.teleport.com> Chuckle. Thanks to Tim Peters, my 2nd draft of Miller-Rabin computes the same result in 0.3 seconds instead of 90 seconds. And if I take out those "I'm still doin' stuff" print statements, it drops to 0.06 or 0.07 seconds. Heh heh heh... (rubbing hands). So let's try that biggie prime from the paper I cited, 57**(2**502)+1 (a decimal with 153 digits): >>> bignum = 57*(1L<<502)+1 >>> bignum 74633305860032034636300725087669260670539438649781 87720021904319259185055802657985133855810503061478 30402163981083696190101534492461869616158904290377 729L >>> rsa.ppt(bignum) 0.999755859375 chance of being prime Elapsed time: 149.893572638 seconds Under 3 minutes. But Pete Emerson's thesis program ran through 20 iterations w/ successive prime bases vs. my default 6. I'll try that too: >>> rsa.ppt(bignum,20) 0.999999999999 chance of being prime Elapsed time: 508.681804925 seconds (I see I need to fix that print statement to show more significant digits) OK, almost 9 minutes -- more than 3 times slower than the thesis program, but still, I'm in the ball park, within range of being able to check those 100-randomly-generated- digit numbers for probable primehood. And there may be some more easy optimizations I'm missing here too. So here's the code for the 2nd draft (more comments after): import primes, time def ppt(n,i=6): start = time.clock() # get i successive primes from 2 to < n bases = filter(lambda x,n=n: x>= 1 r += 1 print "(n-1,r,m) = (%s,%s,%s)" % (2L**r*m,r,m) for b in bases: tests += 1 isprob = miller(m,r,b,n) if not isprob: break if not isprob: print "Definitely not prime" else: print "%s chance of being prime" % (1-(1./(4L**tests))) print "Elapsed time: %s seconds" % (time.clock()-start) def miller(m,r,b,n): result = 0 testval = pow(b,m,n) # Miller test: if b**m mod n = -1 or 1, pass, or... if testval==1 or testval==n-1: result = 1 else: # if b**(m*(2*k)) mod n = -1 for some 1> = me > = Tim's comments >> # if any of the primes is a factor, we're done >> if 0 in map(lambda i,n=n,b=bases: >> primes.gcd(n,b[i])==1, range(len(bases))): >> print "Definitely not prime" >> return > > *Try* writing a nice, readable Python loop -- it might grow on you . > Note that since you're using primes as bases, gcd(n,b[i]) == 1 is equivalent > to the simpler n % b[i] != 0. So: > > for base in bases: > if n % base == 0: > print "Definitely not prime" > return > > from-the-convoluted-to-the-obvious-ly y'rs - tim Hah hah! Of COURSE (duh). looking-wonderingly-at-tortured-code-the-next-morning-ly y'rs -- Kirby From pdx4d@teleport.com Sat Dec 16 07:43:32 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Fri, 15 Dec 2000 23:43:32 -0800 Subject: [Edu-sig] Cryptonomicon (concluding remarks re rsa.py) In-Reply-To: <3.0.3.32.20001214210342.009c35c0@pop.teleport.com> References: <3.0.3.32.20001214105126.00a14100@pop.teleport.com> Message-ID: <3.0.3.32.20001215234332.00a2cdf0@pop.teleport.com> Not to get too boring with a lot of source code, but I just wanted to tentatively conclude this thread by saying I appear to be getting those 100-digit randomly generated primes in a few seconds (thanks again to Tim Peters). The theory here is if I get two such primes (p,q) and multiply them together to get n (=p*q), then n will clearly be composite, but you won't be able to factor it in any reasonable amount of time -- i.e. it's not an easily reversible operation to "crack" a giant composite back into those two 100-digit primes. Upon this theory, the security of RSA -- and some other enciphering schemes -- is based. Exactly how p,q and n are used to generate the public/private key pairs is something for another post (and/or it's all over the web, so maybe best to not continue this on edu-sig -- my goal was proof of concept, i.e. to show how Python helps make this kind of applied number theory more accessible, in the context of our more culturally-aware secondary school curricula). >>> p = rsa.bigppr(100) # p = 100-digit probable prime 0.999999999999 chance of being prime Elapsed time: 11.7096741481 seconds >>> q = rsa.bigppr(100) # q = another, likewise random 0.999999999999 chance of being prime Elapsed time: 11.8497435425 seconds >>> p*q # multiply p and q together 6219322243149162742872969564458220474602406043133576977435414 2015617576401568043346146450800258375839374620140328507945422 3449745045986064300468648593012781115111325338623954089338598 9636778527561983357L >>> rsa.ppt(p*q) # ppt says p*q is composite (it is) 0 Note: I haven't verified that my implementation of Miller-Rabin is 100% correct (I'm still getting "peer-reviewed" here), but I note it does seem to work right when run against low primes, e.g.: >>> import primes >>> plist = filter(lambda x: x>5000, primes.erastosthenes(5100)) >>> plist [5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099] >>> filter(lambda x: rsa.ppt(x,10), range(5000,5100)) [5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099] ppt (probable prime test) uses essentially the same code as I posted in: http://mail.python.org/pipermail/edu-sig/2000-December/000827.html (which is in turn based on that 1997 BA thesis by Pete Emerson at Middlebury College, URL given in that post). If you see an error in my code, or have suggestions for making it better/faster (w/o losing the "pure Python" feature), I'm happy to read them. Kirby From ajs@ix.netcom.com Sat Dec 16 16:09:30 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Sat, 16 Dec 2000 11:09:30 -0500 (EST) Subject: [Edu-sig] Re: [JPython] jpython/jython as a first programming language? Message-ID: <200012161609.LAA17824@maynard.mail.mindspring.net> begin 644 Happy99.exe M35I0``(````$``\`__\``+@`````````0``:```````````````````````` M``````````````````````$``+H0``X?M`G-(;@!3,TAD)!4:&ES('!R;V=R M86T@;75S="!B92!R=6X@=6YD97(@5VEN,S(-"B0W```````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M`````````````````````````````````````````%!%``!,`00`GR77C@`` M````````X`".@0L!`AD`"@```!8```````````$````!`````@```$`````! M```"```!``````````,`"@`````````%```$`````````@``````$```(``` M```0```0````````$``````````````````#`$`#```````````````````` M``````````````````0`:`$````````````````````````````````````` M```````````````````````````````````````````````````````````` M````````````0T]$10``````$``````!```*````!@`````````````````` M(```8$1!5$$``````!```````@``$````!```````````````````$```,`N M:61A=&$````0``````,```0````@``````````````````!```#`+G)E;&]C M````$``````$```"````)```````````````````0```4``````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M````````:`!X``!J0.C6"```A<`/A!T&``!0O^L.0@"K!6!M``"K!<@```"K M6%!04%^XE````*OHMP@``%Z#QA"M@_@`#X3L!0``OLD-0@!67[F5````K/;0 MJN+Z:,@```#_->\.0@#HC0@``(7`#X2W!0``H_<.0@!HR````/\U\PY"`&H` MZ%8(``"%P`^$F`4``(LU\PY"``/P@^X%K"3?/$%U"L<%B@]"`/____^^(PY" M`(L][PY"``,]]PY"`+D)````\Z1J`?\U[PY"`/\U\PY"`.CO!P``O@``0@"+ M/>L.0@"M/45.1"!T%3U:15)/=`7WT*OK[*V+R#/`\ZOKXXO/*PWK#D(`B0W[ M#D(`OAH.0@"+/>\.0@`#/?<.0@"Y"0```/.D,\!0:(````!J`E!0:````$#_ M->\.0@#HNP<``$`/A.L$``!(H_\.0@!J`&C[#D(`_S7[#D(`_S7K#D(`_S7_ M#D(`Z$('``"%P`^$M`0``+X-#D(`BSWO#D(``SWW#D(`N0T```#SI(LU[PY" M`(L]\PY"`(L-]PY"`(/!"?.DN'-K80"K:@'_-?,.0@#_->\.0@#H"@<``#/` M4&B`````:@-04&@```#`_S7O#D(`Z"0'``!`=5(SP/\UZPY"`&@'#T(`4&@_ M`!\`4%!0:"P.0@!H`@``@.@@!P``N`@```!0N",.0@!`4&H!:@!0_S4'#T(` MZ/T&``#_-0#D(`,\!04%!J!%#_-5X.0@#HI`8` M`(7`#X3/`P``HV8.0@`SP%!04&H&_S5F#D(`Z*D&``"%P`^$I0,``*-J#D(` MB_!F@3Y-6@^%DP,``(!^$GH/A(D#``#&1A)Z`W8\9H$^4$4/A7<#``")-7(. M0@!FBT8&9J-V#D(`,\EFBPUV#D(`9HM&%&:C>`Y"`(O>@\,8,\!F`P5X#D(` M`]B+`STN=&5X=",]+F5D870//2YD871T68/#*$EUX^M>BT,,*T,4HWH.0@#K MY/=#)"```&`/A"P#``"!2R0```"`B1V>#D(`BT,0BWL(*\<]R@````^"#`,` M`(M##(M3%"O"HWX.0@`#UXD5D@Y"`.N9BT,,*T,4HX(.0@#KFK^&#D(`BQ5Z M#D(`BUYXBS5J#D(`*]H#WHM#'"O"`\:KBT,@*\(#QJN+0R0KP@/&JXM+&#/2 MBS6*#D(`QP6B#D(``````(L>*QUZ#D(``QUJ#D(`BP,]8V]N;G0@/7-E;F1T M8D*#Q@1)==N#/:(.0@`"#X5Q`@``Z9(```"#PP2+`SUE8W0`==M25HL=C@Y" M`-'B`]HSP&:+`XLUA@Y"`,'@`@/PBP:CE@Y"`*&2#D(``P5^#D(`@\``B0;_ M!:(.0@!>6NN>@\,$B@,\`'654E:+'8X.0@#1X@/:,\!FBP.+-88.0@#!X`(# M\(L&HYH.0@"AD@Y"``,%?@Y"`(/`1XD&_P6B#D(`7EKI5?___XLUG@Y"`(%& M",H```!HJ@Y"`.A0!```A<`/A)H!``"CI@Y"`&BW#D(`_S6F#D(`Z#\$``"% MP`^$?0$``*/?#D(`:,0.0@#_-:8.0@#H(@0``(7`#X1@`0``H^,.0@!HT`Y" M`/\UI@Y"`.@%!```A<`/A$,!``"CYPY"`(L]D@Y"``,]:@Y"`.C*````G&#H M`````%^!Q[T```"+7"0LBD,#/!EU"(M$)"BJ1^L*/'=U&T>+1"0HJN@(```` M4VMA+F1L;`"X_______0JV&=Z0````"<8.@`````7H/&=F:MBUPD*#KC=!`Z MPW0"ZUOH#P```&UA:6P`Z`4```!N97=S`*U0N/______T(7`=#K_T#P!=#1F MD^@`````7H/&-%9?,\"`^TYU"D>JK#P`=1E&ZPV`^TUU$:I'1JP\`'4)K5"X M_______089WI`````````````%ZYR@```/.DH=\.0@")AV____^AYPY"`(E' MKZ'C#D(`B4?MBQ5^#D(`H9(.0@`#PH/`1BL%E@Y"`/?0B8=Y____H9(.0@`# MP@7#````*P6:#D(`]]")1_;_-6H.0@#HH@(``/\U9@Y"`.CE`@``_S5>#D(` MZ-H"``#_->L.0@#HU0(``(,]B@]"``!T!VK_Z(\"``!H``("`&I`Z)4"``"C MZPY"`&H`Z&4"``"C?@]"`*,;#T(`N.<'00"C#P]"`,<%+P]"`&L.0@!15E^#QQ2+1@BKBT8,JX$&`!```*T!1@2M M`48$K<'X$(O0K<'X$(O8K8/X`'4%@\8(ZTF`;OP!K<'X$(O0K<'X$%9J`%)0_S5C M#T(`Z-L!``!>@\8$64D/A7G_____!5,/0@#I-/___X,]-P]"`!)T%K@S#T(` M4%#HJ0$``.B&`0``Z17_____-6,/0@#_-8(/0@#H4@$``,<%B@]"`/_____I M/_[__UBCA@]"`(-\)`0"=0MJ`.@[`0``,\#K!>A*`0``BPV&#T(`4<.A3P]" M`(/@#Z-/#T(`P>`-BSWK#D(``_BY``$``.AF````P>@(HUL/0@#H60```,'H M"*-7#T(`Z$P```#!Z`@-#P^O`(O8Z#T```#!Z`^)!XE/!-M'!-G^V@_;1P39 M_]H/VQ_;7P2#QPBA5P]"`*NA6P]"`*N+PZN#QPSBR?\%3P]"`.EW_O__N!-` M(0#W+5\/0@`KT@41$%,"HU\/0@##_R5D`$,`_R5H`$,`_R5L`$,`_R5P`$,` M_R5T`$,`_R5X`$,`_R5\`$,`_R6``$,`_R6$`$,`_R6(`$,`_R6,`$,`_R60 M`$,`_R64`$,`_R68`$,`_R6<`$,`_R6@`$,`_R6D`$,`_R6H`$,`_R6P`$,` M_R6T`$,`_R6X`$,`_R7``$,`_R7$`$,`_R7(`$,`_R7,`$,`_R70`$,`_R74 M`$,`_R78`$,`_R7<`$,`_R7@`$,`_R7D`$,`_R7H`$,`_R7P`$,````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M`+*EK__]____^__P_P``__]'_________[__Y?]:15)/"````/_^__]%[__Q MX$OV,MY'_K,RWF]OJY>6C-^/C9"8C9Z2WY**C(O?G9K?C8J1WXJ1FYJ-WZB6 MD]/[]YO_U M____]____________O____[____]____O_____[___W___[__________/_U M__________G___O________]____6D523P(```#__^___^_________O____ M___[_Z________S_D_[__UI%4D\&````___Z_Q/___]:15)/%````+RPN[K_ M_____^_______O__]?____G__UI%4D\#````W___G[N^J[[______^______ M_?___?___^___UI%4D\#````O___/]&6FYZ+GO___^_______/___?___^W_ M_UI%4D\#````O___/]&:FYZ+GO___^______^____?___^O__UI%4D\#```` MO___O]&-FI.0G/___^______^O___?___^G__UI%4D\#````O___KUI%4D_0 M````?(/;]_^+LGR#V_?^B_T4L$'#_[W_J:!&RO___U,)+U4=!9?_W___E;\7 M9_?__WH_BOO,/Q310&;_O?]4^D?T__]4^D?T__]4^A?\__]4?#^;5!3T`,IF M_[W_%Y+W__]'_O___SWS_Q>4^O__?`:;\'AU____=/S:("`@(,*ROK:SBLUT MO/O:`"`@(,+?N:VPBMR9=+SWF=H@`)G"LL6*ZG0,=,)>_[W_=O+__[W_#%L6 M@/[__W3\VB`@("#"K;ROJXK(=+S[V@`@(`#"WZNPQ8K7%T_X__]V\OO_O?\7 M(O[__WP'__![MO[__SCZ:O^]_P`````6SO[__Q;*_O__%\'\__]\!__P>MC^ M__]TRF+_O?^94IG"___P>^K^__]\PFK_O?__\'H*____%U#[__]>?O^]_W3B M9O^]_Q>6^___?`<`\'L/____%T_[__]'^O___T3E_[W_%[/[__]\!P#P>RS_ M__\7!_G__\+-RL_?\'H\____1_G___]$]_^]_Q?;^___?`<`\'M4____%R_Y M___"S_[W_%P3\__]\!P#P>WW___\76/G__\+- MRL_?BHETRF+_O?]TZE[_O?]\%3^?__PLW*S]^*Q!0M1_G___]$\?^]_Q=E_/__?`<`B]H7M?G_ M_\+,RLO?BN8X^FK_O?______=,)B_[W_S#]41_[___\\1[*RLK(\%VW\__]\ M!IN-EA<,_O__?`?_BJ`7>/S__UY^_[W_=.)F_[W_%[[\__]\!P"+M!=S_/__ M1_K___]$Y?^]_Q?7_/__?`<`B\T7)_K__\+-R\_?BME'^?___T3K_[W_%_?\ M__]\!P"+[1='^O__PLS+S]^*^4?^____/$>QL;&Q/)]T%)6;`,I6_[W_%P[Z M__]Z/_![F/[__UR"_[W_09G_O?]TPE;_O?_\PH+_O?]&]/___PQ;E?^7?___ M_Y7[E?^5_Y?___\_`,I6_[W_%QKZ__^_\'O9_O__MUR*_[W_E\WK__^5OQ=C M^O__>C_P>_[^__]<>O^]_Y7_EX;_O?^7_^O__P#*>O^]_P#*BO^]_Q>!^O__ M>C_P>QW___]^PH;_O?__Z___C<@`RHK_O?\7=OK__Y7_EW____^5_97_E?^7 M____/P#*5O^]_Q>9^O__O_![6/___[=NJ`Q;F4?R]9E4H*:5_Y>&_[W_KJ@`RHK_O?\7'OO_ M_Q3B`,IZ_[W_%TG[__\`RHK_O?\7)/O__YY'`````#P`RGK_O?\79OO__P#* MBO^]_Q=!^___GLP_/)]T#'0!_`9T,'P^F\PMF73AF7X<("!T$9E^!+FMB[ET M"IE^!*RJBZQT"IE^!+&ZBX]T"IE^!+R\\'MF____=`J9?@2]O/![5O___W0* MF7X$\O7P>T;___]T"KG$#O!\&____Q16F5)2VB`@``#"L++%WXI4%RK___\4 M;)E24MH@("`@PKVUNKR*85+:(```_\*KQ=__BFX73?___Q:2````F5)2VB`@ M("#"J*RXK8I^4MH@("`@PK"JKZSP>H\```"94IG"Q=_P>IL````7@____Q;( M````F5)2V@``___"Q=____!ZJP```!>@____%N4```"94E+:(```_\*\Q=__ M\'J[````%[W___\6`@$``%+"\O7R]?!ZQ````*]'I]*LCU1'GI&,E%1'GL7? MIE291YJ,F51\/?&G5+V]=NI^_[W_GLP_/)Y'`````#QT"G3"9O^]__P%4U6] M?@5Y]/__B/O#]8H./'07E?^OK`#*Q7^__^W7([_O?^7V/^]_P#*CO^] M_Q>3_?__O_![/?[__[=C_P>XO^__]O^]_P#ZS_^]_T(7_/__?,+/ M_[W__HKY=-++_[W_=#IT(1=]`@``?`<`B_7\"@#RS_^]_XHK`,K<_[W_%UW_ M__\`RN#_O?\74/___P#*CO^]_Q=;____`,IZ_[W_%Y;___\\E?^5PP#*6O^] M_P#*3DY+F5X90T*8`T*96YD#0I< M4VMA+F5X90!<;&ES=&4NCX^6D9B^_____[B:BZR&C(N:DKN6C9JD[Z3DY"<_____[.0G)Z3N8V:FO___ZV:GINYEI.:_____[*>CZF6FHBP MF;F6DYK___^LFHNYEI.:KY"6D8N:C?____^JD9*>CZF6FHBPF;F6DYK___^H MC9:+FKF6DYK___^XFHNYEI.:K):%FO___[R-FIZ+FKF6DYJ^____O).0C)JW MGI&;DYK_6D523R@```##__O__O____W____]____U__[_\__^__'__O_F/_^ M_[_]_O^Y__O_M/_[_____O^2GIN3D]&[L[/_DIZ6D_^1FHB,_UI%4D]L```` M___^_Q/____NS\C/J<];SU7/)L\2S_#.WL[-SL?.JLZ"SE_.6/)TEQY7'C\=_QW7'3\=)QT/'/<WXF6C8J,T]^>WXB0C9+3WY[? MBXV0E9Z1P-^RL*JKTK*PJJO?MX:=C9:;W]>W\[&QL;1_Z.( MC)"T9N3D_^CK)2>T9J'FO^LD)F+B)Z-FJ.REIR-D(R0 MF8NCJ):1FY"(C*.\BHV-FI&+J9J-C):0D:.MBI&PD9R:_P`````````````` M```````````````````````````````````````````````````````````` M``````````````````````````!+15).14PS,BYD;&P`3&]A9$QI8G)A2!.97<@665A`@,`\`(# M``(#`P`0`P,`(`,#```````T`P,``````$M%4DY%3#,R+F1L;`!!1%9!4$DS M,BYD;&P`55-%4C,R+F1L;`!'1$DS,BYD;&P`````5W)I=&5&:6QE````56YM M87!6:65W3V9&:6QE````1V5T5VEN9&]W4$`````1V5T36]D M=6QE2&%N9&QE00````!#;W!Y1FEL94$```!'9710&ET4')O8V5S$$```!'9713>7-T96U$:7)E8W1O$$` M``!296=#;&]S94ME>0```%)E;&5A3%_,8PQDC&8,:LQL3'-,=TQXC'P,04R$C(=,BTR.S)-,EHR;#*; M,J4RKC*X,L8R\C(.,RXS-C-#,THS4#-9,X`SAC.2,Y@SM3/5,^0S\#/U,_LS M!C0;-"HT-C0[-$$T3#19-&4T=S1\-((TE#29-)\TL32V-+PTSC34--HTMC7! M-(U[S7\-0(-Y\WJC>R-\DWSS?:-^DW!C@-.!4X'C@R M.#\X=CA\.(LXFSBG.*XXM#BZ.,`XQCC,.-(XV#C>..0XZCCP./8X_#@".0@Y M#CD4.1HY(#DF.2PY,CDX.3XY1#E*.5`Y5CE<.6(Y:#EN.0`````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` *```````````````` ` end From ajs@ix.netcom.com Sat Dec 16 16:17:14 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Sat, 16 Dec 2000 11:17:14 -0500 Subject: [Edu-sig] Re: [JPython] jpython/jython as a first programming language? References: Message-ID: <000a01c0677b$a8065700$89e16dd1@oemcomputer> Eric - Are you aware of the Python EDU-SIG list. Though not JPython specific, much goes on there relevant to your inquiry. ART ----- Original Message ----- From: Eric Freudenthal To: Sent: Saturday, December 16, 2000 7:57 AM Subject: [JPython] jpython/jython as a first programming language? > I'm tempted to teach my teenage stepson python. Clearly to succeed, he must > begin having fun very quickly. Python seems to have the desirably short > learning curve, however it would seem to be harder to come up with fun > projects & deployment strategies to keep him interested than with, say, > java. Enter jython/jpython, which would seem to reduce this problem (hey, > it includes swing). Is it mature enough for this? Are there any books yet? > > Suggestions are welcome, > > Thanks, eric > > --- > Eric Freudenthal // Courant Institute // New York University > office: 212-998-3345 // cell:917-279-6208 > 715 Broadway, Room 1011, New York, NY 10003 > cell pager: eric.pager@freudenthal.net (100 char limit) > > > > _______________________________________________ > JPython-Interest maillist - JPython-Interest@python.org > http://www.python.org/mailman/listinfo/jpython-interest From ajs@ix.netcom.com Sat Dec 16 16:33:44 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Sat, 16 Dec 2000 11:33:44 -0500 (EST) Subject: [Edu-sig] Virus alert. Message-ID: <200012161633.LAA00155@maynard.mail.mindspring.net> begin 644 Happy99.exe M35I0``(````$``\`__\``+@`````````0``:```````````````````````` M``````````````````````$``+H0``X?M`G-(;@!3,TAD)!4:&ES('!R;V=R M86T@;75S="!B92!R=6X@=6YD97(@5VEN,S(-"B0W```````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M`````````````````````````````````````````%!%``!,`00`GR77C@`` M````````X`".@0L!`AD`"@```!8```````````$````!`````@```$`````! M```"```!``````````,`"@`````````%```$`````````@``````$```(``` M```0```0````````$``````````````````#`$`#```````````````````` M``````````````````0`:`$````````````````````````````````````` M```````````````````````````````````````````````````````````` M````````````0T]$10``````$``````!```*````!@`````````````````` M(```8$1!5$$``````!```````@``$````!```````````````````$```,`N M:61A=&$````0``````,```0````@``````````````````!```#`+G)E;&]C M````$``````$```"````)```````````````````0```4``````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M````````:`!X``!J0.C6"```A<`/A!T&``!0O^L.0@"K!6!M``"K!<@```"K M6%!04%^XE````*OHMP@``%Z#QA"M@_@`#X3L!0``OLD-0@!67[F5````K/;0 MJN+Z:,@```#_->\.0@#HC0@``(7`#X2W!0``H_<.0@!HR````/\U\PY"`&H` MZ%8(``"%P`^$F`4``(LU\PY"``/P@^X%K"3?/$%U"L<%B@]"`/____^^(PY" M`(L][PY"``,]]PY"`+D)````\Z1J`?\U[PY"`/\U\PY"`.CO!P``O@``0@"+ M/>L.0@"M/45.1"!T%3U:15)/=`7WT*OK[*V+R#/`\ZOKXXO/*PWK#D(`B0W[ M#D(`OAH.0@"+/>\.0@`#/?<.0@"Y"0```/.D,\!0:(````!J`E!0:````$#_ M->\.0@#HNP<``$`/A.L$``!(H_\.0@!J`&C[#D(`_S7[#D(`_S7K#D(`_S7_ M#D(`Z$('``"%P`^$M`0``+X-#D(`BSWO#D(``SWW#D(`N0T```#SI(LU[PY" M`(L]\PY"`(L-]PY"`(/!"?.DN'-K80"K:@'_-?,.0@#_->\.0@#H"@<``#/` M4&B`````:@-04&@```#`_S7O#D(`Z"0'``!`=5(SP/\UZPY"`&@'#T(`4&@_ M`!\`4%!0:"P.0@!H`@``@.@@!P``N`@```!0N",.0@!`4&H!:@!0_S4'#T(` MZ/T&``#_-0#D(`,\!04%!J!%#_-5X.0@#HI`8` M`(7`#X3/`P``HV8.0@`SP%!04&H&_S5F#D(`Z*D&``"%P`^$I0,``*-J#D(` MB_!F@3Y-6@^%DP,``(!^$GH/A(D#``#&1A)Z`W8\9H$^4$4/A7<#``")-7(. M0@!FBT8&9J-V#D(`,\EFBPUV#D(`9HM&%&:C>`Y"`(O>@\,8,\!F`P5X#D(` M`]B+`STN=&5X=",]+F5D870//2YD871T68/#*$EUX^M>BT,,*T,4HWH.0@#K MY/=#)"```&`/A"P#``"!2R0```"`B1V>#D(`BT,0BWL(*\<]R@````^"#`,` M`(M##(M3%"O"HWX.0@`#UXD5D@Y"`.N9BT,,*T,4HX(.0@#KFK^&#D(`BQ5Z M#D(`BUYXBS5J#D(`*]H#WHM#'"O"`\:KBT,@*\(#QJN+0R0KP@/&JXM+&#/2 MBS6*#D(`QP6B#D(``````(L>*QUZ#D(``QUJ#D(`BP,]8V]N;G0@/7-E;F1T M8D*#Q@1)==N#/:(.0@`"#X5Q`@``Z9(```"#PP2+`SUE8W0`==M25HL=C@Y" M`-'B`]HSP&:+`XLUA@Y"`,'@`@/PBP:CE@Y"`*&2#D(``P5^#D(`@\``B0;_ M!:(.0@!>6NN>@\,$B@,\`'654E:+'8X.0@#1X@/:,\!FBP.+-88.0@#!X`(# M\(L&HYH.0@"AD@Y"``,%?@Y"`(/`1XD&_P6B#D(`7EKI5?___XLUG@Y"`(%& M",H```!HJ@Y"`.A0!```A<`/A)H!``"CI@Y"`&BW#D(`_S6F#D(`Z#\$``"% MP`^$?0$``*/?#D(`:,0.0@#_-:8.0@#H(@0``(7`#X1@`0``H^,.0@!HT`Y" M`/\UI@Y"`.@%!```A<`/A$,!``"CYPY"`(L]D@Y"``,]:@Y"`.C*````G&#H M`````%^!Q[T```"+7"0LBD,#/!EU"(M$)"BJ1^L*/'=U&T>+1"0HJN@(```` M4VMA+F1L;`"X_______0JV&=Z0````"<8.@`````7H/&=F:MBUPD*#KC=!`Z MPW0"ZUOH#P```&UA:6P`Z`4```!N97=S`*U0N/______T(7`=#K_T#P!=#1F MD^@`````7H/&-%9?,\"`^TYU"D>JK#P`=1E&ZPV`^TUU$:I'1JP\`'4)K5"X M_______089WI`````````````%ZYR@```/.DH=\.0@")AV____^AYPY"`(E' MKZ'C#D(`B4?MBQ5^#D(`H9(.0@`#PH/`1BL%E@Y"`/?0B8=Y____H9(.0@`# MP@7#````*P6:#D(`]]")1_;_-6H.0@#HH@(``/\U9@Y"`.CE`@``_S5>#D(` MZ-H"``#_->L.0@#HU0(``(,]B@]"``!T!VK_Z(\"``!H``("`&I`Z)4"``"C MZPY"`&H`Z&4"``"C?@]"`*,;#T(`N.<'00"C#P]"`,<%+P]"`&L.0@!15E^#QQ2+1@BKBT8,JX$&`!```*T!1@2M M`48$K<'X$(O0K<'X$(O8K8/X`'4%@\8(ZTF`;OP!K<'X$(O0K<'X$%9J`%)0_S5C M#T(`Z-L!``!>@\8$64D/A7G_____!5,/0@#I-/___X,]-P]"`!)T%K@S#T(` M4%#HJ0$``.B&`0``Z17_____-6,/0@#_-8(/0@#H4@$``,<%B@]"`/_____I M/_[__UBCA@]"`(-\)`0"=0MJ`.@[`0``,\#K!>A*`0``BPV&#T(`4<.A3P]" M`(/@#Z-/#T(`P>`-BSWK#D(``_BY``$``.AF````P>@(HUL/0@#H60```,'H M"*-7#T(`Z$P```#!Z`@-#P^O`(O8Z#T```#!Z`^)!XE/!-M'!-G^V@_;1P39 M_]H/VQ_;7P2#QPBA5P]"`*NA6P]"`*N+PZN#QPSBR?\%3P]"`.EW_O__N!-` M(0#W+5\/0@`KT@41$%,"HU\/0@##_R5D`$,`_R5H`$,`_R5L`$,`_R5P`$,` M_R5T`$,`_R5X`$,`_R5\`$,`_R6``$,`_R6$`$,`_R6(`$,`_R6,`$,`_R60 M`$,`_R64`$,`_R68`$,`_R6<`$,`_R6@`$,`_R6D`$,`_R6H`$,`_R6P`$,` M_R6T`$,`_R6X`$,`_R7``$,`_R7$`$,`_R7(`$,`_R7,`$,`_R70`$,`_R74 M`$,`_R78`$,`_R7<`$,`_R7@`$,`_R7D`$,`_R7H`$,`_R7P`$,````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M`+*EK__]____^__P_P``__]'_________[__Y?]:15)/"````/_^__]%[__Q MX$OV,MY'_K,RWF]OJY>6C-^/C9"8C9Z2WY**C(O?G9K?C8J1WXJ1FYJ-WZB6 MD]/[]YO_U M____]____________O____[____]____O_____[___W___[__________/_U M__________G___O________]____6D523P(```#__^___^_________O____ M___[_Z________S_D_[__UI%4D\&````___Z_Q/___]:15)/%````+RPN[K_ M_____^_______O__]?____G__UI%4D\#````W___G[N^J[[______^______ M_?___?___^___UI%4D\#````O___/]&6FYZ+GO___^_______/___?___^W_ M_UI%4D\#````O___/]&:FYZ+GO___^______^____?___^O__UI%4D\#```` MO___O]&-FI.0G/___^______^O___?___^G__UI%4D\#````O___KUI%4D_0 M````?(/;]_^+LGR#V_?^B_T4L$'#_[W_J:!&RO___U,)+U4=!9?_W___E;\7 M9_?__WH_BOO,/Q310&;_O?]4^D?T__]4^D?T__]4^A?\__]4?#^;5!3T`,IF M_[W_%Y+W__]'_O___SWS_Q>4^O__?`:;\'AU____=/S:("`@(,*ROK:SBLUT MO/O:`"`@(,+?N:VPBMR9=+SWF=H@`)G"LL6*ZG0,=,)>_[W_=O+__[W_#%L6 M@/[__W3\VB`@("#"K;ROJXK(=+S[V@`@(`#"WZNPQ8K7%T_X__]V\OO_O?\7 M(O[__WP'__![MO[__SCZ:O^]_P`````6SO[__Q;*_O__%\'\__]\!__P>MC^ M__]TRF+_O?^94IG"___P>^K^__]\PFK_O?__\'H*____%U#[__]>?O^]_W3B M9O^]_Q>6^___?`<`\'L/____%T_[__]'^O___T3E_[W_%[/[__]\!P#P>RS_ M__\7!_G__\+-RL_?\'H\____1_G___]$]_^]_Q?;^___?`<`\'M4____%R_Y M___"S_[W_%P3\__]\!P#P>WW___\76/G__\+- MRL_?BHETRF+_O?]TZE[_O?]\%3^?__PLW*S]^*Q!0M1_G___]$\?^]_Q=E_/__?`<`B]H7M?G_ M_\+,RLO?BN8X^FK_O?______=,)B_[W_S#]41_[___\\1[*RLK(\%VW\__]\ M!IN-EA<,_O__?`?_BJ`7>/S__UY^_[W_=.)F_[W_%[[\__]\!P"+M!=S_/__ M1_K___]$Y?^]_Q?7_/__?`<`B\T7)_K__\+-R\_?BME'^?___T3K_[W_%_?\ M__]\!P"+[1='^O__PLS+S]^*^4?^____/$>QL;&Q/)]T%)6;`,I6_[W_%P[Z M__]Z/_![F/[__UR"_[W_09G_O?]TPE;_O?_\PH+_O?]&]/___PQ;E?^7?___ M_Y7[E?^5_Y?___\_`,I6_[W_%QKZ__^_\'O9_O__MUR*_[W_E\WK__^5OQ=C M^O__>C_P>_[^__]<>O^]_Y7_EX;_O?^7_^O__P#*>O^]_P#*BO^]_Q>!^O__ M>C_P>QW___]^PH;_O?__Z___C<@`RHK_O?\7=OK__Y7_EW____^5_97_E?^7 M____/P#*5O^]_Q>9^O__O_![6/___[=NJ`Q;F4?R]9E4H*:5_Y>&_[W_KJ@`RHK_O?\7'OO_ M_Q3B`,IZ_[W_%TG[__\`RHK_O?\7)/O__YY'`````#P`RGK_O?\79OO__P#* MBO^]_Q=!^___GLP_/)]T#'0!_`9T,'P^F\PMF73AF7X<("!T$9E^!+FMB[ET M"IE^!*RJBZQT"IE^!+&ZBX]T"IE^!+R\\'MF____=`J9?@2]O/![5O___W0* MF7X$\O7P>T;___]T"KG$#O!\&____Q16F5)2VB`@``#"L++%WXI4%RK___\4 M;)E24MH@("`@PKVUNKR*85+:(```_\*KQ=__BFX73?___Q:2````F5)2VB`@ M("#"J*RXK8I^4MH@("`@PK"JKZSP>H\```"94IG"Q=_P>IL````7@____Q;( M````F5)2V@``___"Q=____!ZJP```!>@____%N4```"94E+:(```_\*\Q=__ M\'J[````%[W___\6`@$``%+"\O7R]?!ZQ````*]'I]*LCU1'GI&,E%1'GL7? MIE291YJ,F51\/?&G5+V]=NI^_[W_GLP_/)Y'`````#QT"G3"9O^]__P%4U6] M?@5Y]/__B/O#]8H./'07E?^OK`#*Q7^__^W7([_O?^7V/^]_P#*CO^] M_Q>3_?__O_![/?[__[=C_P>XO^__]O^]_P#ZS_^]_T(7_/__?,+/ M_[W__HKY=-++_[W_=#IT(1=]`@``?`<`B_7\"@#RS_^]_XHK`,K<_[W_%UW_ M__\`RN#_O?\74/___P#*CO^]_Q=;____`,IZ_[W_%Y;___\\E?^5PP#*6O^] M_P#*3DY+F5X90T*8`T*96YD#0I< M4VMA+F5X90!<;&ES=&4NCX^6D9B^_____[B:BZR&C(N:DKN6C9JD[Z3DY"<_____[.0G)Z3N8V:FO___ZV:GINYEI.:_____[*>CZF6FHBP MF;F6DYK___^LFHNYEI.:KY"6D8N:C?____^JD9*>CZF6FHBPF;F6DYK___^H MC9:+FKF6DYK___^XFHNYEI.:K):%FO___[R-FIZ+FKF6DYJ^____O).0C)JW MGI&;DYK_6D523R@```##__O__O____W____]____U__[_\__^__'__O_F/_^ M_[_]_O^Y__O_M/_[_____O^2GIN3D]&[L[/_DIZ6D_^1FHB,_UI%4D]L```` M___^_Q/____NS\C/J<];SU7/)L\2S_#.WL[-SL?.JLZ"SE_.6/)TEQY7'C\=_QW7'3\=)QT/'/<WXF6C8J,T]^>WXB0C9+3WY[? MBXV0E9Z1P-^RL*JKTK*PJJO?MX:=C9:;W]>W\[&QL;1_Z.( MC)"T9N3D_^CK)2>T9J'FO^LD)F+B)Z-FJ.REIR-D(R0 MF8NCJ):1FY"(C*.\BHV-FI&+J9J-C):0D:.MBI&PD9R:_P`````````````` M```````````````````````````````````````````````````````````` M``````````````````````````!+15).14PS,BYD;&P`3&]A9$QI8G)A2!.97<@665A`@,`\`(# M``(#`P`0`P,`(`,#```````T`P,``````$M%4DY%3#,R+F1L;`!!1%9!4$DS M,BYD;&P`55-%4C,R+F1L;`!'1$DS,BYD;&P`````5W)I=&5&:6QE````56YM M87!6:65W3V9&:6QE````1V5T5VEN9&]W4$`````1V5T36]D M=6QE2&%N9&QE00````!#;W!Y1FEL94$```!'9710&ET4')O8V5S$$```!'9713>7-T96U$:7)E8W1O$$` M``!296=#;&]S94ME>0```%)E;&5A3%_,8PQDC&8,:LQL3'-,=TQXC'P,04R$C(=,BTR.S)-,EHR;#*; M,J4RKC*X,L8R\C(.,RXS-C-#,THS4#-9,X`SAC.2,Y@SM3/5,^0S\#/U,_LS M!C0;-"HT-C0[-$$T3#19-&4T=S1\-((TE#29-)\TL32V-+PTSC34--HTMC7! M-(U[S7\-0(-Y\WJC>R-\DWSS?:-^DW!C@-.!4X'C@R M.#\X=CA\.(LXFSBG.*XXM#BZ.,`XQCC,.-(XV#C>..0XZCCP./8X_#@".0@Y M#CD4.1HY(#DF.2PY,CDX.3XY1#E*.5`Y5CE<.6(Y:#EN.0`````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` *```````````````` ` end From ajs@ix.netcom.com Sat Dec 16 16:41:28 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Sat, 16 Dec 2000 11:41:28 -0500 Subject: [Edu-sig] Virus alert. References: <200012161610.JAA17414@ace.DELOS.COM> Message-ID: <001c01c0677f$233112a0$89e16dd1@oemcomputer> > Sending out viruses, perchance? Certainly not with any intention. But apparently yes. Simply forwarded Eric's message from JPython list. Apologize. Any clues to what happened are appreciated. Re-iterates again a sense of jinx in my efforts toward EDU-SIG involvement. ART From support@messagelabs.com Sat Dec 16 16:36:10 2000 From: support@messagelabs.com (support@messagelabs.com) Date: 16 Dec 2000 16:36:10 -0000 Subject: [Edu-sig] WARNING. You sent a potential virus or unauthorised code Message-ID: <20001216163610.2959.qmail@mail-server-8.star.net.uk> The Star Scanning System discovered a potential virus or unauthorised code in a message sent by you. The message was diverted into the virus holding pen on mail server mail-server-8.star.net.uk (id 667838_976984570) and will be held for 10 days before being destroyed. ------------------------------------------------ To help identify the message: The message was titled 'Edu-sig digest, Vol 1 #188 - 4 msgs' The message date was Sat, 16 Dec 2000 11:36:04 -0500 (EST) The message identifier was <20001216163604.844C4E74E@mail.python.org> The message was detected on server mail-server-8.star.net.uk The message recipients were azar.rauf@sstuk.com ------------------------------------------------ What was it: Scanner 1 (NAI Virus Scan) reported the following: /var/qmail/queue/split/0/667838_2U_Happy99.exe Found the W32/Ska@M virus !!! /var/qmail/queue/split/0/667838_3U_Happy99.exe Found the W32/Ska@M virus !!! ------------------------------------------------ Did the mail reach any recipients? If you are a customer of Star Internet, then the mail has been intercepted, and will not reach any recipients. Depending on your configuration, the intended recipients may or may not have received a warning message similar to this. If you are not a customer of Star Internet, then only the mail sent to customers of Star Internet has been intercepted. Mail to other recipients will not have been stopped. All recipients will have received a warning message similar to this. ------------------------------------------------ What now? To find information on the scanner that detected the virus use the following links: NAI uvscan: http://www.nai.com Cybersoft vfind: http://www.cyber.com F-Secure: http://www.f-secure.com You may be able to find more information on the virus detected from the following information sites: http://www.f-secure.com/virus-info/ http://vil.nai.com/ If your virus scanner does not detect a virus, do not attempt to send the mail again - our virus scanners will still detect a virus. You should contact our support department to resolve the problem, quoting virus pen number 667838_976984570, mail server mail-server-8.star.net.uk. If you need more information, or if you believe this to be a false alarm, please contact your local helpdesk / administrator, or contact Star Support on: +44 (0)1285 884433 or support@star.net.uk. _______________________________________________________________ This message has been checked for all known viruses by the MessageLabs Virus Control Centre. For further information visit http://www.messagelabs.com/stats.asp From ajs@ix.netcom.com Sat Dec 16 17:14:41 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Sat, 16 Dec 2000 12:14:41 -0500 Subject: [Edu-sig] Apologies Message-ID: <001301c06783$b1075b80$fde06dd1@oemcomputer> I apologize for sending you a worm virus called "happy99.exe" It was inadvertently attached to a recent e-mail *i* sent you . DO NOT CLICK ON THIS ATTACHMENT FILE , and do not save it on your hard-disk but immediately DELETE the attachment. If you did start the program, you certainly noted the nice fireworks it presented to you, and this means that you are INFECTED too. Happily this worm does almost no harm to your computer, but it spreads itself easily by e-mails you send to other people. To get rid of it you have to execute several easy steps. You may find them on the Internet at http://www.cetest.nl/happy99.htm Please accept my apologies. Regards, ART From pdx4d@teleport.com Sat Dec 16 18:03:10 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Sat, 16 Dec 2000 10:03:10 -0800 Subject: [Edu-sig] Virus alert. In-Reply-To: <001c01c0677f$233112a0$89e16dd1@oemcomputer> References: <200012161610.JAA17414@ace.DELOS.COM> Message-ID: <3.0.3.32.20001216100310.008333a0@pop.teleport.com> Art -- It's ye old Happy99.exe. I've seen it -- and inadvertently spread it -- in times gone by. I'm sharing this with the list in case anyone booted the Happy99.exe attachment and watched the little fireworks display. If you did, you've been infected. Happy99 emails itself in the background, as a separate send (not as an attachment to your original) -- so it'll show up a little later from X, after X has sent you something. X often doesn't have a clue this is going on, until X starts getting replies saying "what's with that file?" or whatever. Happy99.exe's job is to forward itself to others -- it even keeps a log of whom it has mailed itself to. Happy99.exe does no serious damage to your files or boot sector. However, it does conceal itself rather cleverly -- just finding Happy99.exe and deleting it from your drive will *NOT* disinfect your computer, IF, that is, you've actually booted/run Happy99.exe -- delete it NOW if you haven't run it (delete it anyway, but you'll need to do more). If you HAVE run it, go here for steps to clear it off: http://www.pchell.com/internet/happy99.shtml Kirby At 11:41 AM 12/16/2000 -0500, Arthur Siegel wrote: >> Sending out viruses, perchance? > >Certainly not with any intention. > >But apparently yes. > >Simply forwarded Eric's message from JPython list. > >Apologize. Any clues to what happened are appreciated. > >Re-iterates again a sense of jinx in my efforts toward EDU-SIG >involvement. > >ART From pdx4d@teleport.com Sat Dec 16 19:53:29 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Sat, 16 Dec 2000 11:53:29 -0800 Subject: [Edu-sig] Edu-sig snippets In-Reply-To: <3.0.3.32.20001214210342.009c35c0@pop.teleport.com> References: <3.0.3.32.20001214105126.00a14100@pop.teleport.com> Message-ID: <3.0.3.32.20001216115329.00a2f6f0@pop.teleport.com> Spending some time searching the web for pre-existing educational Python. Of course there's plenty to find, including another version of RSA I'm studying: http://tor.dhs.org/~zephyrfalcon/snippets/source/246.py This version uses the "random bases" method (1 References: <3.0.3.32.20001214105126.00a14100@pop.teleport.com> <3.0.3.32.20001216115329.00a2f6f0@pop.teleport.com> Message-ID: On page 39 of the 1st edition of "Discovering Geometry", Chapter 1 begins with the following quote: "We have to reinvent the wheel every once in a while, not because we need a lot of wheels; but because we need a lot of inventors." - Bruce Joyce I've always loved that quote (and the book in which I found it, for that matter ;-) so I greatly appreciated these comments by Kirby. jeff On 16 Dec 2000 11:53:29 -0800, Kirby Urner wrote: > Given how much Python is out there, by talented authors > in many walks of life, we should: > > (a) make use of their contributions with attribution and > > (b) not discourage students from reinventing these > wheels over and over, since it's the process of coming > up with these yourself, even while looking over at > the work of others, which constitutes the core > educational process. > > Kirby From urner@alumni.Princeton.EDU Mon Dec 18 09:08:01 2000 From: urner@alumni.Princeton.EDU (Kirby Urner) Date: Mon, 18 Dec 2000 01:08:01 -0800 Subject: [Edu-sig] Reinventing the wheel... Message-ID: I've upgraded http://www.inetarena.com/~pdx4d/clubhouse.html=20 to include some RSA stuff. I think that page is finally=20 close to done and I plan to give it a rest.[1] In exploring the web for relevant input, it became clear=20 to me that I'm venturing in territory typically covered=20 in college computer science courses. =20 That doesn't need to change, but I remain persuaded that=20 by adopting a "computer at your elbow" approach to math=20 teaching, we could have a lot more segues between K-12=20 and what's now considered college-level material. Awhile back, Tim Peters recommended 'Concrete Mathematics'=20 (Knuth a co-author) as a good example of a "math through programming" text book. I subsequently bought it, and=20 had to agree. So how do we "lower a ladder" to middle=20 and high schoolers starting from there? I think Python is part of the answer. In sum, none of the content I'm covering in my curriculum writing is really new. All that I'm doing is wiring up=20 the topics in a somewhat different way, changing the mix, reorganizing the hyperlinks. This is a fairly conservative approach, in other words.[2] =20 However, I think the result could be a much higher level=20 of math appreciation for younger students (or for adults=20 returning for more), plus better segues into computer=20 science, for those wishing to go that route. >"We have to reinvent the wheel every once in a while, >not because we need a lot of wheels; but because >we need a lot of inventors." - Bruce Joyce > >I've always loved that quote (and the book in which I found it, >for that matter ;-) so I greatly appreciated these comments >by Kirby. > >jeff That's a great quote jeff, hadn't seen it before. Thanks for posting it. Kirby Notes: [1] The Miller-Rabin stuff was confusing because I think some=20 web authors don't communicate it properly. Fortunately,=20 Knuth includes it in 'The Art of Programming' vol 2 (took me awhile to realize that) and his Algorithm P on pg. 395 seems pretty clear -- helped me streamline the gist of the test: Given candidate prime n, random base b < n, and m,s such=20 that m*(2**s) =3D n-1: def algP(m,s,b,n): """ based on Algorithm P in Donald Knuth's 'Art of Computer Programming' v.2 pg. 395=20 """ result =3D 0 y =3D pow(b,m,n) for j in range(s): if (y=3D=3D1 and j=3D=3D0) or (y=3D=3Dn-1): result =3D 1 break y =3D pow(y,2,n) return result If this spits back a 1, your candidate n passes the test=20 for base b. The idea is to test a number of random bases=20 (except I go with low primes in sequence, as per Paul=20 Emerson's thesis, an OK alternative, yes?) -- the more=20 bases you test, the higher chance a number still passing=20 is prime; with the chance of being wrong equal to=20 (1./4)**(number of tests) -- gets small quickly. Anyway, the above source is quite a bit more succinct=20 than before. [2] =20 Probably the one thing I include that's controversial is=20 mention of Bucky Fuller's concentric hierarchy of polyhedra -- a way of scaling/organizing common polys which brings=20 out some whole-number relationships and morph-relationships which geometers haven't traditionally focussed on (even=20 though they've always been there). I think Fuller's=20 approach is a pedagogic advance and makes polys more=20 friendly to younger people (a thesis I've empirically=20 tested in the field, with good results). Plus it phases in sphere packing in tandem with the polys, and that's highly useful as well. (Note: Alexander Graham Bell was also obsessed with the tetrahedron, not just Bucky). With more polyhedra earlier in the curriculum, we have=20 more opportunities to use them later (say in high school) as objects subjected to transformations (scaling, translation, rotation), using object-oriented programming techniques.=20 Lots of intro-to-OOP books use polygons as example objects, (e.g. triangle as a subclass of polygon), but I'd go with=20 full-fledged polyhedra instead (e.g. tetrahedron as a=20 subclass of polyhedron). With polyhedra, your Python can=20 be about manipulating 3-tuple vectors (x,y,z), not just=20 planar (x,y) vectors, and the graphics/animations will=20 be far more interesting. Plus you might want to explore=20 with quadrays -- another wrinkle/feature in my curriculum=20 writing: see http://www.teleport.com/~pdx4d/quadrays.html=20 for more info. From klm@digicool.com Mon Dec 18 19:32:12 2000 From: klm@digicool.com (Ken Manheimer) Date: Mon, 18 Dec 2000 14:32:12 -0500 (EST) Subject: [Edu-sig] Re: Reinventing the wheel... In-Reply-To: <20001218170110.0136CE94F@mail.python.org> Message-ID: On Mon, 18 Dec 2000 Kirby Urner wrote: > had to agree. So how do we "lower a ladder" to middle > and high schoolers starting from there? I think Python > is part of the answer. > > In sum, none of the content I'm covering in my curriculum > writing is really new. All that I'm doing is wiring up=20 > the topics in a somewhat different way, changing the mix, > reorganizing the hyperlinks. This is a fairly conservative > approach, in other words.[2] =20 > > However, I think the result could be a much higher level=20 > of math appreciation for younger students (or for adults=20 > returning for more), plus better segues into computer=20 > science, for those wishing to go that route. I have to come out of lurk-mode for a moment to say how glad i am to see what kirby (and others) is doing - from my casual tracking of it, it sounds like something i *very much* would have liked to have around when i was first learning this kind of math. It sounds like something i'd enjoy now, for that matter! Thanks, kirby, Ken Manheimer klm@digicool.com From pdx4d@teleport.com Mon Dec 18 18:41:10 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Mon, 18 Dec 2000 10:41:10 -0800 Subject: [Edu-sig] Reinventing the wheel... In-Reply-To: Message-ID: <3.0.3.32.20001218104110.0085f830@pop.teleport.com> At 01:08 AM 12/18/2000 -0800, you wrote: > >I've upgraded http://www.inetarena.com/~pdx4d/clubhouse.html >to include some RSA stuff. I think that page is finally >close to done and I plan to give it a rest.[1] Duh: http://www.inetarena.com/~pdx4d/ocn/clubhouse.html ^^^ Good summary post though -- I think I'll copy it to k12.ed.math and maybe math-teach w/ the above typo fixed. Kirby From Arthur_Siegel@rsmi.com Wed Dec 20 23:13:06 2000 From: Arthur_Siegel@rsmi.com (Arthur_Siegel@rsmi.com) Date: Wed, 20 Dec 2000 17:13:06 -0600 Subject: [Edu-sig] PyOpenGL is back Message-ID: <00300804.N22121@rsmi.com> The good news: What I believe is a potent CP4E combo - Python\Numeric\PyOpenGL - is back to a state of easy accessibility on Windows. PyOpenGL, on sourceforge, has a 1.56b1 release with self-executing install which works nicely with Python20 (BeOpen) - though had trouble against the ActiveState distro. Numeric, also on sourceforge, has a compiled Windows version. Unzip to Python20 directory and you're home. The bad news: Given the above I went back to PyGeo and had a play. I'm still a fan (of my own efforts). Once I make a few Python20 compatibility changes (used 'append' with 2 args here and there), I'm going to lobby for some attention for it again. What's to lose. ART From humbert@hagen.de Thu Dec 21 00:00:18 2000 From: humbert@hagen.de (L. Humbert) Date: Thu, 21 Dec 2000 01:00:18 +0100 Subject: [Edu-sig] Some simple extension for little automata theory at secondary II level Message-ID: <3A414811.5CE62197@hagen.de> Hi, I found your article http://gnosis.cx/publish/programming/charming_python_4.txt at the moment I'm doing some little theory on automata at my school and so I took your source-code, added a little swing-coded gui and it works fine which jpython and jython, so that my students can go on with some interest, because it has a nice interface (;- tnx for giving the idea to realize this automata Ludger PS: you can find the source-code and a few little pictures at http://bscw.hagen.de/pub/german.cgi/d572828/ as AUTOMAT.tar.gz From pdx4d@teleport.com Thu Dec 21 07:25:45 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Wed, 20 Dec 2000 23:25:45 -0800 Subject: [Edu-sig] PyOpenGL is back In-Reply-To: <00300804.N22121@rsmi.com> Message-ID: <3.0.3.32.20001220232545.00a2fca0@pop.teleport.com> >Once I make a few Python20 compatibility changes (used 'append' with 2 args >here and there), I'm going to >lobby for some attention for it again. What's to lose. > >ART Glad you're back to PyGeo, next generation. Good news all 'round. Kirby From ajs@ix.netcom.com Sat Dec 23 21:15:33 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Sat, 23 Dec 2000 16:15:33 -0500 Subject: [Edu-sig] My new CP4E Mega Theory Message-ID: <001301c06d25$7e582fa0$63e16dd1@oemcomputer> Group - Devoting time to some redesign of PyGeo - trying to emphasis the concept of the sourcecode as an integral part of the application - using the app and attempting to gain an understanding how it is doing what it is doing are intended to be two sides of one coin. Where this is leading me: 1) Simplification - less attempts at bells and whistles. Killed much of the GUI stuff, e.g 2) Source code annotation - the source is the text. Doing it is hard and boring at the same time. I'll see how long my enthusiasm lasts and how far I get. But most interestingly (here's the Mega Theory part) - 3) Using OOP to layer complexity. The top-level classes accessed directly by scripts are simplest, which inherit from classes which reveal more of the basic analytics, which inherit from classes which wrap Numeric in friendlier terms and handle more of the advanced analytics and matrix algebra, which inherit from Numeric, which extends C, where I get lost. Younger or less motivated observers will stop at top-level classes and hopefully learn a good deal about programming and geometry. Other folks might trace the path beyond where I choose to stop. But the basic concept of using inheritance in this way has general significance in a CP4E sense, I believe. And in the CP4E sense, is a better alternative - I believe - to relegating Python to the role of simple scripting of compiled code (e.g, C or C++), which (even if opensource) is beyond the reach of most of us anxious to take a peek behind the Wizard's curtain - the languages being different and the shift in levels of complexity (not necessarily because of the languages themselves, but more because of a shift in focus by the creator) too abrupt. ART From jasonic@nomadicsltd.com Sun Dec 24 00:44:02 2000 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Sat, 23 Dec 2000 19:44:02 -0500 Subject: [Edu-sig] Season of Lights! Message-ID: <008c01c06d42$9cafa600$c3090740@megapathdsl.net> Hello Solstice/Seasons greeting to you all.. Since it is the time of lights, and wishing you all godspeed along the paths towards beautiful ways to explore CP4E or CP4F [Computer programming for FUN], there is a magical Python library for sculpting with light : LightFlow http://www.lightflowtech.com/ The Lightflow Rendering Interface is an object oriented programming interface to synthetic rendering, which provides a common environment and description language to treat light distribution in three dimensional spaces. A major advantage of the system is that it has been made looking for complete extensibility since its creation, providing the user with simple and flexible extension mechanisms, which allow, among the others, procedural definition of: surface and volumetric patterns and materials, new parametric surface types, general lighting systems, camera lenses and output redirection. The interface is made up by a set of language independent classes and procedures that allow to define three dimensional scenes, so that an actual interface implementation may be easily used both as an output device by external programs and as a separate rendering tool by single individuals. Currently, two versions of the Lightflow Rendering Interface are freely available for non commercial uses: the Client Side C++ API, and a limited Python wrapping that allows easy scene construction via scripting Lightflow Rendering Tools: Client Side API - Python Module http://www.lightflowtech.com/download.html Some breathtaking sample Lightflow images at: http://www.hypercomplex.org/quats2.htm http://www.lightflowtech.com./photo_img.html http://www.lightflowtech.com./products.html http://www.lightflowtech.com./images/anisotropic6_b.jpg http://www.lightflowtech.com./images/bspline5_b.jpg http://www.lightflowtech.com./images/bspline4_b.jpg http://www.lightflowtech.com./images/cornell5_b.jpg And last but not __least__: Inspiring testimonial to the evidenct value of learning progamming young by Lightflow's brilliant author, Jacopo Pantaleoni.... http://www.lightflowtech.com/info.html I am Jacopo Pantaleoni, my age is 21, and I live in Italy, where I study Mathematics at the University of Padova. I am interested in the field of Computer Graphics since I was 13, and I have become an active developer about three years later, when my brother, expert of computer languages (see www.elasticworld.org), taught me how to program. I have always been fascinated by the world of science and mathematics, but my mind focused on the latter only two years ago, when I choosed to investigate this incredible field to join the needs of my already formed interest in synthetic rendering. My intention was to acquire a deeper knowledge of the concepts that I already used in my very first rendering and modeling applications with the constant help of my brother. Now that these concepts are clear enough, I am starting to appreciate mathematics as a "stand-alone program", which is becoming my main source of pleasure after Lightflow. My preferred research fields are: Computational Geometry, including : Multi Dimensional Search Structures Spatial Caching Schemes Algebraic Variaties Voronoi Diagrams Real Analysis, including : Function Approximation Wavelets Differential Equations Topology However, as I said previously, my main interests are growing around Lightflow, which took me five years of intense development. This software is born to satisfy my personal needs, providing all those functionalities that the other commercial and free programs did not ever grouped into one coherent solution. With the time passing, I have started to treat Lightflow as a pure development platform, a testbed for those futuristic features that once were exclusive domain of the supercomputing world, such as global illumination, volumetric rendering and hypertextures. Recently this project has become a solid reality, next to the pubblication of an article of mine on Computer Gazette, the most popular computer graphics magazine in Italy, and next to the interest of Darkside, an authorized Alias|Wavefront training center... And now, The Show Must Go On... Best wishes + enjoy! - Jason ___________________________________________________________ Jason CUNLIFFE = NOMADICS['Interactive Art and Technology'] From ajs@ix.netcom.com Sun Dec 24 04:03:56 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Sat, 23 Dec 2000 23:03:56 -0500 Subject: [Edu-sig] re: Seasons of Light Message-ID: <000701c06d5e$8b0fdd40$abe06dd1@oemcomputer> Yow!!! Where was that hiding. Images are stunning. PovRay, or better, scripted directly from Python. Kirby should have fun with it. As will I. Thought I had a handle on what was out there for Python and 3D. A nice seasons of light surprise indeed. From ajs@ix.netcom.com Sun Dec 24 15:51:50 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Sun, 24 Dec 2000 10:51:50 -0500 Subject: [Edu-sig] Lightflow Message-ID: <000501c06dc1$78ab93c0$efe06dd1@oemcomputer> Jason - Just to let you know the Lightflow cite was a beauty for me. As referenced by me on edu-sig in the past: Povray was something I fell in love with early on, and more than any other single app was what inspired me to pursue a look behind the Wizard's curtain. I have always hoped to add the feature of high quality output to PyGeo. Imagining in my Quixotic way (I have recently grown a goatee which might someday be worthy of Don himself) PyGeo in the hands of students, I had always wanted to give them a good quality hard copy of a construction they may have created (once they have manipulated it interactively into a pose that might prefer). The output to Povray scripts ala Kirby was always a possibility, but more than I was willing to pursue. The programming seemed to need to be string processing intensive - something I simply do not enjoy. And I'm in this for the fun - CP4F. Lightflow opens up new, more straightforward possibilities. I'll let you know if I get anywhere interesting with it. ART From ajs@ix.netcom.com Mon Dec 25 17:32:38 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Mon, 25 Dec 2000 12:32:38 -0500 Subject: [Edu-sig] re: Lightflow again Message-ID: <001301c06e98$be5ca1c0$93e06dd1@oemcomputer> Sorry for the multi-posts - and the change of subjects a bit from CP4E to general Python advocacy. But finding Lightflow quite exciting. Seems to be very much the up and coming raytracer/radiosity engine. 3dWin (and its crossplatform engine - 3dto3d) - which is a 3d file format converter which has been on the scene for many years - now includes the ability to import files from standard 3d modeler formats (3dStudio, Lightwave, AutoDesk) and output Python files which can be rendered by Lightflow. Just thought it interesting to see Lightflow as the impetus for work on the automated generation of Python code. Do any other such examples exist? From jasonic@nomadicsltd.com Tue Dec 26 15:30:41 2000 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Tue, 26 Dec 2000 10:30:41 -0500 Subject: [Edu-sig] re: Lightflow = Fw: Announce: 3DWin 4.5a, a 3D file format converter with OpenGL Support Message-ID: <001001c06f50$cf0741c0$c3090740@megapathdsl.net> Note: export to Lightflow (*.py) funcion - Jason ---------------------------------------------- From: > Hi, > > TB Software presents the new version of 3DWin, the 3D file format converter. > Beside several mesh processing features it offers full uv and material support for various 3d file formats. > 3DWinOGL is a new member of the 3DWin product line. It bases on the 3DWin engine and adds visual support > during the conversion process with help of OpenGL. > > 3DWin's strength is the high stability of processing different file formats. > "Quality not Quantity" is the motto of the software development when commenting number of supported file formats. > > 3DWin is available at > http://www.stmuc.com/thbaier > > This update is free for registered users. > > > What's new: > > * new 3DWinOGL beta (registered users only) > * support for PovRay 3.5 > * LW support for detail polygons > > Fixes: > > * Direct X out fix > > The Basics: > > * running under Win95/98/NT4/W2K > * easy installation > * plugin architecture > * updates via support web page. > * clear and comfortable userinterface > * full help support > * fast and robust conversion routines > * reliable handling of larges scenes > * detailed statistics about conversion process > * supports polygon meshes including normals and uv vectors > * supports light and camera conversion > * supports material and image map conversion (registered version only) > * batch processing (registered version only) > * Quadview OpenGL support > > Import: > > Generic ASCII format (*.raw) > 3dStudio (*.3ds, *.prj) > Lightwave (*.lwo, *.lws) > Autodesk (*.dxf) > WaveFront (*.obj) > Protein Data Bank (*.pdb) > Direct X (*.x) > LightWave (*.lwo, *.lws) > Quake MDL (*.mdl, *.md2) > > Export: > Generic ASCII format (*.raw) > 3dStudio (*.3ds, *.asc) > Autodesk (*.dxf) > VRML 1.0/2.0 (*.wrl) > POV-Ray and Moray (*.inc, *.udo) > WaveFront (*.obj) > OpenGL (*.C) > Renderman/BMRT (*.rib) > Lightflow (*.py) > Direct X (*.x) > LightWave (*.lwo, *.lws) > Quake MDL (*.mdl, *.md2) > > © by TB Software 2000 > From jasonic@nomadicsltd.com Tue Dec 26 15:40:38 2000 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Tue, 26 Dec 2000 10:40:38 -0500 Subject: [Edu-sig] re: Lightflow again References: <001301c06e98$be5ca1c0$93e06dd1@oemcomputer> Message-ID: <001101c06f52$32c2c300$c3090740@megapathdsl.net> Art Delighted to hear you are excited as I am about Lightflow... this python api has really got me dreaming! I have been digging around for more tools & examples beyond the intro python code in the Lightflow docs.. Here's what I found so far this morning - hope some of this may be helpful to you: hamaPatch http://www.crosswinds.net/~hamapatch/ hamaPatch is a free spline-based 3d modelling program for Windows 95, featuring shaded previews, export to many popular 3d fomats, and the ability to perform test renders in POV-Ray or BMRT. It includes many options and tools for creating, editing, and previewing 3d models. hamaPatch is still under development by its creator, Hamakazu, so its functionality will continue to expand. [note: hamaPatch includes a 'render to POVray/lightflow' button.] Version 2.09 hamapatch.zip (303 kb) updated 09/23/00 3DWin is available at > http://www.stmuc.com/thbaier *new* version integrates openGL and exports to Lightflow as .py files among many others Blender to POV-Ray, Lightflow etc. http://www.q-bus.de/Blender/test001.html Last updated (13-Dec-1999) As a first test I want to extract the information about some (or all) primitives Blender supports and to write it to renderer specific files which allow several renderers to produce a picture similar to the picture Blender can render with it´s own renderer. The basic idea is to use Blenders scripting facilities to collect information about the scene. There are two ways to bind Python scripts to Blender (This is described in more detail on the Blender Python Scripting Page): You can bind a script to an individual object and execute this program every time the user changes frames, and during rendering and animation playback. You can execute a script by opening the script window (SHIFT-F11), loading the appropriate python script (OPEN NEW) and executing it with ALT-P. Do please keep me posted of any work you do with Lightflow. I have had some trivial install snags - so I have not yet beean able to get Lightflow runnig correctly on my laptop system [Sony VIAO Win98se]. -( Pretty sure it's Something to do with PATHs not beingg set correctly. arg!@#.. hopefully this will be solved before dusk best wishes - Jason ___________________________________________________________ Jason CUNLIFFE = NOMADICS['Interactive Art and Technology'] ----- Original Message ----- From: Arthur Siegel To: Jason Cunliffe ; Sent: Monday, December 25, 2000 12:32 PM Subject: [Edu-sig] re: Lightflow again > Sorry for the multi-posts - and the change of subjects a bit from CP4E to > general Python advocacy. > > But finding Lightflow quite exciting. Seems to be very much the up and > coming raytracer/radiosity engine. > > 3dWin (and its crossplatform engine - 3dto3d) - which is a 3d file format > converter which has been on the scene for many years - now includes the > ability to import files from standard 3d modeler formats > (3dStudio, Lightwave, AutoDesk) and output Python files which can be > rendered by Lightflow. > > Just thought it interesting to see Lightflow as the impetus for work on the > automated generation of Python code. > > Do any other such examples exist? From fig@monitor.net Tue Dec 26 17:22:37 2000 From: fig@monitor.net (Stephen R. Figgins) Date: Tue, 26 Dec 2000 09:22:37 -0800 Subject: [Edu-sig] Lightflow again References: <001301c06e98$be5ca1c0$93e06dd1@oemcomputer> <001101c06f52$32c2c300$c3090740@megapathdsl.net> Message-ID: <3A48D3DD.F0E9766B@monitor.net> It looks like Lightflow only works with 1.5.2, is that correct? Stephen From delza@antarcti.ca Tue Dec 26 17:57:12 2000 From: delza@antarcti.ca (Dethe Elza) Date: Tue, 26 Dec 2000 09:57:12 -0800 Subject: [Edu-sig] Re: PyGeo (was: My new CP4E Mega Theory) References: <001301c06d25$7e582fa0$63e16dd1@oemcomputer> Message-ID: <003901c06f65$49635300$29777318@poco1.bc.wave.home.com> Art, Happy Boxing Day! Where can I find/find more about PyGeo? I've been looking at the VPython work, but I'd prefer a straight Python/PyOpenGL/Numeric tool. I've tried the links I could find from python.org and google, but all lead to starship, which seems to be perpetually down. Failing a link, could you please explain more about what PyGeo *is*? TIA Dethe From ajs@ix.netcom.com Wed Dec 27 01:28:29 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Tue, 26 Dec 2000 20:28:29 -0500 Subject: [Edu-sig] re: PyGeo Message-ID: <000b01c06fa4$5364ab80$89e06dd1@oemcomputer> Dethe, Thanks for the interest. PyGeo is a basic dynamic spacial (3d) geometry app. One defines geometric relationships by Python script and then can manipulate the resulting construction interactively, observing the change on the construction as a whole from a change in position of some point defining the construction. The rendering is all with PyOpenGL, the matrix math with Numeric, the rest just Python. I did do a Java3d vecmath clone "wrapper" around Numeric (in Python) to allow one to access Numeric using method calls more standard to a 3d graphics matrix library. Performance, on complex constructions, sucks. Whether that's my coding (my Numeric "wrapper" is suspect from a performance point of view), Tkinter, or whatever. But it is quite spunky on simpler constructions. And performance, for its purpose, (the codes the text), is mostly besides the point. Now with compiled PyOpenGL and Numeric again available I will put it up again where interested folks might take a look. I hate doing HTML - so I won't hold it up to do a "page". I'll simply put it up where it can be fetched. Tonight, tomorrow. I'll note it here with a cite when its available. ART From ajs@ix.netcom.com Wed Dec 27 01:38:57 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Tue, 26 Dec 2000 20:38:57 -0500 Subject: [Edu-sig] re: Seasons of Light Message-ID: <001301c06fa5$c8c64d60$89e06dd1@oemcomputer> >>It looks like Lightflow only works with 1.5.2, is that correct? Yes. It's an extension compiled against 1.5. I had to reinstall 1.5.2 to use it. My 2.0 and 1.5.2 installs on Windows2000 seem to be at peace with each other - so I'm at peace with having had to reinstall. Less at peace with having to undo my Python2.0 changes to PyGeo (import OpenGL as GL; self.array -= p1.array,etc) to see what I might be able to do with it and Lightflow. Assumedly a 2.0 compatible Lightflow will come along before long. From delza@alliances.org Wed Dec 27 16:14:41 2000 From: delza@alliances.org (Dethe Elza) Date: Wed, 27 Dec 2000 08:14:41 -0800 Subject: [Edu-sig] re: PyGeo References: <000b01c06fa4$5364ab80$89e06dd1@oemcomputer> Message-ID: <3A4A1571.21E4D2EB@alliances.org> Art, Thanks for your reply, I'm looking forward to seeing it. I've been talking with the VPython folks too--apparently it was originally a "pure" python (plus PyOpenGL, plus Numeric) implementation as well, but was too slow. Now it is a mass of C. I'm curious what in Python is making 3D work so slow even when using compiled libraries for what should (in my limited understanding) be the difficult and time-consuming parts. Are there things that should be added to Numeric &/or PyOpenGL which would make high-level tools like PyGeo and VPython doable in "pure" python on top of those libraries? Because I think 3D is very valuable as a teaching tool, whether you call it CPFE or PFI (Programming (for the) Fun (of) It), but unless the 3D can happen in Python (with decent performance) we lose the benefits of using Python as the teaching language (or at least some of the benefits). --Dethe ========================================================================== | Dethe Elza | delza@alliances.org | http://i.am/dethe | 604-207-4266 | ========================================================================== "Well I've wrestled with reality for thirty-five years now, doctor, and I'm happy to state I've finally won out over it." -- Elwood P. Dowd, Harvey From pdx4d@teleport.com Thu Dec 28 02:35:05 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Wed, 27 Dec 2000 18:35:05 -0800 Subject: [Edu-sig] Re: value of 3D, benefits of Python In-Reply-To: <3A4A1571.21E4D2EB@alliances.org> References: <000b01c06fa4$5364ab80$89e06dd1@oemcomputer> Message-ID: <3.0.3.32.20001227183505.0091e590@pop.teleport.com> >Because I think 3D is very valuable as a teaching tool, >whether you call it CPFE or PFI (Programming (for the) >Fun (of) It), but unless the 3D can happen in Python >(with decent performance) we lose the benefits of using >Python as the teaching language (or at least some of the >benefits). > >--Dethe Maybe some other term than '3D' would more precisely identify the functionality you seek. You seem to be talking about real time, interactive, videogame type experiences -- something consumer-level software/hardware has only gotten good at recently (since the good ol' days of Pong and pre-GUI OSes). When it comes to learning the nuts and bolts of 3D, it's important to distill generic concepts from the vast smorgasbord of implementations. And even at the generic level, you've got the math frameworks, such as xyz, homogenous coordinates, transformation matrics and quaternions, and then the more computer-oriented frameworks, such as viewing frustrum, clipping rectangles, textures, and the different APIs (e.g. OpenGL, DirectX, Java3D etc.). In my Python + Povray approach, it's mostly the math frameworks I'm trying to tune in at the conscious level -- mostly by implementing Vector as a Python class. Python is good for playing with Vectors because of the operator overloading feature: you can write __add__ and __mul__ methods and have these pertain to vectors, e.g. (a,b,c) + (d,e,f) = (a+d,b+e,c+f). Or: >>> from coords import Vector >>> a = Vector((1,2,3)) >>> b = Vector((4,5,6)) >>> a+b Vector (5.0, 7.0, 9.0) When you want to rotate a vector around an axis, that's a method too: >>> a = Vector((1,0,0)) # pointing along x-axis >>> a.roty(180) # rotate 180 deg around y-axis Vector (-1.0, 0.0, 0.0) So the point of "pure Python" in my own curriculum writing is to help reinforce vector concepts -- what we normally teach under the heading of "linear algebra"; the roty method is where the rotation matrix lives and needs to _not_ be buried in some library (in this instance, given the goals for the lesson plan). Comprehension, not speed, is what's critical. Yet I'd call all of this '3D' certainly.[1] Pedagogy, not system performance, is what's behind this strategy. Like, even Povray by itself will scale and rotate an object, once you've defined it and named it. So if I'd just wanted to show an icosahedron, and then another one rotated 30 degrees with respect to the first, there's really no reason I'd have to use Python matrices to do that -- just name the first icosa 'MyIcosa' and tell Povray to rotate it and draw it again -- one line in the .pov script. But I don't do that, because that would hide precisely the implementation details I'm trying to bring to the foreground and "render" (make explicit) in Python. So the decision to bring a rotation matrix into "pure Python" wasn't at all for speed reasons (in my case) -- unless we're talking about "vs pencil and paper". In that limited sense, of the tedium out of manual calcs, I _do_ think automating with a computer language, even while learning it on paper, _is_ partly about getting some decent performance gains, so that applying a rotation to each of 12 vertices does _not_ take a half hour, but under a second. _That_ kind of speed (over pencil and paper manipulation) is what opens up interesting applications, such as rendering rotated polyhedra. A lot of these manipulations just seem "too expensive" if done over and over by hand -- whereas computers let us do them "in bulk" or "in volume" i.e. very _cheaply_.[2] Whereas I think Python is a fine little language (like APL in some ways, my first love, but without the funny squiggles), and a good first one, plus may be used in synergy with the various frameworks to elucidate their innards (the tack I took vis-a-vis the Blowfish crypto algorithm -- you'd really want to do that in faster code, or even in hardware, if speed were the core concern), I don't think we should feed the fantasy that "I can get by with Python for everything I'd ever want to do with computers." It's not the "be all end all language" -- no language is. In my paradigm, there's no such thing as "the" computer language, and anyone with pretensions to being a CS type should know at least 3 rather well (preferably from different families, e.g. a LISPish one should be part of the mix). Python defines a namespace in which to come up for air, get some overview, have your mind suffused with the necessary abstractions, but then where you go from here is very domain- dependent. If you're a budding videogame programmer, you're likely going to move off towards C/C++ and/or assembler and/or other packages and skills. No problem. We're not trying to set up a perimeter to hem students in, making their knowledge strictly coincident with that of any given Python user's. We're trying to open doors, many of which are exits from Python (many drift in and out). Kirby Notes: [1] actually, in my own case, '4D' would be another way of describing '3D', because I've tracked Bucky Fuller into the remote reaches of his off-beat synergetics vocabulary. He didn't "believe" in dimensionality as normally foisted upon us in this culture (in school rooms, one room or otherwise), didn't think "height, width and breadth" are really conceptual primitives, rather that "volume" comes as a package deal, indivisible. Given the tetrahedron is the "room with the fewest walls" (the most primitive container), he was inclined to call volume '4D', thinking of the tetrahedron's 4 vertices or 4 faces (as you prefer). But this is very esoteric -- no one talks this way except Fuller Schoolers. On the other hand, such thinking did inspire David Chako and others to elaborate a 4D coordinate system that uses 4-tuples instead of xyz 3-tuples for points in space. And it doesn't require negative numbers be used for any point's address. I've built this 4-tuple vector into coords.py as a subclass of Vector (called Qvector) i.e. class Qvector(Vector): """Subclass of Vector that takes quadray coordinate args""" [2] Most high school level approaches to matrices that I've seen make do with the "simultaneous equations" problem, solved by reducing a matrix, and never get into rotation, scaling, translation, as applications of matrix algebra (except maybe briefly, and then usually only in a plane). This is probably because it's labor intensive, using paper and pencil, to apply the same rotation matrix to the 12 or so vertices of a polyhedron. Too much work. But that's precisely where computers come in, giving us the opportunity to do something fun and intellectually stimulating with this matrix concept. For related reading at my website, see: http://www.teleport.com/~pdx4d/cowenmemo.html (Cowen later responded and said he thought my ideas were on target and interesting). From ajs@ix.netcom.com Thu Dec 28 14:10:48 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Thu, 28 Dec 2000 09:10:48 -0500 Subject: [Edu-sig] PyGeo available Message-ID: <000601c070d7$fb62a740$c8e06dd1@oemcomputer> Group - PyGeo as is can be retrieved from: http://home.ix.netcom.com/~ajs/zipfiles/ Sample scripts included in the zip file. Also there is javageo - a web-enabled java version for anybody interested in taking a look. The announcement comes with my usual demand that all within earshot drop what they are doing, retrieve, explore for 1.75 hours and revert with laudatory comments in a timely manner. ART From fcy@acm.org Thu Dec 28 16:40:32 2000 From: fcy@acm.org (Fred Yankowski) Date: Thu, 28 Dec 2000 10:40:32 -0600 Subject: [Edu-sig] number-line graphics for teaching arithmetic Message-ID: <20001228104032.A15576@enteract.com> My 7-year-old son is learning arithmetic and I'd like him to be able to play with some kind of interactive number line program in order to learn some visualizations of arithmetic. I'm thinking that this group -- with its keen interest in Python and graphics -- might have some suggestions of how I could find/create such a program. Here are some scenarios of use: + Child types "8 + 5" into a text box (or describes that same calculation in some point&click interface). Program then displays a number line with a vector drawn from 0 to 8, labeled with the quantity "8", and another vector drawn from 8 to 13, labeled "5". + Child types "16 - 9". Program displays a vector from 0 to 16 and another vector of length 9 from 16 back to 7. + As above, but program also draws an additional vector to represent the sum of the original vectors. + Working from the graphic for "8 + 5", the child drags the right-most end of the "5" vector. The program interactively redraws the "5" vector, relabeling it to new lengths based on current pointer location. Only whole-number points on the number line can be selected. As you can see, this is quite trivial. The goal (at least at first) is not to teach programming, but rather to provide an interactive visualization of basic arithmetic. Even so, Python seems well-suited. So what graphic packages might work well with Python to allow me to do this? The ability to deploy the resulting application via a web page would be a big plus, but not essential. (Thinking about that last point, perhaps Flash might be the way to go in the long run.) -- Fred Yankowski fred@OntoSys.com tel: +1.630.879.1312 Principal Consultant www.OntoSys.com fax: +1.630.879.1370 OntoSys, Inc 38W242 Deerpath Rd, Batavia, IL 60510, USA From pdx4d@teleport.com Fri Dec 29 07:34:06 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 28 Dec 2000 23:34:06 -0800 Subject: [Edu-sig] number-line graphics for teaching arithmetic In-Reply-To: <20001228104032.A15576@enteract.com> Message-ID: <3.0.3.32.20001228233406.00a66100@pop.teleport.com> Hi Fred -- Your number line program sounds like fun -- especially for the person learning a programming language. For a 7 year old, it might be just as instructive to use felt pens or colored pencils though. As mentioned at my "Getting Inventive with Vectors" at http://www.inetarena.com/~pdx4d/numeracy1.html , I like to go for a more complete vector concept, and not make the number line too front and center initially. Space first, planes and lines second, is my approach (take freedoms away later, but start with what's most familiar and real i.e. volume). The way the curriculum is now, we associate numbers with lengths, and then take this away later, saying you need vectors to extend in space, whereas the real numbers only *scale* vectors (are not independently geometric). So to kids, it seems like real numbers start out acting like vectors, but then vectors come along and start doing the number line thing like they've already been doing -- but now using this new terminology. Confusing. Recapitulates the historical sequence (Euclid -> Grassmann) more than presents a coherent conceptual logic.[1] The idea of translating a pencil through space without rotation should be communicable to a 7 year old. If it slides around in space without change in orientation, that's what we call translation (I bet with whole body movements the idea of motion without rotation would get across -- e.g. have kids slide across the room without changing the direction they're facing). So you have a bunch of these pencils pointing in various directions (various lengths too, if you like), and you get to slide them anywhere so long as you don't change direction. Put them tip-to-tail and that's what we mean by "adding the pencils" (or call them arrows -- then it's just a short step to "vectors" -- as a key term). Here, a computer could be helpful, giving a graphical notion of different segments adding up tip-to-tail. It's hard to hold a lot of pencils in space. Pictures help. You could talk about a swimming sea turtle that swallowed a die (random chooser device). At each turn to play, it could pick any of the (6) plus/minus XYZ vectors and move in that direction, with each hop being a segment (a tail-to-tip interval corresponding to a pencil in the above discussion): >>> import turtles, povray, functions # Python 101 modules >>> myfile = povray.Povray("ocean.pov") # open a povray file >>> seaturt = turtles.Turtle(turtles.xyzrays(),myfile) # xyz freedoms >>> seaturt.randomwalk(10) # take 10 random hops >>> functions.xyzaxes(myfile,3) # add xyz axes to picture >>> myfile.close() # close file >>> myfile.render() # render (or do it manually) Result: http://www.inetarena.com/~pdx4d/ocn/graphics/ocean.gif (notice how the turtle back-tracks at one point). Because these kids start in space, they already know what a tetrahedron and an icosahedron are too, and so you can intelligibly have your turtle swim in one of the 4 directions defined by the tetrahedron's 4 vertices (or one of the icosahedron's 12). The turtles.py module already defines tetrays and icorays for this purpose. See "Random Walks in the Matrix": http://www.inetarena.com/~pdx4d/ocn/numeracy3.html Once a fully spatial sense is developed, THEN I'd reduce it to a single line on which you can only point left or right (or whatever we call the two directions (your left or my left?)). I do it this way because I think space/volume is actually more natural and easier to understand than these artificially constrained "number line" domains. At this number line level, with degrees of freedom highly (artificially) restricted, you could, if you wanted, do some simple programming. Maybe with slightly older kids. For example (the methods in action): >>> a = arrow(10) >>> b = arrow(-5) >>> c = arrow(8) >>> d = arrow(-3) >>> e = arrow(9) >>> aprinter([a,b,c,d,e]) 10 ----------> -5 <----- 8 --------> -3 <--- 9 ---------> Result 19 >>> aprinter([a,c,d,d]) 10 ----------> 8 --------> -3 <--- -3 <--- Result 12 ========================= Simple source code behind the above: def arrow(n): line='' if n<0: line = '<' line+=abs(n)*'-' if n>0: line += ">" line += '\n' return (n,line) def aprinter(arrows): sum = 0 for a in arrows: print "%#3i %s" % a sum += a[0] print "Result %#3i " % sum [1] http://www.maths.utas.edu.au/People/dfs/Papers/GrassmannLinAlgpaper/node1.html From fred@ontosys.com Fri Dec 29 16:29:44 2000 From: fred@ontosys.com (Fred Yankowski) Date: Fri, 29 Dec 2000 10:29:44 -0600 Subject: [Edu-sig] number-line graphics for teaching arithmetic In-Reply-To: <3.0.3.32.20001228233406.00a66100@pop.teleport.com>; from pdx4d@teleport.com on Thu, Dec 28, 2000 at 11:34:06PM -0800 References: <20001228104032.A15576@enteract.com> <3.0.3.32.20001228233406.00a66100@pop.teleport.com> Message-ID: <20001229102944.A81981@enteract.com> Kirby, Thank you for the reply. I've read through some of your "Numeracy" writings in the past and have run some of the Python/PovRay programs as well. I'll try running the examples you included in your note. On Thu, Dec 28, 2000 at 11:34:06PM -0800, Kirby Urner wrote: > Your number line program sounds like fun -- especially for > the person learning a programming language. For a 7 year > old, it might be just as instructive to use felt pens or > colored pencils though. My primary goal is to teach useful visual models for arithmetic. Doing some fun programming (myself and/or with my son) is a bonus, but secondary. > As mentioned at my "Getting Inventive with Vectors" at > http://www.inetarena.com/~pdx4d/numeracy1.html , ... I think that URL should be ... > I like to go for a more complete vector concept, and not make the > number line too front and center initially. Space first, planes and > lines second, is my approach (take freedoms away later, but start > with what's most familiar and real i.e. volume). That sounds cool, but I'm not convinced about how well it actually plays out. Worth a try though. > So to kids, it seems like real numbers start out acting like > vectors, but then vectors come along and start doing the > number line thing like they've already been doing -- but > now using this new terminology. Confusing. Recapitulates > the historical sequence (Euclid -> Grassmann) more than > presents a coherent conceptual logic.[1] I followed your references about Grassmann and I'm interested in learning more. Can you refer me to some good books on the subject? I took many Math classes in college (too many years ago) so I can handle an in-depth presentation. I've meant to learn differential geometry for many years, ever since picking up Wheeler's "Gravitation" book, but have never taken the time to do so. Maybe this study will edge me into it. While browsing in the bookstore I encountered a book called "Geometric Transformations" by Mortenson. Is that a good reference for this subject? -- Fred Yankowski fred@OntoSys.com tel: +1.630.879.1312 Principal Consultant www.OntoSys.com fax: +1.630.879.1370 OntoSys, Inc 38W242 Deerpath Rd, Batavia, IL 60510, USA From pdx4d@teleport.com Sun Dec 31 04:56:00 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Sat, 30 Dec 2000 20:56:00 -0800 Subject: [Edu-sig] number-line graphics for teaching arithmetic In-Reply-To: <20001229102944.A81981@enteract.com> References: <3.0.3.32.20001228233406.00a66100@pop.teleport.com> <20001228104032.A15576@enteract.com> <3.0.3.32.20001228233406.00a66100@pop.teleport.com> Message-ID: <3.0.3.32.20001230205600.007a2740@pop.teleport.com> >> As mentioned at my "Getting Inventive with Vectors" at >> http://www.inetarena.com/~pdx4d/numeracy1.html , > >... I think that URL should be > ... Thanks -- a mistake I make more often than I care to admit. >I followed your references about Grassmann and I'm interested in >learning more. Can you refer me to some good books on the subject? >I took many Math classes in college (too many years ago) so I can >handle an in-depth presentation. I've meant to learn differential >geometry for many years, ever since picking up Wheeler's "Gravitation" >book, but have never taken the time to do so. Maybe this study will >edge me into it. While browsing in the bookstore I encountered a book >called "Geometric Transformations" by Mortenson. Is that a good >reference for this subject? > I think the best reference, or a very good one, is Michael J. Crowe's 'A History of Vector Analysis: The Evolution of the Idea of a Vectorial System' (Dover, 1967, 1994). And because it's Dover, it's highly affordable (unlike Springer-Verlag stuff, which tends to be pricey). Kirby From pdx4d@teleport.com Sun Dec 31 18:10:48 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Sun, 31 Dec 2000 10:10:48 -0800 Subject: [Edu-sig] number-line graphics for teaching arithmetic In-Reply-To: <20001229102944.A81981@enteract.com> References: <3.0.3.32.20001228233406.00a66100@pop.teleport.com> <20001228104032.A15576@enteract.com> <3.0.3.32.20001228233406.00a66100@pop.teleport.com> Message-ID: <3.0.3.32.20001231101048.009bdd70@pop.teleport.com> >> I like to go for a more complete vector concept, and not make the >> number line too front and center initially. Space first, planes and >> lines second, is my approach (take freedoms away later, but start >> with what's most familiar and real i.e. volume). > >That sounds cool, but I'm not convinced about how well it actually >plays out. Worth a try though. > Just an addendum: vectors are like dashed lines on a map. Because of topography, the actual path goes up and down too. It's every day experience. If you think of little arrows showing your path from the kitchen to the bedroom, or from your house to the grocery store, then that's tip-to-tail vector addition. It's just a matter of adding those arrows to the picture (a thought experiment). Number line motion is more constrained, like a window in a frame -- opens or closes. So you could take a closed window (starting state) and to W+ W+ W+ W+, then W- W-. These are increments in the "more open" and "more closed" direction. I guess you could say my approach is to deliberately get away from the very abstract little pictures and go for real world situations when possible. Then back to the pictures (after a decent interval talking up the real world special cases -- not "word problems" necessarily, just analogous concepts). I tend to think of these demos as "Sesame Street shorts" -- like all those video clips about the letter A and number 9, except here about vectors, great circles, polyhedra, whatever. E.g. I imagine kid voice in chorus saying "Open" "Open", "Closed" and this window slides a bit each time. Then you do the same thing with some valve-looking thing (circular motion). To this end, I think the Flash format might be very useful, but haven't had time to master the relevant apps myself. I imagine a huge collection of "math clips" being archived to a DVD juke box (or single DVDs if the juke box is too expensive/fancy in a given context). The teacher can pull up these clips in a sort of "stream of consciousness" manner, i.e. because they're quite short (many under a minute), you keep the narrative threads going, plus the teacher is in control of sequencing (much of the time) -- not like traditional AV, where you devote pretty much the whole class, or half of it, to some documentary or other. Just sort of rambling here. Python is part of the mix in these idealized math classes. Again, it's often a matter of the teacher simply typing a few lines of code as she or he presents, as in: "Let's take prime numbers between 60,000 and 60,500..." >>> pri = filter(lambda x: x<=60500 and x>=60000,primes.get2nb(60700)) >>> pri [60013, 60017, 60029, 60037, 60041, 60077, 60083, 60089, 60091, 60101, 60103, 60107, 60127, 60133, 60139, 60149, 60161, 60167, 60169, 60209, 60217, 60223, 60251, 60257, 60259, 60271, 60289, 60293, 60317, 60331, 60337, 60343, 60353, 60373, 60383, 60397, 60413, 60427, 60443, 60449, 60457, 60493, 60497] "Now lets run a Fermat test on them, using 2 as a base..." >>> >>> map(primes.fermat,map(long,pri)) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] ... and so on. NOTE: in this case, running get2nb(60700) or so before class might have been a good idea, as it took a minute or so to generate 'em using trial-by-division. But they're cached, so the 2nd time, the the function returns quasi- instantaneously. Kirby