From siegel@eico.com Tue Apr 4 15:03:02 2000 From: siegel@eico.com (Arthur Siegel) Date: Tue, 4 Apr 2000 10:03:02 -0400 Subject: [Edu-sig] Beyond 3D In-Reply-To: <06053C71C50D1CF2852568A3006A989E.006A98C8852568A3@eico.com> Message-ID: There seems to be general agreement that the use of simple, dissectable 3D Python stuff could make an appropriate and potentially interesting and exciting context in which to introduce younger folk to programming. I and many others have espoused that basic position here, with disagreement (sometimes vehement) over only the details. There has been less discussion (there may have been some early on that I could have missed) about doing simple communications stuff. The circa 2000 equivalent of building your first radio by wrapping wire around a coil, etc, and hearing some faint music through an earphone - which I and probably others remember fondly (and which kids are still doing today). Pinging a remote url, and retrieving something etc. Sending and picking up E-Mail,etc I know as a young programmer (in a not so young body), getting access to this kind of thing can generate a lot of interest, immediate gratification and sense of being introduced to the mysteries behind the scenes. Beyond presenting the concept, I am totally unqualified to speak on it, as it is an area about which I know little to nothing. But does anybody have any ideas along these lines? ART From pdx4d@teleport.com Tue Apr 4 16:17:17 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Tue, 04 Apr 2000 08:17:17 -0700 Subject: [Edu-sig] Beyond 3D Message-ID: <3.0.3.32.20000404081717.0329c9c4@pop.teleport.com> > Beyond presenting the concept, I am totally unqualified to speak > on it, as it is an area about which I know little to nothing. > But does anybody have any ideas along these lines? > > ART I think it's a fine idea. Python 1.5.2 (#0, Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)] on win32 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> import socket >>> socket.gethostbyname_ex("microsoft.com") ('microsoft.com', [], ['207.46.130.149', '207.46.130.45', '207.46.131.137', '207.46.131.30', '207.46.130.14']) is an example of a first step. Kirby From pdx4d@teleport.com Tue Apr 4 17:16:30 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Tue, 04 Apr 2000 09:16:30 -0700 Subject: [Edu-sig] Update: Python & the "Math Wars" In-Reply-To: <3.0.3.32.20000404081717.0329c9c4@pop.teleport.com> Message-ID: <3.0.3.32.20000404091630.033662d0@pop.teleport.com> Howdy Pythoneers -- I quit this list a month ago, to the day, with the following sign-off: http://www.python.org/pipermail/edu-sig/2000-March/000271.html As per that note, I headed back to k12.ed.math and the AMTE listserv (AMTE = Association of Mathematics Teacher Educators) The AMTE list is highly polarized and polemical these days. That's because of the Math Wars that's going on, with California a principal battlefield. One teacher (in the reformist camp) was even planning a hunger strike! Basically it's a war between the traditionalists on the one hand (with Dr. Wayne Bishop the chief articulator on the AMTE list) versus the reformers on the other. You may recall that full page letter to Secretary of Education Riley in the Washington Post, signed by a lot of math profs, decrying the new "fuzzy math" which his Department, along with the NSF and NCTM, consider an advance over the traditional curriculum. Anyway, with all this going on, it's a bit hard to get a word in edgewise regarding computer languages in math ed -- not really on the agenda of either camp, from what I can ascertain. My position is either the reforms don't go far enough, or go too far down a dead end trail, and we should return to base camp (traditional), and innovate in a more promising direction (one that includes more computer language). Given the slowness of the upgrade cycle in math ed, owing to its being weighed down by mass publishing, which adds tremendous inertia to the equation, I've also advocated doing more to base math ed, including K-12, in cyberspace. We need to cut loose from these huge investments in text books, which don't do multimedia very well anyway. This doesn't mean we don't print hardcopy of anything, only that we collaborate/update/innovate much more quickly, in order to catch up with the real world -- the curriculum lags far behind these days, is in a time warp. You can sample some of the dialog at: http://mathforum.com/epigone/amte/zerdkhingdwer (that's just the tip of the iceberg, but hey, life is short). Of course my row would be easier to hoe if I were content to rest easy with de facto compartmentation: mathenmatics and computer science (CS) are down the hall from one another, with their own respective faculties, text books, ways of doing business. While I have nothing against CS at the high school level, I'm still of the mind that math educators need to integrate at least one computer language into their thinking, in order to revitalize their discipline and make it more accessible, relevant and appealing. Numeracy and computer literacy should be convergent goals in the early grades, when our concern is to not overspecialize. I'm with the reformers when they say "curriculum integration is the name of the game". Here's my recent post re my approach to comp.lang.python: ========================== From: Kirby Urner Newsgroups: comp.lang.python Subject: Learning in Stereo: Math + Python Date: Sun, 02 Apr 2000 11:10:44 -0700 Re: "Learning in Stereo" by K. Urner (April 2, 2000) VHLLs (very high level languages) are human-readable -- not just computer-readable. VHLL programs = notations suitable for expressing high precision ops -- such as we find in math books. Yes, of course, we still need to learn the time-honored symbols, like SIGMA (<- capital greek letter goes here), accepted internationally and accessible to all with the proper training (and the right typesetting equipment) But why not "hit two targets with one throw" and learn a VHLL in tandem? Everyone should know some computer language or other, n'est pas? By learning a VHLL in tandem with math, you'll be able to translate back and forth between math symbols and a computer language -- using each to interpret the other (call it "learning in stereo"). Enter Python, a VHLL eminently suitable to this task: >>> def sigma(n,func): sum = 0 for i in range(1,n+1): sum = sum + func(i) return sum >>> def f(x): return 1.0/(x*x) >>> def pi(n): return (6 * sigma(n,f))**0.5 >>> pi(100) 3.04936163598 >>> pi(10000) 3.14149716395 Yes, we're converging to PI ( = 3.14159...) albiet very slowly. In other words (in more conventional math notation): PI^2 ---- = 1 + 1/4 + 1/9 + 1/25 + 1/36 ... 6 = SIGMA [ 1/i^2] i = 1 i.e. PI = [ 6 * SIGMA [1/i^2] ]^(1/2) i = 1 At my Oregon Curriculum network website, you'll find a 4-part essay entitled 'Numeracy + Computer Literacy' series. This will give you a clear idea of my approach. See: http://www.inetarena.com/~pdx4d/ocn/cp4e.html Is this a new idea? Not really -- people have used BASIC for the same purpose. But Python has a more up to date design, is the "new BASIC" for people just starting out today. Your kids get to start with something better than you had as a kid. Of course what you learn from Python you can adapt to other languages, such as Java, C/C++ and Perl. In the mean time, why not teach and/or learn object oriented programming and spatial geometry at the same time? The math might come in handy as well. This what we're cooking up at the Oregon Curriculum network website. Come on by and give us a try! Kirby Curriculum writer From siegel@eico.com Tue Apr 4 17:52:37 2000 From: siegel@eico.com (Arthur Siegel) Date: Tue, 4 Apr 2000 12:52:37 -0400 Subject: [Edu-sig] Update: Python & the "Math Wars" Message-ID: Kirby - Welcome back - truly. Kirby writes - >Numeracy and computer literacy should be convergent goals in the early grades, >when our concern is to not overspecialize. I'm with the >reformers when they say "curriculum integration is the name >of the game". As usual (with our notable exceptions) I'm in fundamental agreement with you. I was in fact planning to post up here an excerpt from one of your posts to the Math-Ed list (linked from your site) where you press this point. My goal in doing so would not have been so much to make your specific point (which I happen to agree with), but to try to stimulate some discussion here about the context in the curriculum where learning programming fits. A math extension? (seems right to me) A science extension (Let's 'build radios', maybe). Standalone? I do believe this is a fundamental issue to address. ART From pdx4d@teleport.com Tue Apr 4 18:16:15 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Tue, 04 Apr 2000 10:16:15 -0700 Subject: [Edu-sig] Update: Python & the "Math Wars" In-Reply-To: Message-ID: <3.0.3.32.20000404101615.03386388@pop.teleport.com> At 12:52 PM 04/04/2000 -0400, Arthur Siegel wrote: >Kirby - > >Welcome back - truly. Thanks Art. I see several connected issues. First, what a lot of people say when I talk about my interest in getting more computer langauge phased into K-12 is: "my son/daughter is required to have a TI-xx (Texas Instruments calculator model xx) in order to take Math yy (e.g. Algebra II). That seems reasonable, as calculators are cheap these 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." Some possible answers: * 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 * use computers in school but don't assign homework that presumes access in the home * loan/rent computers through the schools, and recycle them as parts wear out -- could be an alternative next to subsidized purchase (schools support both options -- depends on the family which way to go) * 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 last option is being used in Oregon, I think with some success (I learned this at a luncheon with then Education Secretary in 1997, at the Math Summit at OSU, in the new CH2M Alumni Center).[1] 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. I think we need to address the reality here, given the trend towards computerized polling, banking, services of all kinds. The computer has become a 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. Kirby [1] http://www.teleport.com/~pdx4d/mathsummit.html From jmillr@umich.edu Tue Apr 4 18:45:07 2000 From: jmillr@umich.edu (John A. Miller) Date: Tue, 4 Apr 2000 13:45:07 -0400 (EDT) Subject: [Edu-sig] Beyond 3D In-Reply-To: <20000404160053.BA36D1CD6D@dinsdale.python.org> Message-ID: > From: "Arthur Siegel" > > There seems to be general agreement that the use of simple, dissectable 3D > Python stuff could make an appropriate and potentially interesting and > exciting > context in which to introduce younger folk to programming. I and many others > have espoused that basic position here, with disagreement (sometimes > vehement) over only > the details. > > There has been less discussion (there may have been some early on that I > could have missed) about > doing simple communications stuff. The circa 2000 equivalent of building > your first radio by wrapping > wire around a coil, etc, and hearing some faint music through an earphone - > which I and probably others > remember fondly (and which kids are still doing today). > > Pinging a remote url, and retrieving something etc. Sending and picking up > E-Mail,etc > > I know as a young programmer (in a not so young body), getting access to > this kind of thing can generate a lot > of interest, immediate gratification and sense of being introduced to the > mysteries behind the scenes. > > Beyond presenting the concept, I am totally unqualified to speak on it, as > it is an area about > which I know little to nothing. But does anybody have any ideas along these > lines? > Well, yes... I've been following this list with some interest since the beginning, and this is a useful growth point. I'd like to help identify more of these broad, general areas. So far we have: * 3D representations and visualizations (static and dynamic) * communications, in all its myriad computerized manifestations to which I'd like to add: * simulations by which I mean the gestalt implied by complex adaptive systems, agents, neural networks, genetic algorithms, cellular automata, and embodied by such diverse programs as StarLogo, Swarm, AgentSheets, and others. There are a number of elementary scenarios that could be used to introduce the concepts, such as Conway's Game of Life, Iterated Prisoner's Dilemma, Foxes and Hares, El Farol Bar Problem (and the related Minority Game), Sugarscape, and many others. These make for wonderful programming exercises, besides being fun to explore. One big question in my mind is how necessary it might be for specialized libraries for facilitating these explorations. In other words, Swarm, StarLogo and AgentSheets are especially adapted for creating these kinds of simulations, and remove much of the 'bookkeeping drudgery' involved with managing lists of agents and their interactions and their display and their behaviors and the world in which they exist and ... I don't know of any similar libraries for Python (but I haven't looked either :^) I guess 'reinventing the (simulation) wheels' makes good pedagogic sense if your primary aim is teaching programming, but using tried and true simulation libraries makes more sense if your primary aim is to teach simulation skills. Maybe we could have two groups of students with one group providing such simulation libraries, and another group using them? A fourth broad area might be defined as: * web-based database programming where students learn to store and retrieve information from mysql or gadfly (perhaps using zope) or maybe lore if we want to focus on oodbm systems. Finally, a fifth broad area might be: * games which probably incorporate skills from all or most of the areas above. These could be standalone or network based, (did someone mention an online version of Pokemon? I think that was the zope-edu list...) and perhaps could be educational in nature, but certainly any game would stretch students' programming skills, just as game design stretches their imagination. Anyway, I just wanted to add these broad topics to the mix. John Miller From pdx4d@teleport.com Tue Apr 4 21:06:26 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Tue, 04 Apr 2000 13:06:26 -0700 Subject: [Edu-sig] Beyond 3D In-Reply-To: References: <20000404160053.BA36D1CD6D@dinsdale.python.org> Message-ID: <3.0.3.32.20000404130626.00782f90@pop.teleport.com> >Anyway, I just wanted to add these broad topics to the mix. > >John Miller I think these are all good ideas, and if the Python libraries don't exist yet, they probably will, given the number of people gravitating to Python. From a pedagogical point of view, I like to take the "Python as working pseudocode" idea and just do sketchy stuff in code that gives the _idea_ of how simulations work (for example). Code up some objects and have them talk to each other, making them species plus environments with various parameters. Maybe subclass a few species (because they all eat, replicate, die), tie them together with a bunch of rules (Conway's Life give the idea as an abstraction -- cellular automata and all that). All this could be done rather simply and transparently -- not a lot of fancy graphics or time squandered on doing a cool GUI (which isn't to say cool GUIs are a waste, just that we're not assuming these students are trying to learn all these skills -- simulations are the topic here). Give students a sense of the territory. Then migrate to some more sophisticated simulation that's already been implemented (SimCity even -- lots of students will come in already having experience with that one). So for the thrill of using a simulation, they get a professional package done by career programmers -- lots of bells and whistles. But for insights into what makes simulations tick, they get simple Python "cave paintings" which impart core concepts in an accessible manner. Kirby From orla_redbird@crosswinds.net Tue Apr 4 23:46:38 2000 From: orla_redbird@crosswinds.net (Gordon Worley) Date: Tue, 4 Apr 2000 18:46:38 -0400 Subject: [Edu-sig] From Turing machines to programming languages Message-ID: This weekend I read Neal Stephenson's /The Diamond Age/ (a good book if one hasn't read it). In one chapter on pages 385 to 391 in my niffty Bantam paperback edition (sorry, chapters are unnumbered). In it, the story is detailed how Nell goes from learning to program simple Turning machines (described in an earlier chapter) to complex turing machines to using programming languages to control Turing machines. The point of describing this is to point out, what I believe to be, an excellent method of teaching programming. Obviously, the average person does not have the patience to learn how to program a Turing machine (especially since it will just return numbers), but the method of teaching is sound. Rather than teaching Python outright, why not start by using a game like system where beginning programmers learn how by changing the flow of events with commands can affect desired results. For example, a puzzle game where a pipeworks is broken and must be fixed could begin the process of learning how to find bugs and fix them. With some time, the programmers will learn the games system and be ready for something more complex. The next step would be to create a game involving more math and more abstract, distant controlling of events. I'll leave the number of steps and their implimentation as an exercise for the reader. :-) Anyway, eventually the programmers will be controling events in systems remotely enough that they will already understand the concepts necessary in learning to program, so all that will be left is to teach them Python. A rather grand scheme, I admit, but I think it is doable. Also, in the book Nell's only resources are sample code she looks at and huge manuals. While most learners don't have the level of commitment to learn to program by such a method, anyone who has learned by it can atest to the fact that it produces quite good programmers. Well, I guess that's it for now. I've unleashed these ideas, so let's see what is done with them (hopefully something good). -- - Gordon Worley http://www.rbisland.cx/ mailto:redbird@rbisland.cx From pdx4d@teleport.com Wed Apr 5 00:58:42 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Tue, 04 Apr 2000 16:58:42 -0700 Subject: [Edu-sig] A simple simulation In-Reply-To: Message-ID: <3.0.3.32.20000404165842.038e3490@pop.teleport.com> Greetings Python fans -- Took me a an hour or more to throw this together: a simple simulation. Ducks, Wolves and Bugs are all subclasses of creature with a favorite food (Wolves eat Ducks eat Bugs eat each other). Every clock cycle triggers a random happening in the life of each creature. It either: gives birth, hunts (finds favorite food or goes hungry), or dies. Pretty simple. Too simple of course. For one thing, solo creatures of these types can't auto-reproduce (well, maybe some bugs...). I should add a "find mate" algorithm similar to the "hunt" one (only randomly successful). If we're down to only one of a kind, no more offspring. Assigning the attribute male/female at random and only letting opposites mate would require yet more lines of code (but not many). Then there's age to think about. So many ways to make this more "realistic". And what about the environment, what about pollution and global warming? Some bugs might _like_ global warming. But still, as a "cave painting", we're already well on the way to sketching what simulations are about. Re "cave paintings" see: http://www.python.org/pipermail/edu-sig/2000-February/000154.html Here's what it looks like when running: >>> import simula >>> simula.run(4) >>> --- Initialize ------- Duck1 is born Duck2 is born Bug1 is born Bug2 is born Wolf1 is born --- Tick 0 ------- Bug1 gives birth Bug3 is born Duck2 gives birth Duck3 is born Bug1 gets eaten by Duck1 Bug1 dies Bug2 dies Wolf1 gives birth Wolf2 is born --- Tick 1 ------- Duck2 dies Duck1 goes hungry Duck1 gets eaten by Wolf2 Duck1 dies Duck3 goes hungry Wolf1 gives birth Wolf3 is born Bug3 dies --- Tick 2 ------- Wolf2 gives birth Wolf4 is born Wolf3 dies Duck3 goes hungry Duck3 gets eaten by Wolf1 Duck3 dies --- Tick 3 ------- Wolf2 dies Wolf1 dies Wolf4 gives birth Wolf5 is born Here's the source code (simula.py module): # primitive simulation # by kirby urner # oregon curriculum network # april 4, 2000 import copy, random creatures = {} counter = {} def run(n): setstage() for j in range(n): # time spans print "--- Tick %s -------" % j for i in creatures.values(): i.randevent() def setstage(): print "--- Initialize -------" Duck() Duck() Bug() Bug() Wolf() class Creature: def __init__(self): self.isborn() def isborn(self): species = self.__class__.__name__ if not counter.has_key(species): counter[species]=0 counter[species] = counter[species] + 1 self.name = species + str(counter[species]) creatures[self.name] = self print self.name + " is born" self.stomach = 3 # gets an initial boost (thanks mom!) def reproduces(self): print self.name + " gives birth" species = self.__class__.__name__ newobj = copy.copy(self) # conceived newobj.isborn() # Hello World! def dies(self): print self.name + " dies" del creatures[self.name] # Goodbye World! self = None def hunts(self): mealfound = 0 for i in range(3): # three chances to find favorite food gotcha = random.choice(creatures.values()) if (gotcha.__class__.__name__ == self.favoritefood and not (gotcha.name == self.name)): # can't eat self mealfound = 1 self.stomach = self.stomach + 1 print gotcha.name + " gets eaten by " + self.name gotcha.dies() break if not mealfound: # didn't find food this time self.stomach = self.stomach - 1 print self.name + " goes hungry" if self.stomach == 0: # 3 strikes and you're out print self.name + " starves" self.die() def randevent(self): event = random.choice(range(3)) # reproduce, hunt if event == 0: self.reproduces() elif event == 1: self.hunts() else: self.dies() # ... or die class Duck(Creature): favoritefood = 'Bug' class Wolf(Creature): favoritefood = 'Duck' class Bug(Creature): favoritefood = 'Bug' From siegel@eico.com Wed Apr 5 14:48:55 2000 From: siegel@eico.com (Arthur Siegel) Date: Wed, 5 Apr 2000 09:48:55 -0400 Subject: [Edu-sig] Walky-talky help In-Reply-To: <06053C71C50D1CF2852568A3006A989E.006A98C8852568A3@eico.com> Message-ID: My idea for 'building a radio' has evolved into one for doing a walky-talky - the simplest possible skeleton of a chat function implemented in Python. I do not see this as an alternative to some of the other good ideas put forth - games, simulations, etc. , but as a step toward playing with a possible implementation of these kinds of ideas - just adding a multi-user dimension. My problems are: I have more projects started than I can finish. I don't know whether this is a little thing or a big thing I don't know where to start. The good part: I'll learn some fundamentals by giving it a shot. Any clues to get me started are appreciated. ART From fig@oreilly.com Wed Apr 5 17:50:25 2000 From: fig@oreilly.com (Stephen R. Figgins) Date: Wed, 05 Apr 2000 09:50:25 -0700 Subject: [Edu-sig] Kids and Computers Message-ID: <200004051650.JAA14806@rock.west.ora.com> http://www.newsweek.com/nw-srv/printed/special/score/score2200-2000mar30.htm This is a quick little article on how computer savvy kids in the valley are becoming. Looks like getting computers early is helpful as are involved and savvy parents. Stephen R. Figgins fig@oreilly.com From siegel@eico.com Wed Apr 5 23:49:50 2000 From: siegel@eico.com (Arthur Siegel) Date: Wed, 5 Apr 2000 18:49:50 -0400 Subject: [Edu-sig] RE : walky-talky Message-ID: David Scherer got the walky-talky done in 30 lines of code. I ran two localhost sessions and had my DOS prompt talking to my DOS prompt. Putting aside the technical stuff related to the socket module, the thirty lines cover an awful lot of Python syntax. I think a lot of students would be all ears in getting a handle on this kind of magic. Below is David's e-mail: -----Original Message----- From: David Scherer [mailto:dscherer@cmu.edu] Sent: Wednesday, April 05, 2000 11:09 AM To: asiegel Subject: RE: [Edu-sig] Walky-talky help Arthur, A good place to start is the Python library reference for the socket module, which has some example code. Starting there, I was able to whip up the following in just a few minutes. It's not going to replace IRC or AIM any time soon, but I assume that's not what you were looking for. Dave # Primitive Walky-talky (sp?) # Based on the example code for 'socket' in the Python # library reference from socket import * HOST = 'localhost' # Computer to connect to LOCAL = '' # Symbolic name for localhost PORT = 50007 # Arbitrary non-privileged server try: # try to be the client print 'Trying to connect.' s = socket(AF_INET, SOCK_STREAM) s.connect((HOST,PORT)) print 'Walky-talky connected to', HOST except error: # Didn't work, try to be the server print 'Waiting for a connection.' s = socket(AF_INET, SOCK_STREAM) s.bind((HOST, PORT)) s.listen(1) s, addr = s.accept() print 'Walky-talky connected to', addr[0] s.send('Hello!\n') # someone needs to send first print 'You must take turns speaking.' print 'You will see a > when it is your turn to speak.' try: while 1: data = s.recv(1024) if not data: break print data, data = raw_input("> ") s.send(data+'\n') s.close() except error: pass print 'Connection terminated.' From pdx4d@teleport.com Fri Apr 7 00:05:47 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 06 Apr 2000 16:05:47 -0700 Subject: [Edu-sig] CP4E: an update from the OCN In-Reply-To: <200004051650.JAA14806@rock.west.ora.com> Message-ID: <3.0.3.32.20000406160547.03309708@pop.teleport.com> Some of the key players introduced in my Python-based=20 'Numeracy + Computer Literacy' series, a 4-part essay (roughly in order of appearance): Johann Carl Friedrich Gauss (1777-1855)=20 R. Buckminster Fuller (1895-1983)=20 Alexander Graham Bell (1847-1922) Johannes Kepler (1571-1630)=20 Blaise Pascal (1623-1662) Isaac Newton (1642-1727)=20 Leonardo Fibonacci (1170-1250)=20 J. P. M. Binet (1786-1856)=20 A de Moivre (1667-1754)=20 Ren=E9 Descartes (1596-1650) William Kingdon Clifford (1845-1879) Sir William Rowan Hamilton (1805-1869) Josiah Willard Gibbs (1839-1903) Hermann G=FCnter Grassmann (1809-1877) Waclaw Sierpinski (1882-1969) Erastosthenes (276 BC-194 BC) Leonhard Euler (1707-1783)=20 Pierre de Fermat (1601-1655)=20 Robert Daniel Carmichael (1879-?)=20 Carl Gustav Jacob Jacobi (1804-1851) Christian Goldbach (1690-1764)=20 William Barlow (1845-1934)=20 Eponymous objects/concepts (i.e. named for these people),=20 either in this essay or mentioned elsewhere at my website(s): Gaussian distribution, buckyballs, Kepler's Conjecture, Pascal's=20 Triangle/Tetrahedron, Fibonacci series, Binet formula, Cartesian=20 coordinates, Clifford algebra, Grassmann algebra, Sierpinski's=20 triangle, sieve of Erastosthenes, Euler's theorem, Euler's Law, Fermat's little and last theorems, Carmichael numbers, Jacobi=20 symbol, Goldbach's conjecture, Barlow packing... Of course once you start following the links from the above, to related people and concepts, you quickly pull in a huge additional number of math-science-engineering topics and key=20 players (both living and dead). I realize the above is top-heavy with guys, most of them=20 Europeans. But with 'Computer Programming for Everybody'=20 and related 21st Century initiatives (e.g. Unicode), I=20 expect more balanced and well-rounded development in future. See: http://www.inetarena.com/~pdx4d/ocn/cp4e.html Related links re 21st Century Math Education: =20 Doing Shapes in Montesorri http://www.egroups.com/message/synergeo/236 What if... http://www.egroups.com/message/synergeo/322 Kirby Urner Curriculum writer Oregon Curriculum Network http://www.inetarena.com/~pdx4d/ocn/ From dheise@debitel.net Thu Apr 6 22:39:58 2000 From: dheise@debitel.net (Dirk Heise) Date: Thu, 6 Apr 2000 23:39:58 +0200 Subject: [Edu-sig] Beyond 3D Message-ID: <20000407203624.3976.qmail@psmtp2.dnsg.net> > Von: John A. Miller > An: edu-sig@python.org > Betreff: Re: [Edu-sig] Beyond 3D > Datum: Dienstag, 4. April 2000 19:45 ... > * simulations > > by which I mean the gestalt implied by complex adaptive systems, agents, > neural networks, genetic algorithms, cellular automata, and embodied by > such diverse programs as StarLogo, Swarm, AgentSheets, and others. There > are a number of elementary scenarios that could be used to introduce the > concepts, such as Conway's Game of Life, Iterated Prisoner's Dilemma, > Foxes and Hares, El Farol Bar Problem (and the related Minority Game), > Sugarscape, and many others. These make for wonderful programming > exercises, besides being fun to explore. > > One big question in my mind is how necessary it might be for specialized > libraries for facilitating these explorations. In other words, Swarm, > StarLogo and AgentSheets are especially adapted for creating these kinds > of simulations, and remove much of the 'bookkeeping drudgery' involved > with managing lists of agents and their interactions and their display and > their behaviors and the world in which they exist and ... I don't know of > any similar libraries for Python (but I haven't looked either :^) I guess > 'reinventing the (simulation) wheels' makes good pedagogic sense if your > primary aim is teaching programming, but using tried and true simulation > libraries makes more sense if your primary aim is to teach simulation > skills. Maybe we could have two groups of students with one group > providing such simulation libraries, and another group using them? Programming something like a cellular automaton is real fun. Learning to use a specialized library for the problems you mention is an absolute turn-off. (Steep learning curve, and you're learning a much too specialized thing. You can't even reuse it for a job (Ok, not much of a surprise for students)! When you program a thing like that yourself, you're the creator; when you learn how to push the controls of a specialized lib, you're feeling much more like a (Loo)user. That's okay for an expert, he has the experience and attitude to go through that, but i think it's demotivating for a beginner. Re-inventing wheels is not a bad thing in education, i think, and when the new wheel has less vertices than the old one, it's even a good thing in real life.) When we're talking about kids here, i can tell you what will happen: - They'll crank out their cellular automaton in Python - They'll see that it's too slow. - They'll extend their Python interpreter with a C module to do the things that need speed. - Eventually they'll quit Python and only use C++. I think before they drop into step 4, somebody should tell them that it's a fine thing to have the speedy things in C or C++ and keep the control logic in Python. (But one could also argue: when they leave Python to pick up a nifty C++ compiler & IDE, like the Borland Builder, CP4E has reached it's goal anyway.) Same thing happened before, somewhere around '82, when we got some CBM 4040s in school, learning BASIC, and quickly optimized our games using pieces of machine code. It was great fun, BTW. And the delegation of tasks between the two languages was absolutely the same like between C and Python, we're just 2 paradigms ahead. (Ok, 20 years makes two paradigms. One decade, one paradigm.) (We're re-inventing a wheel, it seems - though, in 1982, it wasn't really invented, it just happened) Dirk From bryan.hann@pobox.com Sat Apr 8 07:14:54 2000 From: bryan.hann@pobox.com (Bryan Hann) Date: Sat, 08 Apr 2000 14:14:54 +0800 Subject: [Edu-sig] RE : walky-talky References: Message-ID: <38EECE5E.BEBE749@pobox.com> Arthur Siegel wrote: > > David Scherer got the walky-talky done in 30 lines of code. > > I ran two localhost sessions and had my DOS prompt talking to > my DOS prompt. > > Putting aside the technical stuff related to the socket module, the > thirty lines cover an awful lot of Python syntax. > > I think a lot of students would be all ears in getting a handle on this kind > of magic. [code snipped] [David Scherer's code snipped] [mailto:dscherer@cmu.edu] > I think so too. Cool. :) Would not the students find it a drag to have to key in an IP address? Sure they would. Would they be keen to seeing and extending a little name server? I think they would. Would they like to run the walky talkie from their homes and try chatting to their friends? I'm sure they would! But it is a drag to deal with dynamicaly allocated IP addresses. How about a long running process at school that would let you register your current IP address and availability? That sounds great! Guess what students? You've created a rudimentary ICQ. A few years ago someone did what we just did, but just a bit fancier. Guess what? He's a billionaire now. No kidding! This is the sort of thing I would *love* to do with a high school class. (In middle school I might prefer to help them build a computer from scratch! Well, a combinational circuit for starters. (Real hand-wired finite state machines next year, perhaps?) *g* > Below is David's e-mail: > > -----Original Message----- > From: David Scherer [mailto:dscherer@cmu.edu] > Sent: Wednesday, April 05, 2000 11:09 AM > To: asiegel > Subject: RE: [Edu-sig] Walky-talky help > > Arthur, From iekentsin@infoez.com.mo Fri Apr 7 13:05:31 2000 From: iekentsin@infoez.com.mo (Sin Hang Kin) Date: Fri, 7 Apr 2000 20:05:31 +0800 Subject: [Edu-sig] CP4E : some fragment of thoughts Message-ID: <001b01bfa089$95d214c0$770da8c0@bbs> This is a multi-part message in MIME format. ------=_NextPart_000_0018_01BFA0CC.A041C2A0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To Guido and all: The reading of the "Computer Programminf for Everybody" is a exciting = experience.=20 During the process, I have the following fragments of thoughts :=20 Education: 1. CP4E will benefit more than programming skills : Like arithmetics, = (OO) programming will give the brain the training for think and thought. = The student will be exposed to problem (understanding, description, = representation, analysis, solving, evaluation and validation).=20 2. Paradigm is (important | danger). This will create mind setting of = student. (improve | limit) their problem solving ability.=20 3. Cultural independancy should be respected. The promotion of a good = education would always bordand the gap between the wealth and the poor. = When python is bound to a english like syntax, it will enlarge the gap. = It would benefit if different language versions of python can be = developed to allow localized wording in teaching. Computing: 4. Python can be benefit from acquisition (Zope like oo storage) and = visualize presentation (WEB? 3D?), by which visualize benefit the understanding / improving thinking Central / emit (the brain ; tree) like (non-linear) organization of = code Aspect oriented programming can be archived through acquisition Index / xref of code help reading understanding compile upon input versioning upon input help trace the through which can benefit the = research and teaching Turning the buttom - top programming reading into leaf / root = reading =20 I may need to explain no. 4 more in details. It just a feeling now that = organizing the code in a zope like structure with acquisition. The = interface would compile the code on the fly, create variables and assign = the initial values. Versioning can benefit the teacher and student to = review the process instead of just read the resulting code. A greate project, I especially like the 3D environment. However, in = education cognitive is more important than computing. Rgs, Kent Sin ------=_NextPart_000_0018_01BFA0CC.A041C2A0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
To Guido and all:
 
The reading of the "Computer = Programminf for=20 Everybody" is a exciting experience.
 
During the process, I have the = following fragments=20 of thoughts :
 
Education:
 
1. CP4E will benefit more than = programming skills :=20 Like arithmetics, (OO) programming will give the brain the training for = think=20 and thought. The student will be exposed to problem (understanding,=20 description, representation, analysis, solving, evaluation and = validation).=20
 
2. Paradigm is (important | danger). = This will=20 create mind setting of student. (improve | limit) their problem solving = ability.=20
 
3. Cultural independancy should be = respected. The=20 promotion of a good education would always bordand the gap between the = wealth=20 and the poor. When python is bound to a english like syntax, it will = enlarge the=20 gap. It would benefit if different language versions of python can be = developed=20 to allow localized wording in teaching.
 
Computing:
 
4. Python can be benefit from = acquisition (Zope=20 like oo storage) and visualize presentation (WEB? 3D?), by = which
 
    visualize benefit = the=20 understanding / improving thinking
    Central / emit (the = brain ;=20 tree) like (non-linear) organization of code
    Aspect oriented = programming can=20 be archived through acquisition
    Index /  xref = of code help=20 reading understanding
    compile upon = input
    versioning upon = input help trace=20 the through which can benefit the research and teaching
    Turning the buttom - = top=20 programming reading into leaf / root reading
   
I may need to explain no. 4 more in = details. It=20 just a feeling now that organizing the code in a zope like structure = with=20 acquisition. The interface would compile the code on the fly, create = variables=20 and assign the initial values. Versioning can benefit the teacher and = student to=20 review the process instead of just read the resulting code.
 
A greate project, I especially like the = 3D=20 environment. However, in education cognitive is more important than=20 computing.
 
Rgs,
 
Kent Sin
------=_NextPart_000_0018_01BFA0CC.A041C2A0-- From siegel@eico.com Sat Apr 8 18:32:50 2000 From: siegel@eico.com (Arthur Siegel) Date: Sat, 8 Apr 2000 13:32:50 -0400 Subject: [Edu-sig] RE : walky-talky In-Reply-To: <4491C7789374D076852568BB00214550.00214592852568BB@eico.com> Message-ID: > >I think so too. Cool. :) >This is the sort of thing I would *love* to do with a high >school class. I'm glad. Though a big 3D fan, I'm also excited about this product line. While not a teacher, I do have the advantage of having a real live 16 year old at home. When we're speaking - not now as it happens (we fell out this morning when I took him out for a driving lesson) - I get a pretty good view of the world through his eyes. Some of my input here is really him talking through me. I'm making an effort to annotate David's walky-talky code for my son. He's a savvy Internet user, learned a little HTML at school, played with VB for a few days. Otherwise he's starting from groung zero as a programmer. I'll probably post it up once it's in some shape. ART From siegel@eico.com Sat Apr 8 18:57:56 2000 From: siegel@eico.com (Arthur Siegel) Date: Sat, 8 Apr 2000 13:57:56 -0400 Subject: [Edu-sig] CP4E: an update from the OCN Message-ID: Kirby writes - >I realize the above is top-heavy with guys, most of them >Europeans. But with 'Computer Programming for Everybody' >and related 21st Century initiatives (e.g. Unicode), I >expect more balanced and well-rounded development in future. As it happens, my wife recently asked me (it might have sounded more like an interrogation to someone else, but we've worked that one out) about the degree to which women are participating in the Python community. I only have names to go by, but my impression is very little. Especially on this list, one might expect otherwise. It happens that the only person I know who actually makes a living teaching programming (C++ at a college level) is a woman. Is the participation more diverse than I realize? If not, any theories? Is this an appropriate topic for discussion here? ART From siegel@eico.com Sun Apr 9 00:01:44 2000 From: siegel@eico.com (Arthur Siegel) Date: Sat, 8 Apr 2000 19:01:44 -0400 Subject: [Edu-sig] The annotated walky-talky In-Reply-To: <4491C7789374D076852568BB00214550.00214592852568BB@eico.com> Message-ID: Sorry for the successive posts. But I'm a little pumped about an effort at a very annotated (but executable) version of David Sherer's walky-talky. Again, I'm doing it with my son in mind. Thought I'd put it up in progress, and hope for some feedback. Can't go further anyway until I understand the socket stuff better myself: # Primitive Walky-talky (sp?) # Based on the example code for 'socket' in the Python # library reference. code by David Sherer. # We are creating a script to be read by the Python interpreter. # We need only know how to talk to Python. Python inteprets to the # machine. My own understanding of how is sketchy at best. But it's all # in layers. Python itself relies on another layer below it (the # C programming language) to interpret for it. We can get a lot done as # a programmer without having to understand everything happening all the way # down the pipe. # Python knows that anything written on a line after a '#' is just talk, # and will ignore it - which is why I can tell you about # the program in the program itself. Most programming languages provide for # some mechanism like this, so that a programmer can leave notes explaining # what they are doing. Everything below not proceded by a '#' is actually # programming code. # The first thing we are doing is making some additional intelligence # available to our program script - specifically some intelligence about the # communications protocol known as sockets, a technology underlying # the entire Internet. from socket import * # makes all classes of the socket module available to # this script. '*' is a symbol which by convention tends # to mean 'all'. Python follows that convention. # The sockets module is itself a Python program script, much like our own, located somewhere # on our hard drive in a place that the Python interpreter knows to search. It knows # because one way or other its been told - but let's leave how aside. Just know its easy. # And if the script can't be found we will get an error message telling us so when we try to run # the program. # The sockets script takes on the hardest part of using sockets - and leaves us hooks # in to its logic for accessing internet communication functions from Python. Those # hooks are the socket modules 'classes'. # The ability to use and build upon classes from outside sources # with great flexibility is one of the distinguishing characteristic of an # Object Oriented Programming language like Python. I couldn't write a sockets module # if my life depended on it, but with some effort I could learn to use someone else's # module - especially if they left me a decent trail about how to do so. # What I'm trying to get across probably isn't clear yet. Hopefully it will begin to get clearer as we go. # Took me a few paragraps to try to begin to explain it - three words and a symbol to # actually do it. Which is one of the things I like about programming. A little can do a lot. # The next three lines of code aren't even strictly necessary. # We are assigning nicknames to some information used later in the # program. We just use the nickname in the rest of the program. # Now, if we want to change the information, we change the meaning of the nickname # and that information changes everywhere the nickname is used. Convenient. HOST = 'localhost' # Computer to connect to LOCAL = '' # Symbolic name for localhost PORT = 50007 # Arbitrary non-privileged server # The nickname is to the left of the '=', the actual information that Python will see # when we use the nickname later in the script is to the right. The nicknames # would be called 'global variables' (though I wouldn't worry much about terminology - its called # something else in French, something else in Hebrew, etc - so to me what they happen to be called in # English is probably the least interesting thing about them. A triangle only has three sides if # you happen to be speaking English. Got that out of my system.) # By convention the globals are in all caps - just to make the code easier to follow # for others who know the convention. Python,though, won't complain if they're not all caps. # When using words or letters that we want to send down the pipe, they are usually entered # in quotes (single or double). If a word (on the right of the '=') is entered without quotes, Python assumes # it is a word it already knows about - either because the word is one built-in to the language or because # we had previously provided it with a meaning. If we take the quotes off 'localhost', the program will stop with an error # when it gets to it - saying it doesn't know anything about that word. It happens that the word 'localhost' # means something in particular to sockets, which is why its being used - but it means nothing in particular to # Python itself. We will just be using Python to mechanically pass it along 'as is' done the pipe to the socket. # HOST (to the left of '=') is not in quotes because we are in the process of giving # it a meaning. And, it is not in quotes when used later, because it now has a specific meaning to Python - # whatever we assigned it to mean. # Numbers which are to interpreted as numbers are entered without quotes. But you couldn't use a number # on the left hand side of '=', because Python won't let you change the meaning of a number. # LOCAL is defined as '', two single quotes with nothing in between - a way of saying 'nothing' or 'empty'. .... From matthias@rice.edu Sun Apr 9 17:27:16 2000 From: matthias@rice.edu (Matthias Felleisen) Date: Sun, 9 Apr 2000 11:27:16 -0500 (CDT) Subject: [Edu-sig] CP4E: an update from the OCN In-Reply-To: <20000409160033.5C8CA1CD7C@dinsdale.python.org> (edu-sig-request@python.org) References: <20000409160033.5C8CA1CD7C@dinsdale.python.org> Message-ID: <200004091627.LAA09935@africa.cs.rice.edu> Art writes: As it happens, my wife recently asked me (it might have sounded more like an interrogation to someone else, but we've worked that one out) about the degree to which women are participating in the Python community. I only have names to go by, but my impression is very little. Especially on this list, one might expect otherwise. It happens that the only person I know who actually makes a living teaching programming (C++ at a college level) is a woman. You will find many women teaching at the high school level. In general, though the "pipeline" shrinks rapidly in high school, droping from a 30 or 40% participation to around 13% in grad school (or less). If it's concern, I can dig out the exact studies. Is the participation more diverse than I realize? If not, any theories? Is this an appropriate topic for discussion here? ART An aside: some of our teachers encouraged us (TeachScheme!) to measure the effect of our curriculum on girls, because they believe it's highly encouraging. When we had the same teachers teach the same group of students last year, we did a qualitative survey. The results: * The students expressed a general preference for the TeachScheme! curriculum over the AP/C++ curriculum (66% in favor of TeachScheme!). * The more C++ they saw in class, the more they preferred TeachScheme!. * Girls preferred TeachScheme! over C++ at a ratio of 4 to 1. My conjecture is, and that has been confirmed informally, that C++ drives girls away in droves. NSF has created special workshops on retaining girls at that level. CMU teaches one of them. I don't know whether they have any success. -- Matthias Matthias Felleisen Professor of Computer Science Rice University For a new way to look at the world of high school computing, see http://www.cs.rice.edu/CS/PLT/Teaching/Workshops/ "Computer Science is no more about computers than astronomy is about telescopes." -- E. W. Dijsktra From arta@x-stream.nl Sun Apr 9 17:27:40 2000 From: arta@x-stream.nl (A[r]TA) Date: Sun, 9 Apr 2000 18:27:40 +0200 Subject: [Edu-sig] writing an chat-server Message-ID: <000901bfa240$a75d9d00$2cdd8bd4@vincent> I want to write a simple chat-server on my pc so my friends can login and chat. :) But I've some problems. 1) How do I get multiple connections? 2) How do I handle the multiple requests and sends of data? A complete solution isn't needed, but if someone could help me a bit, I would be glad. :) This is what I use: from socket import * HOST = '' PORT = 5007 s = socket(AF_INET, SOCK_STREAM) s.bind(HOST, PORT) s.listen(1) conn, addr = s.accept() data = conn.recv(1024) After that the server is sending some things to the client. But then I've got to get an loop with is going on en on till someone types a special comman and the server resets the connection. Thnx, A[r]TA -Sorry for my poor English! A real Flying Dutchman. :-) From orla_redbird@crosswinds.net Mon Apr 10 01:35:09 2000 From: orla_redbird@crosswinds.net (Gordon Worley) Date: Sun, 9 Apr 2000 20:35:09 -0400 Subject: [Edu-sig] The annotated walky-talky Message-ID: At Sat, 8 Apr 2000 19:01:44 -0400, Arthur Siegel wrote: >>> Sorry for the successive posts. But I'm a little pumped about an effort at a very annotated (but executable) version of David Sherer's walky-talky. Again, I'm doing it with my son in mind. Thought I'd put it up in progress, and hope for some feedback. Can't go further anyway until I understand the socket stuff better myself: <<< [code snip] I would suggest that, in the future, you use multiline comments rather than putting a # at the start of each comment line. This is not obvious, and I doubt that it is docuemnted anywhere other than actual code, but multiline comments can be accomplished like this: """ some multi line comment """ print "Code goes here" So, just use tripple quotes and all will be good. This makes it much easier to edit multiline comments and makes them more readable since the # isn't distracting attention at the start of each line. -- - Gordon Worley http://www.rbisland.cx/ mailto:redbird@rbisland.cx From ping@lfw.org Mon Apr 10 07:40:11 2000 From: ping@lfw.org (Ka-Ping Yee) Date: Sun, 9 Apr 2000 23:40:11 -0700 (PDT) Subject: [Edu-sig] writing an chat-server In-Reply-To: <000901bfa240$a75d9d00$2cdd8bd4@vincent> Message-ID: On Sun, 9 Apr 2000, A[r]TA wrote: > I want to write a simple chat-server on my pc so my friends can login and > chat. :) > But I've some problems. > 1) How do I get multiple connections? > 2) How do I handle the multiple requests and sends of data? > A complete solution isn't needed, but if someone could help me a bit, > I would be glad. :) This sounds like a fun little project, so i'm going to attempt it now, on the spot. I'm assuming you mean that you may have many people joining in on a single conversation. In this case, you can't simply decide whose turn it is to speak and "recv()" on only that one connection, since that will stop everything until that person says something. You have to watch all the connections at once, including the "listening socket" ('s' in your example) to see if someone new is joining in. The answer to both of your questions, roughly, is select(). The select() routine will watch a number of file handles all together, and let you know when any of them has incoming data. We begin as before: import socket, string, select HOST, PORT = '', 5007 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) s.listen(1) To keep the conversation sane, let's associate a name with each incoming connection. (This dictionary maps socket objects to names, so it will also conveniently keep track of currently active sockets in its keys.) socknames = {} A useful thing to be able to do is to copy a message to all participants but one, so let's take care of that in a function. def broadcast(message, sender): for sock in socknames.keys(): if sock is not sender: sock.send(message) Now, the main loop of the program will watch for new connections. The select() call accepts three lists of file *numbers* (not Python file objects, unfortunately; you have to call fileno() on a file object to get its number). The lists indicate which file handles you want to watch for readability, writability, and errors, respectively. All we care about is reading at the moment. The fourth argument to select() is a timeout, in seconds; since we have nothing else to do if no one has anything to say, we can use None, which means "wait forever until something happens". select() returns three lists, each a subset of the corresponding list passed in, indicating what files are readable, writable, or have errors, respectively. while 1: nums = [s.fileno()] for sock in socknames.keys(): nums.append(sock.fileno()) rd, wr, ex = select.select(nums, [], [], None) At this point, something has happened on one of our sockets, and 'rd' contains a list of the file numbers to check. Let's look through the list to see what we got. for n in rd: if n == s.fileno(): This means we have a new connection, so let's put it into our dictionary. The first thing we will do is ask the new participant to enter a name for themselves. The initial value in the dictionary will be 'None' until we get a name from them. sock, addr = s.accept() socknames[sock] = None sock.send("Hello! Please enter your name.\n") else: This means someone said something on an existing connection. First let's figure out which connection it was. In the loop below, we can be certain that 'n' must be the 'fileno()' of one of the sockets in our dictionary, so 'sock' will be bound to that socket when we break out of the loop. for sock in socknames.keys(): if sock.fileno() == n: break name = socknames[sock] Now let's read in what was said. For simplicity's sake, we're making the assumption here that everybody is entering text a line at a time, and that it is safe to expect a newline. (Handling character-at-a-time mode wouldn't be too hard -- we would just have to keep a little buffer associated with each connection.) We use the 'makefile()' method here, which makes a file-like object out of the socket, so that we can use the convenient 'readline()' method to take care of this for us. text = sock.makefile().readline() if not text: An empty string returned from 'readline()' means the connection has been closed. We should let everyone know, and then clean up. broadcast("%s has left.\n" % name, sock) sock.close() del socknames[sock] elif name is None: If something has been said but we haven't recorded a name yet, then this is a new participant's response to our initial request for a name. So let's record this, and bring them into the fold. name = string.strip(text) socknames[sock] = name sock.send("Thanks! Welcome to the conversation.\n") broadcast("%s has arrived.\n" % name, sock) else: The final case is that we already have a name, and something has been said -- this is just part of the conversation, and we should echo it to everyone else. broadcast("%s: %s" % (name, text), sock) And we're done. That's it! * * * Here is the assembled script. Give it a go: import socket, string, select HOST, PORT = '', 5007 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) s.listen(1) socknames = {} def broadcast(message, sender): for sock in socknames.keys(): if sock is not sender: sock.send(message) while 1: nums = [s.fileno()] for sock in socknames.keys(): nums.append(sock.fileno()) rd, wr, ex = select.select(nums, [], [], None) for n in rd: if n == s.fileno(): sock, addr = s.accept() socknames[sock] = None sock.send("Hello! Please enter your name.\n") else: for sock in socknames.keys(): if sock.fileno() == n: break name = socknames[sock] text = sock.makefile().readline() if not text: broadcast("%s has left.\n" % name, sock) sock.close() del socknames[sock] elif name is None: name = string.strip(text) socknames[sock] = name sock.send("Thanks! Welcome to the conversation.\n") broadcast("%s has arrived.\n" % name, sock) else: broadcast("%s: %s" % (name, text), sock) * * * Exercises for the reader: 1. Accept command-line arguments to set the HOST and PORT of the chat server. 2. It's kind of nice to know who's in the room when you enter. Have the chat server print a message to new participants when they join to inform them of who's already present. 3. Enable the participants to do other things besides just talking, by accepting simple commands. If all commands begin with '/', then commands can be distinguished from chatter just by looking at the first character. Some examples of useful commands, in order of increasing difficulty, might be: "/quit" - leave the room "/look" - tell me who's in the room "/name" - change my name "/emote" - show an action about me (for example, "/emote hops on one foot." would display "Ping hops on one foot." to all the others) 4. Turn the chat server into a full-fledged multi-user game. Get millions of people addicted. Sell advertising space, go public, and make a fortune. -- ?!ng "All models are wrong; some models are useful." -- George Box From arta@x-stream.nl Tue Apr 11 08:57:43 2000 From: arta@x-stream.nl (A[r]TA) Date: Tue, 11 Apr 2000 09:57:43 +0200 Subject: [Edu-sig] writing an chat-server References: Message-ID: <003101bfa38d$352e3480$5dde8bd4@vincent> With the chat-server... I don't get it to work. Because if a person (client) types his name and pushes enter the server goes down. I get the following message: Traceback (innermost last): File "", line 1, in ? File "C:\Program Files\Python\files\server.py", line 36, in ? text = sock.makefile().readline() File "C:\Program Files\Python\Lib\plat-win\socket.py", line 117, in readline new = self._sock.recv(self._rbufsize) error: (10054, 'winsock error') I don't get it.. ;( What to do? Anyone suggestions??? Or am I doing something wrong?? A[r]TA We shall not cease from exploration, and the end of all our exploring will be to arrive where we started and know the place for the first time. - T. S. Eliot From wesc@alpha.ece.ucsb.edu Tue Apr 11 22:28:54 2000 From: wesc@alpha.ece.ucsb.edu (Wesley J. Chun) Date: Tue, 11 Apr 2000 14:28:54 -0700 (PDT) Subject: [Edu-sig] today's focus - high school females and the AP exam Message-ID: <200004112128.OAA04611@alpha.ece.ucsb.edu> The main motivation of my post today is something I heard on the radio this morning regarding the lack of females in the computing industry. Specifically, the report cites that only 17% of high school students who take the Computer Science Advanced Placement exams in high school are females. Also, women earn only 28% of bacheor degrees in CS and make up only 20% of all IT professionals. The article is based on a recent report made by the American Associa- tion of University Women. In this report, those girls surveyed indi- cated they were not "anxious or phobic about technology. They are disinterested in the computer culture.... Girls are saying, 'We can do these things, but we don't want to.'" Apparently, girls were turned off by all the violent computer games and the male adolescent- dominated culture. Girls were found to use computers for specific tasks such as e-mail, "while boys have underdeveloped social skills." I don't know *where* they could've gotten *that* from!! :-) Anyway, I was fortunate to have found an online version for you here: http://www.mercurycenter.com/svtech/news/front/docs/girls041100.htm Also, I dug around some more and unearthed an outline of what the ACM believes as the model for computer science high school curriculum: http://www.acm.org/education/hscur/ I also found an older NSF article that contains other facts regarding high school females and the AP CS exam. Their figures are based on the College Board reports in 1996 which cite that females made up 20% of the 1st semester exam takers (the 'A' exam) and 12% of the full year exam (the 'AB' exam). here is the specific paragraph: Of the subjects offered for AP exams, 12 are science or mathematics subjects. Women constituted over half of the test takers in psychology and biology. These subjects were followed by calculus AB (47% female) and chemistry (42% female). The science subject in which women were least likely to take an AP exam was computer science, where women accounted for only 20% of the computer science A and 12% of the computer science AB test takers. (See appendix table 2-17.) The full article is here: http://www.nsf.gov/sbe/srs/nsf99338/access/c2/c2s4.htm If you are only interested in the "appendix table 2-17" containing the specific figures, here is the link to the Excel file: http://www.nsf.gov/sbe/srs/nsf99338/append/c2/at02-17.xls -wesley From ping@lfw.org Wed Apr 12 09:49:30 2000 From: ping@lfw.org (Ka-Ping Yee) Date: Wed, 12 Apr 2000 01:49:30 -0700 (PDT) Subject: [Edu-sig] writing an chat-server In-Reply-To: <003101bfa38d$352e3480$5dde8bd4@vincent> Message-ID: On Tue, 11 Apr 2000, A[r]TA wrote: > error: (10054, 'winsock error') > > I don't get it.. ;( > What to do? > Anyone suggestions??? Or am I doing something wrong?? This looks like a problem with Windows sockets. I know the program works perfectly on Unix -- i tested it. Does it work if you implement the readline() routine without makefile()? That is, add this: def readline(sock): line = "" while 1: ch = sock.recv(1) line = line + ch if ch == "\n" or not ch: return line and replace this: text = sock.makefile().readline() with this: text = readline(sock) -- ?!ng "Je n'aime pas les stupides garçons, même quand ils sont intelligents." -- Roople Unia From arta@x-stream.nl Fri Apr 14 11:51:54 2000 From: arta@x-stream.nl (A[r]TA) Date: Fri, 14 Apr 2000 12:51:54 +0200 Subject: [Edu-sig] writing an chat-server References: Message-ID: <000401bfa646$fac06ea0$4cde8bd4@vincent> > This looks like a problem with Windows sockets. I know > the program works perfectly on Unix -- i tested it. > > Does it work if you implement the readline() routine > without makefile()? That is, add this: > > def readline(sock): > line = "" > while 1: > ch = sock.recv(1) > line = line + ch > if ch == "\n" or not ch: return line > > and replace this: > > text = sock.makefile().readline() > > with this: > > text = readline(sock) That's fine. And now I've to got a clientprogram. I know it must be the same way as the server. A whole loop and stuff like that. But how do I get something like raw_input that doesn't desturb the loop and waits till the enterbutton is hit? A[r]TA We shall not cease from exploration, and the end of all our exploring will be to arrive where we started and know the place for the first time. - T. S. Eliot From infonuovo@email.com Mon Apr 17 18:09:30 2000 From: infonuovo@email.com (Dennis E. Hamilton) Date: Mon, 17 Apr 2000 10:09:30 -0700 Subject: [Edu-sig] Computer Science as a free post-baccalaureate education Message-ID: I just ran into this on slashdot. Notice of a 1-year intensive undergraduate computer-science-only curriculum to be launched in Cambridge, MA. Provisions for distance learning are going to be introduced over the next year. The course is designed for people who already have bachelor's degrees and want a solid undergraduate Computer Science education at the Stanford/MIT level! It is distinct from CP4E, yet it would be something if there were a path from mastery at the CP4E level to mastery at the CS level. Here's the link: http://arsdigita.org/university/ -- Dennis ------------------ Dennis E. Hamilton InfoNuovo mailto:infonuovo@email.com tel. +1-206-779-9430 (gsm) fax. +1-425-793-0283 http://www.infonuovo.com From siegel@eico.com Thu Apr 27 15:52:31 2000 From: siegel@eico.com (Arthur Siegel) Date: Thu, 27 Apr 2000 10:52:31 -0400 Subject: [Edu-sig] On the front page Message-ID: The front page article in todays New York Times on the controversy surrounded the nations math curriculum probably does not tell many of us anything which we don't much well know. Other than the fact - as Kirby has told us from the trenches - that the controversy is moving to center stage as a cultural and political issue. We should appreciate, I think, that these issues cannot be avoided, are in fact core to, what EDU-SIG discussion is necessarily about, if it going to have any real seriousness. If we feel it necessary to avoid controversy here, there is little that can be said. And little in fact is being said. I have taken a position. And descended into polemics. The Alice dissertation distributed as part of its documentation describes clearly its goals and intent. A VR system with maximum flexibility and minimum 'cognitive load'. Python is used as part of its strategy. It's simple and gets things done - VR things. Python is being used appropriately for something it is well designed to handle and anyone who likes Python should like that. I do. Now education. Inspiration of students to undertake the maximum cognitive load within their capabilities. I believe that Python could have an extremely important role in a curriculum designed to do just that. Which is why I'm here. The fact that the phrase 'minimum cognitive load' anywhere within a hundred miles of an educational project sends shivers down my spine, is not something I can find a way of backing away from, especially in the context of the surrounding controversy. Yet to anyone who sees it differently, or who finds my approach in the discussion of this issue unnecessarily specific, agressive or heavy-handed, I do apologize. From dscherer@cmu.edu Thu Apr 27 17:01:30 2000 From: dscherer@cmu.edu (David Scherer) Date: Thu, 27 Apr 2000 12:01:30 -0400 Subject: [Edu-sig] On the front page In-Reply-To: Message-ID: > Inspiration of students to undertake the maximum cognitive load > within their capabilities. I believe that Python could have an > extremely important role in a curriculum designed to do just that. > Which is why I'm here. > > The fact that the phrase 'minimum cognitive load' anywhere within > a hundred miles of an educational project sends shivers down my > spine, is not something I can find a way of backing away from, "Cognitive load" is jargon, and probably doesn't mean what you think. A Google search turned up the following (I was surprised to notice that I know some of the people cited; e.g. Kotovsky taught my Intro to Psych course last spring :) | Cognitive load theory (Sweller, 1988; 1994) derives instructional | design principles from aspects of our cognitive architecture. The | theory assumes a very limited working memory (Miller, 1956), an | effectively unlimited long-term memory (Simon and Gilmartin, 1973) | holding large numbers of schemas (Chi, Glaser & Rees, 1982) that can | vary in their degree of automaticity (Kotovsky, Hayes & Simon, 1985). It is, I think, generally accepted by psychologists that people have a very limited short-term memory capacity, on the order of seven "chunks". The size of a chunk depends largely on long-term familiarity information of similar structure ("schema"). Our limited working memories place limits on our thinking and learning abilities, just as available memory places limits on what a computer program can do. Many activities, like programming, require us to keep many things in mind at one time. These have a high "intrinsic cognitive load." A particular teaching method or problem-solving strategy may require more "working memory" than the minimum, just as an inefficient algorithm may use more computer memory than necessary. This wasted memory is called "extraneous cognitive load." When the total (intrinsic + extraneous) cognitive load exceeds a student's short-term memory capacity, learning performance drops, just as your computer's performance drops when it runs out of RAM. Like everything related to education, the actual application of these ideas is subject to much debate. The bare fact that short-term memory capacity can be a limit on learning performance doesn't provide much guidance. Some researchers have even suggested that a major source of cognitive load in the classroom is social stress: "the task of developing strategy to prevent loss of face is a significant cognitive load in many learning situations." When someone writes "minimum cognitive load" they probably aren't describing a person sitting vegetable-like in front of a computer screen while the computer does everything for them. Instead, they mean that the *unnecessary* cognitive load has been minimized, leaving as much capacity as possible for the problem at hand. The line between necessary and unnecessary is ultimately a question of what we want to teach. Even if we want to teach "everything," it is a harsh reality that people don't have the capacity to learn everything simultaneously. > Yet to anyone who sees it differently, or who finds my approach in > the discussion of this issue unnecessarily specific, agressive > or heavy-handed, I do apologize. No need to apologize. As you say, there's been zero traffic on this list recently, so you can hardly make things worse. Dave From pdx4d@teleport.com Thu Apr 27 17:10:23 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 27 Apr 2000 09:10:23 -0700 Subject: [Edu-sig] On the front page In-Reply-To: Message-ID: <3.0.3.32.20000427091023.032425cc@pop.teleport.com> I confess I haven't studied the Alice documentation carefully, although I have the plug-in and have played with it in the past -- in cursory fashion. I think "minimum cognitive load" has various interpretations, and at least one of these is OK: Python helps minimize irrelevant noise, i.e. doesn't clutter the picture with too many syntax-related concerns even as students are trying to focus on ideas about VR. The verbs "demystifies" and "deobfuscates" come to mind in this context. Like, yesterday I was talking to Albert (he takes me to lunch -- represents an agency I work for now and then), and we talked over curriculum design issues. I asked if he'd used Mathematica and he shared how his first college calculus class was taught in conjunction with this program (he went to George Fox College, in Newberg Oregon -- dual chemistry and religion major). He said it was difficult and frustrating, because Mathematica so nit-picky and unforgiving, e.g. was case sensitive, and presented a host of new computer- related concepts to kids just making the transition for regular high school math. All that "computer stuff" seemed to really complicated matters unnecessarily in a lot of ways, although in retrospect he said he better appreciated where the curriculum writers were coming from (he thought the text book was especially poor -- too much a cook book (I don't know which one it was)). The case sensitivity thing struck a chord, as that's where a some of our initial chatter was focussed when this list really got rolling in February (a thread Guido found somewhat irrelevant, as our purpose here is not to overhaul the language, but to think about where we might go with it by accepting the current reality). I learned that students have found Alice difficult for the same reason, and I'd say case sensitivity falls into that "noise" or "irrelevant conceptual load" category. However, Albert and I agreed that if a Python or other suitable computer language(s) had been in the picture since the early grades, i.e. throughout K-12, and not "sprung" on kids just entering college, then a lot of these issues, including case sensitivity, would likely be moot by the time calculus was entering the picture in a big way. According to this model, the idea of case sensitive variables, data structures (e.g. lists, tuples, dictionaries), parameterized algorithms (function defs), objects (defs + data structures, encapsulated, with inheritance capability), plus ideas about controlling flow, converting between types, scoping variables, loading namespaces, would all be second nature by the end of the teenage years. Likely even Mathematica would seem a lot easier, because of the background students would have already received -- they'd already have a lot of "transferable skills" as we say in the training world (I've been a trainer for older workers needing bizapp skills -- Lotus, WordPerfect, dBase were among the top 3 back then (dates me) -- and we put a lot of emphasis on the "transferability" of these skills (certainly I've continued "porting" my skillset from one upgrade to the next (sometimes the gradient gets pretty steep))). Turning to the "math wars" for a sec, I haven't checked the NY Times yet today, but I surmize it's focused on the NCTM versus Mathematically Correct polarity, i.e. reformists versus traditionalists. The crop of text books released since the NCTM first released its standards for K-12 math have been derided as "fuzzifying" the subject, lowering standards to meet student and teacher needs, at the cost of putting a lot of higher tech jobs out of reach at the other end of the pipeline, meaning people from outside the public school system (those still getting the old school's training -- including in Europe, Asia) are landing all the best jobs. Or such is the argument made by the traditionalists. The reformists claim their new approach is working, while the old approaches were notorious for turning kids off math way too early in the game. The NCTM released new standards in Chicago recently, and these seem to contain "course corrections" which address some of the sharpest criticisms (the National Council of Teachers of Mathematics has been sensitive, some think guiltily over-defensive, regarding this "fuzzy math" charge). A sub-debate in all of the above is the appropriate role of technology in the classroom. On this one, I come away frustrated that "technology" is quasi-universally identified with calculators, including graphing calculators, with computers mostly a footnote, mentioned in passing, with a nod and a shrug. When/if computers _do_ enter the picture, it's usually with a spreadsheet front and center, as the most appropriate "bizapp" for improving numeracy skills. Anyone talking about a real programming language is auto- matically pigeon-holed as a computer science teacher, which implies a whole different text book and approach, another specialty. This frustrates me as well, as many high schools don't have any "computer science", or if they do, its an elective, but all of them have math. I'm suspicious of overspecialization, compartmenting the disciplines too finely in the early grades. We're still aiming at producing comprehensivists at this point, or should be. And computer literacy, like basic numeracy, should just be part of the everyday content -- is my view. I have a lot of writings on file about all of this stuff and should cut it short at this point -- this is the Python SIG. I'll conclude by saying that, if we're serious about seeing more Python in K-12, we should brainstorm more at the big picture level about what's relevant to students today. I heard a presentation by a former Disney recruiter on the radio recently and he was talking about how his industry couldn't get enough of the "hybrid artist" type -- those with good grounding in one or more of the arts, but with enough technical background to take to a state of the art studio like fish to water. He stressed that he was talking about the humanities, about well-rounded individuals with a lot of appreciation for culture, contemporary as well as past. His industry wants comprehensivists, in other words. I consider this a helpful cue. Kirby From fig@oreilly.com Thu Apr 27 17:34:47 2000 From: fig@oreilly.com (Stephen R. Figgins) Date: Thu, 27 Apr 2000 09:34:47 -0700 Subject: [Edu-sig] On the front page In-Reply-To: Your message of "Thu, 27 Apr 2000 10:52:31 EDT." References: Message-ID: <200004271634.JAA11152@rock.west.ora.com> >The front page article in todays New York Times on the controversy >surrounded the nations >math curriculum probably does not tell many of us anything which we don't >much well know. You can find this article at http://www.nytimes.com/library/national/regional/042700ny-math-edu.html You have to sign up to get in. Subscription is free. I found the chart (link at the top) funny. The traditional math was what was described as "new math" when I was a kid. Tom Lehrer has a great song about it. But I digress. :-) So, what I hear Art saying is that dumbing down programming is not perhaps, the best way to teach CP4E, and he feels that pushing Alice as educational is dumbing down programming. He suggests it is a fun toy, and a good use of python, but far from educational. Sort of like the Flexble New Math described in the NYT. Actually the thing that I find irksome is the thought that one curriculum could suit everyone. That there is one right way to learn math. Burried in the article is the line "One obvious solution is to mix a bit of both." Well, sure. Or mix a bit of everything. I have been editing an introduction to Matrix Math and Numerical Python to be launched next week on the Python DevCenter. I was a real math head when I was younger, but a few years of highschool education educated that love right out of me. Later on in college I revisited Calculus and had a grand time. The book's method was pretty much the same. It didn't really work for me. But the instructor was great. He told us stories about the forumlas, where they came from, who the people were that discovered them. He walked us through how the formulas were discovered. He set things in a historical context. Well, anyway, inspired by what I might be able to do with NumPy, I checked out a couple dozen books from the library on Math, looking to understand Matrices and Linear Algebra. Ugh! What a lot of boring material there is out there! Pretentious too, loaded with terms that they don't really bother to define. There is a horrible barrier to learning this stuff. But I have found a couple good books in there, but the point is probably that I am inspired to learn this. And because I am inspired, I will learn it. Ah, but what inspires me, may not be what inspires you. Inspiring a love of math or a love of programming is not something that can be placed in any curriculum. It is a rare gift that some instructors have, not nearly enough. Some writers have it too, but they are even rarer. If you want children interested in math you can't just teach them formulas and tricks. You have to find what interests them, what they want and need to do, and encourage that growth. Assist them in their learning. Inspired people with access to knowledge and people to assist them when they ask cannot be stopped from learning. They will seek out the maximum cognitive load. They will learn. Those with no interest in the material will learn what they need to get by, and no more. Dumbing math down from where it is only helps them get by with less. The problem is not that math is too hard, it is that most see it as uninspiring drill work, a lot of useless memorization of forumlas they will never need to know. And they are pretty damn close to right. You can get by without knowing it. But knowing it, you could be a success. That is the story we need to tell. Math is rich, and can make you rich, famous even, or at least give you better odds at succeeding. Why settle for getting by? I think there should be an immense initiative to train instructors in story telling, and give them access to great stories to tell. There should be summer story workshops for them. Let a good quarter of their time be spent telling stories, another part in constructing math labs, and math contests, I bet you would see an incredible increase in the math abilities of our children. You want children to learn programming, learn to tell programming stories. Give them good programming tools and tutorials and set them loose to create their own projects. Have open source style competitions. Have them work not just in the schools, but in the real world too. If it is going to be a common literacy, it has to be very visible, and the benefits of knowing it have to be obvious, everything around us should remind us of those benefits. If not, it will remain a minority interest. Stephen From pdx4d@teleport.com Thu Apr 27 18:19:02 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 27 Apr 2000 10:19:02 -0700 Subject: [Edu-sig] On the front page In-Reply-To: <200004271634.JAA11152@rock.west.ora.com> References: Message-ID: <3.0.3.32.20000427101902.032d71a0@pop.teleport.com> >You can find this article at >http://www.nytimes.com/library/national/regional/042700ny-math-edu.html Yes, I've read it too. Good overview, with a NY focus (I'm more used to reading about CA, but the situations are parallel). <> >I think there should be an immense initiative to train instructors in >story telling, and give them access to great stories to tell. There >should be summer story workshops for them. Let a good quarter of >their time be spent telling stories, another part in constructing math >labs, and math contests, I bet you would see an incredible increase in >the math abilities of our children. I completely agree re storytelling as an important aspect of math teaching/learning. Here are some earlier paragraphs of mine to this list, from February: I think what's more challenging and interesting is to see math as Keith Devlin does, as a discipline which "makes the invisible visible". In this sense, a math teacher's job should be about deobfuscating, demystifying, helping students to flesh out their understanding of systems and infrastructure that runs "behind the scenes" in the real world. In this sense, the teacher is more a storyteller, weaving interesting narratives which interlace history, world affairs, technological innovations. But in order to tell these stories from a math-literate point of view, you have to impart numeracy and, as we get closer to talking about our own time, computer literacy. So in the course of your storytelling, you'll want to toss out a lot of connected "artifacts" which point beyond themselves to how the world works (sometimes I call them "cave paintings" -- because they're rather sketchy, schematic, idealized). Patches of notation, snippets of working code, flow charts, diagrams, graphical displays... always trying to up the comfort level, the confidance level, around working with "technical communications" in their many forms. [http://www.python.org/pipermail/edu-sig/2000-February/000074.html] >You want children to learn programming, learn to tell programming >stories. Give them good programming tools and tutorials and set them >loose to create their own projects. Have open source style >competitions. Have them work not just in the schools, but in the real >world too. If it is going to be a common literacy, it has to be very >visible, and the benefits of knowing it have to be obvious, everything >around us should remind us of those benefits. If not, it will remain >a minority interest. > >Stephen I agree with this too. And we should acknowledge that "gray area" between "programming" and simply writing out some algorithms. Like, in a math context, we maybe only need a very few lines of code to implement something. You don't have to get into writing these large, gnarly programs with hundreds of lines (you can, but you don't have to). For example, consider number sequences, series. The Python can be as simple as: def tri(n): # triangular num n = sum of n consecutive counting nos if n<=1: return n else: return n + tri(n-1) And the story in this context is not about a computer programmer, but a 7 year old mathematician, JCF Gauss, who derived a method for computing the sum of the first N consecutive numbers: 1+2+3+4...N, which is also the number of spheres packed in a triangle: * 1 * * + 2 * * * + 3 * * * * + 4 ... + ... His answer: N(N+1)/2 e.g. 1+2+3+4 = 4(5)/2 = 10 Visual proof: Let S be the sought-for sum of 1 thru N. Then: * * * * * * * * * * * * * * * * * * * * * * + * + * * = * * * * * * * * * * * * * * * * * * * * * * * * * S N+1 S (N+1)^2 Solve for S in terms of N: 2S + (N+1) = (N+1)^2 2S + N + 1 = N^2 + 2N + 1 2S = N^2 + N S = N(N+1)/2 Even works for N = 1: * * = * * * * * * S N+1 S (N+1)^2 Kirby See: http://www.inetarena.com/~pdx4d/ocn/numeracy0.html From siegel@eico.com Thu Apr 27 18:25:43 2000 From: siegel@eico.com (Arthur Siegel) Date: Thu, 27 Apr 2000 13:25:43 -0400 Subject: [Edu-sig] On the front page Message-ID: > "Cognitive load" is jargon, and probably doesn't mean what you think. Kirby makes the same point, and I stand corrected (and a little embarassed) on my layman's interpretation. But getting beyond the semantics/jargon - One specific place I know I saw the term used in the Alice dissertation is in connection with their use of 'up, 'right', 'forward' instead of X,Y,Z axis references. Which again is fine to me if you're building a VR system. But, if we are going to allow ouselves to use 3D computer graphics as an educational tool - and I am adamantly pro doing so, shouldn't one of the main points in doing so be to expose as much of the underlying mathematical framework of it as a stduent can handle at whatever level we are teaching. Rather than protecting students from it? Make math exciting, yes. 3D graphics is a new way to do that, never before available. A natural. Yeah Kirby. Yeah me, in fact. But you need to make the connection, not hide it. From pdx4d@teleport.com Thu Apr 27 18:56:59 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 27 Apr 2000 10:56:59 -0700 Subject: [Edu-sig] On the front page In-Reply-To: Message-ID: <3.0.3.32.20000427105659.0072ea00@pop.teleport.com> >One specific place I know I saw the term used in the Alice >dissertation is in connection with their use of 'up, 'right', >'forward' instead of X,Y,Z axis references. Which again is >fine to me if you're building a VR system. I'm not well-versed in Alice, but it's true that in computer graphics in general, you have your world coordinates, and then the local coordinates of the various objects. Words like 'up','right','left' are relative to an observer/object/camera/viewpoint, not "the world in general", which is why we have those confusions about "your left is my right", and "exit, stage right" means "from the _director's_ point of view" (yes?). It's not altogether pointless to want to have these "relative-to-the-observer" commands in the picture, given they map to semantics we encounter a lot. Given we live on a sphere, "up" is likewise relative, and is more accurately "out", "down" more accurately "in" (out/in from/towards the planet's center). Indeed, left versus right is a confusing area that needs clarification. A "flatland" text book will invariably show the "positive X axis" pointing off to the right, always neglecting the viewpoint of someone "behind the page" (looking out), who would necessarily see the positives going to the left (so why not equal time? why all the asymmetry?). A lot of kids start stumbling in math as soon as you introduce "negative numbers", because suddenly the symmetry seems broken: numbers on the one side of zero behave differently from those on the other side, such that root(5) produces a point on the positive line, but root(-5) does not produce a mirror image point on the other side. Why should "left" versus "right" make such a big difference, they wonder, especially in light of the fact that "your left is my right and vice versa". Kirby From siegel@eico.com Thu Apr 27 20:04:53 2000 From: siegel@eico.com (Arthur Siegel) Date: Thu, 27 Apr 2000 15:04:53 -0400 Subject: [Edu-sig] On the front page Message-ID: Kirby writes - > Words like 'up','right','left' are relative to an > observer/object/camera/viewpoint, not "the world in general", > which is why we have those confusions about "your left > is my right", and "exit, stage right" means "from the > _director's_ point of view" (yes?). Snip > > Why should "left" versus "right" make such > a big difference, they wonder, especially in light of > the fact that "your left is my right and vice versa". > > Kirby > Fine Kirb. But what I'ze want to know is whether you'ze wit me or agin me. (mostly) ART From jhrsn@pop.pitt.edu Thu Apr 27 20:21:24 2000 From: jhrsn@pop.pitt.edu (James Harrison) Date: Thu, 27 Apr 2000 15:21:24 -0400 Subject: FW: [Edu-sig] On the front page In-Reply-To: Message-ID: on 4/27/00 1:25 PM, Arthur Siegel at siegel@eico.com wrote: > But, if we are going to allow ouselves to use 3D computer graphics as an > educational tool - and I am adamantly pro doing so, shouldn't one of the main > points in doing so be to expose as much of the underlying mathematical > framework of it as a stduent can handle at whatever level we are teaching. Yes...if you're trying to teach mathematics. To be fair, Alice is a 3D world-building tool specifically designed to be usable with as little training as possible by non-engineers and non-mathematicians. The research that I've seen around the use of Alice by students relates primarily to interface and virtual reality. It's conceivable that a system like Alice might be used in a psychology setting, for example. In that cases, any interaction with the underlying mathematical framework of the display beyond the simplest required to do the job would be an example of "cognitive overhead," i.e., unnecessary cognitive load. Jim Harrison Univ. of Pittsburgh From siegel@eico.com Thu Apr 27 20:30:39 2000 From: siegel@eico.com (Arthur Siegel) Date: Thu, 27 Apr 2000 15:30:39 -0400 Subject: [Edu-sig] (no subject) Message-ID: >To be fair, Alice is a 3D world-building tool specifically designed to be >usable with as little training as possible by non-engineers and >non-mathematicians. A hearty agreement. Where in a curriculum do we place it? From pdx4d@teleport.com Thu Apr 27 20:57:49 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 27 Apr 2000 12:57:49 -0700 Subject: [Edu-sig] Example: parameterized functions w/ Python In-Reply-To: <3.0.3.32.20000427105659.0072ea00@pop.teleport.com> References: Message-ID: <3.0.3.32.20000427125749.032ddd74@pop.teleport.com> Earlier today I wrote: > And we should acknowledge that "gray area" between "programming" > and simply writing out some algorithms. Like, in a math context, > we maybe only need a very few lines of code to implement something. > You don't have to get into writing these large, gnarly programs > with hundreds of lines (you can, but you don't have to). [1] To take a real world example, some of the post-K12 math teachers on MATHEDU are talking about parameterized functions, how these could be introduced earlier, meaning calc profs wouldn't have to cram them in at the last minute, in front of trying to wrap student minds around Stokes, Green, Gauss theorems at the end of a college vector calculus course (requires grad, div, curl -- learning curve already plenty steep). Under http://mathforum.com/epigone/mathedu/lixthoofrah Ralph Raimi writes: But back to calculators and software: Is it really possible within reasonable amounts of time to use this technology to help in the understanding of parametrizations, in time to get to Stokes and divergences? And in http://mathforum.com/epigone/mathedu/planskolhand Mark Bridger writes: Parametric "equations" can be introduced very early in a student's mathematical instruction: probably at the same time in algebra when graphing is introduced. Curves as trajectories is not, you should pardon the phrase, "rocket science" (though it is, sort of), but something that students can relate to rather easily. And indeed, he's right. Plus here is where a computer, vs a simple graphing calculator, really shines, because we're wanting to get "beyond flatland" and do curves in space, not pressed flat on the XY plane.[2] Let's go find an example... At http://iq.orst.edu/mathsg/vcalc/vec_fnc/vec_fnc.html we find an example of a parameterized function. The (x,y,z) coordinates of a vector are each controlled by a separate function: x(t) = 3 cos(t) y(t) = 3 sin(t) z(t) = 0.25(t) The graph is shown, for 0 <= t <= 7 pi How might we do this in Python? First, t is the domain variable, and we want a lot of t-values from 0 to 7 pi, fairly close together. We can build our variable 'domain' as a list, and then pass it in to some other function. Let's define some stuff in a fresh (empty) namespace (module), and invoke it from the IDLE interactive command line. # Module para.py def mkdomain(low, high, interval): i = low output = [] # the list while i <= high: # increment until high reached output.append(i) i = i + interval # increment by interval return output >>> import para, math >>> domain = para.mkdomain(0,7*math.pi,0.1) Then we can write the three functions, right at the command line (nothing hard-coded in the saved module): >>> def f(t): return 3 * math.cos(t) >>> def g(t): return 3 * math.sin(t) >>> def h(t): return 0.25 * t The range is another list, with the function itself being defined by (domain, range) pairs i.e. myfunc = the set of tuples (t, Vector(f(t),g(t),h(t)) ). OK, so let's return this function as a list of tuples: # more from module para.py... from coords import Vector # coords.py is something I wrote def mkfunction(f1,f2,f3,domain): outlist = [] for t in domain: # loop through domain values # build vector w/ passed functions, domain member rvalue = Vector( (f1(t),f2(t),f3(t)) ) # append (domain,range) tuple outlist.append((t,rvalue)) return outlist To obtain our function, simply write: >>> myfunc = para.mkfunction(f,g,h,domain) Notice how we're passing functions f,g and h by name -- along with the domain (a list of t-values) -- and how they execute internally on all members of the domain, to return (domain,range) pairs. The Vector operator used above actually points to a Vector class, which includes methods for doing vector operations (including dot and cross products). In this prototypical curriculum, students have already seen the "vector" object demystified in the Vector class template. It's a familiar object already.[3] All that remains is to graph the function. Again, I have some ready-made modules, none of which contain source code beyond the ability of high schoolers to understand or even write themselves [4]: >>> import functions >>> import povray >>> mygraph = povray.Povray("mygraph.pov") >>> functions.xyzaxes(mygraph,5) # draw XYZ axes +/- 5 long # more from module para.py... def graphit(myfunc, myfile): for i in range(len(myfunc)-1): # indexed access to myfunc v1 = myfunc[i][1] # vector of (t,vector) pair v2 = myfunc[i+1][1] # vector from next pair myfile.edge(v1,v2) # draw edge between the two >>> graphit(myfunc,mygraph) >>> mygraph.close() And we're done. Just have to render mygraph.pov in Povray, maybe adjust camera distance to fit (again, this is old hat to students using my Python + Povray approach to graphics). Here's the graph [5]: http://www.inetarena.com/~pdx4d/ocn/graphics/paramgraph.gif Here's the module: http://www.inetarena.com/~pdx4d/ocn/python/para.py Kirby Curriculum writer Oregon Curriculum Network http://www.inetarena.com/~pdx4d/ocn/ Notes: [1] http://www.python.org/pipermail/edu-sig/2000-April/000330.html [2] http://inetarena.com/~pdx4d/ocn/trends2000.html#bf [3] http://www.inetarena.com/~pdx4d/ocn/numeracy1.html [4] Ibid [5] Note that the positive Z axis points away from the viewer (owing to camera position) -- still a standard XYZ coordinate system though. From siegel@eico.com Thu Apr 27 21:11:19 2000 From: siegel@eico.com (Arthur Siegel) Date: Thu, 27 Apr 2000 16:11:19 -0400 Subject: [Edu-sig] On the front page In-Reply-To: Message-ID: >To be fair, Alice is a 3D world-building tool specifically designed to be >usable with as little training as possible by non-engineers and >non-mathematicians. The research that I've seen around the use of Alice by >students relates primarily to interface and virtual reality. I have one more thing to add on the subject, I'm afraid. To make sure I wasn't nuts, I went into the childrens section of a mall software store and found at least 3 products designed to do very much what Alice does. 3D world-building tools - animation and sound - for children. One was Disney's. I didn't buy any, but I will assume that they are surviving in the market-place and kid's actually use them. Which is great. So it is not good enoguh, in my mind, to justify Alice's significance that it does 3D world-building simple enough for children. There's alot out there that does that. Alice does take it a step further by employing Python scripting, true. But if someone else has a design whereby they have a macro capability attached to a joystick, let's say, and avoids scripting - isn't that an 'improvement' in design, depending on your goals. If you see my point. ART From dscherer@cmu.edu Thu Apr 27 23:25:15 2000 From: dscherer@cmu.edu (David Scherer) Date: Thu, 27 Apr 2000 18:25:15 -0400 Subject: [Edu-sig] On the front page In-Reply-To: Message-ID: > Alice does take it a step further by employing Python scripting, > true. But if someone > else has a design whereby they have a macro capability attached to a > joystick, let's say, and avoids scripting - isn't that an > 'improvement' in design, depending on your goals. Depending on your goals, yes or no. Arthur, can you clarify the position you are arguing *against*? I don't think anyone here has suggested that Alice is a great environment for teaching programming. Moreover, after re-reading your first post this morning, I have the impression that you intended to make a more general point, and brought up Alice only as an example. Every possible programming system is an "abstraction": (a) Some interface that is exposed to the programmer (b) Some implementation that is not exposed Systems can be designed in layers, so that the interested programmer can roll back the line between interface and implementation at will. However, in general we eventually hit a level at which we cannot or will not go further and treat the remaining implementation as "magic." A great deal of debate in this forum, from Kirby's objections to PyGeo to your recent complaints about Alice, centers around where this line should be drawn. Python already provides a rather high level of abstraction, with ~100,000 lines of C code in between you and the (even larger) operating system. A system like Alice, PyGeo, or my own Visual adds more abstraction. The average piece of commercial software adds even more. It is possible to have too little abstraction and it is possible to have too much. Any given system can fall into either category depending on what we want to accomplish, and, probably, every educational environment will have different needs on this scale. I think, therefore, that it's best to point to a specific situation when we discuss what should be abstracted away and what should not. For example, I often discuss the specific needs of the physics course for which I am developing libraries, because I know that those needs are not the same as, for example, the needs of an introductory programming course. There is still plenty of room for debate, but less danger of talking past each other if we stop to paint a picture of the environment in which we intend to design. Dave From dorothea@terracom.net Fri Apr 28 00:07:57 2000 From: dorothea@terracom.net (Dorothea Salo) Date: Thu, 27 Apr 2000 18:07:57 -0500 (CDT) Subject: [Edu-sig] Articles of possible interest Message-ID: As most of you probably already know, _Linux Journal_ just put out a Python supplement that includes an article on CP4E by Guido van Rossum. I have been lurking for a while on edu-sig, and have read its archive, so of course I was pleased to see the article. I found myself reacting rather strongly to it, and have written up my observations and placed them on the Web. I decided not to bring them forward here because a) I am a total edu-sig newbie, b) some of my observations are tangential to CP4E, and c) most, if not all, of my observations are rather polemical. The essay I have written can be found at http://www.terracom.net/~dorothea/femhack.html. I will be around edu-sig if anything I have written deserves comment here. Dorothea ---------------------------------------------------------------------------- Dorothea Salo <*> |"He querido mas vivir en mi peque~a casa, dorothea@terracom.net |exenta, y se~ora, que no en sus ricos http://www.terracom.net/~dorothea |palacios, sojuzgada y cativa."_Celestina_ From guido@python.org Fri Apr 28 00:37:36 2000 From: guido@python.org (Guido van Rossum) Date: Thu, 27 Apr 2000 19:37:36 -0400 Subject: [Edu-sig] Articles of possible interest In-Reply-To: Your message of "Thu, 27 Apr 2000 18:07:57 CDT." References: Message-ID: <200004272337.TAA15044@eric.cnri.reston.va.us> > As most of you probably already know, _Linux Journal_ just put out > a Python supplement that includes an article on CP4E by Guido van Rossum. > > I have been lurking for a while on edu-sig, and have read its > archive, so of course I was pleased to see the article. I found myself > reacting rather strongly to it, and have written up my observations and > placed them on the Web. > > I decided not to bring them forward here because a) I am a total > edu-sig newbie, b) some of my observations are tangential to CP4E, and c) > most, if not all, of my observations are rather polemical. > > The essay I have written can be found at > http://www.terracom.net/~dorothea/femhack.html. I will be around edu-sig if > anything I have written deserves comment here. Thanks for the reality check, Dorothea! And there I tried to be enlightened in portraying more girls in programming class than you currently find... I had wanted the examples to be more realistic, but I don't really know any girls (or boys!) in the ages described in the article, and I still don't have the faintest idea what kind of games or other activities *would* appeal to them so I could make the examples. (Surely not Pokemon!) I remember what I liked myself around that age, but I was probably several standard deviations away from the norm, and too socially inept to know what the girls were interested in. I did realize before it went to press that girls of that age no longer play with Barbies, but I didn't know what to substitute, and neither did my fiancee. I figured that 95% of the audience would be men like me who wouldn't notice the cultural discontinuity, so I decided to leave it in... Coming around to your plea for more text processing: good point. I still believe that many kids would find text processing boring (you must have a more than average interest in it given your interest in linguistics), and to really show off the power of today's computers, graphics are in order. Searching a million words in under a second isn't quite as impressive as displaying realistic full-screen 3-D animation at 30 frames per second, I think, and the latter appeals more to people who can't program at all, Internet search engines not withstanding. I also believe strongly that graphical user interfaces (if done well!) are better than text interfaces for most things, including debugging. Interestingly enough, I believe that programming itself, i.e. expressing the intended operation of a computer program, is best done through text. I guess that means that I believe that text (symbols) is more powerful than images; while a picture may be worth a thousand words, in my experience, most meaningful collections of a thousand words are hard to capture in a picture. (You can also see a program as a two-dimensional picture made up out of symbols.) I hope that you could see through my biased examples and found some information on where I think IDLE should go. I'd love to discuss that here or in the idle-dev list. --Guido van Rossum (home page: http://www.python.org/~guido/) From gward@mems-exchange.org Fri Apr 28 00:45:25 2000 From: gward@mems-exchange.org (Greg Ward) Date: Thu, 27 Apr 2000 19:45:25 -0400 Subject: [Edu-sig] Articles of possible interest In-Reply-To: ; from dorothea@terracom.net on Thu, Apr 27, 2000 at 06:07:57PM -0500 References: Message-ID: <20000427194525.A15263@mems-exchange.org> On 27 April 2000, Dorothea Salo said: > I have been lurking for a while on edu-sig, and have read its > archive, so of course I was pleased to see the article. I found myself > reacting rather strongly to it, and have written up my observations and > placed them on the Web. > > I decided not to bring them forward here because a) I am a total > edu-sig newbie, b) some of my observations are tangential to CP4E, and c) > most, if not all, of my observations are rather polemical. I think the only good reason *not* to post your response to Guido's article is that it's a bit long. Any newbie who's read the archive should feel free to post; fresh voices are always welcome in any forum. (Well, except for outliers like alt.2600 or alt.sysadmin.recovery -- but never mind...) I wouldn't call your observations "tangential" to CP4E; they're not *quite* "utterly crucial" or "absolutely central" but they are sure close. And yes, your article is polemical, but it's about 95% spot-on. So I will quote liberally from your article and see how much I agree with you. (A lot.) > So, what are the little nippers up to, according to van Rossum? Let's > see: > > "We walk up to two girls in the back of the class who are busy > debugging a Barbie dress-up game used as an exercise." > > Excuse me while I barf. Do people really wonder why women aren't > hackers? Yeah, I just about barfed there too. Guido, what *WERE* you thinking?!?!? I am no big fan of "political correctness", but this particular example was just plain dumb. However, I would argue that the other example -- the boys were doing some 3-D graphics thing -- was almost as dumb. (If the boys were designing a latter-day DOOM wad file, it would have been just as dumb. Girls play with dolls, boys play at killing, and that's the way the world is, right? I sure hope not...) > Let us examine Eric S. Raymond for a moment, as long as I'm making > myself universally hated by going after sacred cows. His "How to Become > a Hacker" guide has a slightly unsettling bit: > > "There are even growing numbers of people who realize that > hackers are often high-quality lover and spouse material. For > more on this, see Girl's Guide to Geek Guys I can't defend Guido's howler, but I think Eric's statement is defensible on a couple of grounds: first, there really are a lot more male geeks or hackers than female; second, there really is a web page called "The Girl's Guide to Geek Guys"; third, that web page is (at least partly) satirical. Personally, I'd love to see a Guide to Geek Girls, preferably with an emphasis on where to *find* them. There sure don't seem to be many on the Python-related lists I follow. Is this a failure of the educational system? of geek culture? of the silent mass of geek girls to take part in technical mailing lists? or are they out there, but masquerading under male names so they don't get buried by sleazy email propositions? (BTW, does that kind of crap still happen, or have people -- err, men on the Internet -- grown up a little bit yet?) [Dorothea's suggestions for what the girls in Guido's mythical CP4E class could be doing] > They might be making interactive web pages; that's the obvious answer. > > They might be writing and optimizing a search engine, though > that might be a little advanced for middle school. > > They might be writing a program that produces all the forms of a > Spanish verb given the infinitive (for extra credit-or perhaps as an > extension written later in the year-the program should correctly > handle stem-changing verbs and irregular > first-person-singular-indicative forms). > > They might be working on speech synthesis, and gaining a solid > experiential understanding of English orthography, phonetics, and > phonology in the process. > > They might be programming a sentence generator, and refining it so > that it does not generate syntactically unacceptable English > sentences. (Forget sentence diagramming-what an utter waste that is!) > > The 2003 version of my old middle-school theatre crowd might be > programming a theatre lighting system that reacts to the sound of > particular lines, or coming up with a text-manipulation program to > help directors decide where to cut lines in plays that are running > long. Cool! Can I take your class instead of Guido's? I'm definitely a text person myself, and I don't think I'm the only one. Thing is, 3-D graphics -- whether it's designing a VR world or blowing evil monsters to smithereens -- looks cool and attracts the interest of non-techies. Alice is *just* *plain* *cool*, even though I'm not all that interested in VR myself. But to limit the universe of "interesting things" for students to do with computers to 3-D graphics is folly. Text is indeed cool, and getting more interesting all the time. Am I the only one with a minor fetish for Unicode glyphs? That stuff is *neat*! Greg From pdx4d@teleport.com Fri Apr 28 01:30:34 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 27 Apr 2000 17:30:34 -0700 Subject: [Edu-sig] Articles of possible interest In-Reply-To: Message-ID: <3.0.3.32.20000427173034.032f0dcc@pop.teleport.com> At 06:07 PM 04/27/2000 -0500, Dorothea wrote: > I have been lurking for a while on edu-sig, and have read its >archive, so of course I was pleased to see the article. I found myself >reacting rather strongly to it, and have written up my observations and >placed them on the Web. Read the article, liked the polemics OK. I agree with the focus on text/alphanumeric, as per my http://www.python.org/pipermail/edu-sig/2000-February/000211.html Would like to see Hamming Distance introduced earlier in math ed, Levenshtein too.[1] Pretty geeky! Who wants to supply some function defs? Kirby PS: also Guido's article makes little allowance for geek guys who might likewise have playful uses for Barbies e.g. here are some links that geeks of both (?) persuasions might enjoy: E.g: http://www.nondairy.com/People/Raven/keychains.html http://www.atticusbooks.com/mondobarbie.html http://www.users.bergen.org/~lucey/ http://www.margiesdollhouse.com/harley.htm [1] http://www.cut-the-knot.com/do_you_know/Strings.html From redbird@rbisland.cx Fri Apr 28 01:34:15 2000 From: redbird@rbisland.cx (Gordon Worley) Date: Thu, 27 Apr 2000 20:34:15 -0400 Subject: [Edu-sig] More on RPN example Message-ID: With the major focus on math that we have on this list, I think I should mention about by RPN (Reverse Polish Notation) project again. While as a whole the project is a bit large for students to take part in, they could focus on learning how stacks work and how RPN expressions are different from algebraic ones. Because few students have used RPN, they see it as a different system for algorithems than the algebraic stuff their used to, so, in a way, it is like a proto programming language to them. I realize that many teachers may not be aware of how RPN works, but a quick search on Google turns up some good tutorials within the first five links that can help get one started. At the moment there is not documentation, which will hopefully be forthcomming, but the text-based python program (thus cross platform) does have some online help will get one started. Also, more advanced students in need of a simple project may wish to contribute (dispite my earlier note) by helping me expand the range of supported operations (I have the five basic functions and exponents, plus stack operators). Anyway, this may be something a little bit more down to Earth for those of you weary (or not, if you prefere) of using 3D to teach programming. All this can be found at . I hope that this project is of interest to some of you and can aide you in teaching students (and maybe yourselves) to program better. -- - Gordon Worley http://www.rbisland.cx/ mailto:redbird@rbisland.cx From pdx4d@teleport.com Fri Apr 28 01:41:02 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 27 Apr 2000 17:41:02 -0700 Subject: [Edu-sig] On the front page In-Reply-To: References: Message-ID: <3.0.3.32.20000427174102.032f3508@pop.teleport.com> >A great deal of debate in this forum, from Kirby's objections to PyGeo to >your recent complaints about Alice, centers around where this line should be >drawn. Python already provides a rather high level of abstraction, with >~100,000 lines of C code in between you and the (even larger) operating >system. A system like Alice, PyGeo, or my own Visual adds more abstraction. >The average piece of commercial software adds even more. I agree with this "moving line" analysis and think students would benefit from having this same understanding. A well-rounded education would involve looking "under the hood" at various levels -- move the line around, and get some insights about the different kinds of API. Plus we should forget the "black box" is on both sides of the "cell-silicon interface" and we actually have less insight into why it works at all on "this side" of the interface. Kirby From pdx4d@teleport.com Fri Apr 28 01:59:04 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 27 Apr 2000 17:59:04 -0700 Subject: [Edu-sig] More on RPN example In-Reply-To: Message-ID: <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> >At the moment there is not documentation, which will hopefully be >forthcomming, but the text-based python program (thus cross platform) >does have some online help will get one started. Also, more advanced I use IDLE. I downloaded your modules. I can import them, but what to do next? Seems it'd take about 60 seconds to write a few lines showing a sample interaction in >>> user types computer replies >>> user types computer replies format. Maybe post that here and do a link from your web page to the edu-sig archives. That'd be a big help. To expect such minimal documentation is not unreasonable, and really shouldn't take more than a few minutes of your time. Kirby From pdx4d@teleport.com Fri Apr 28 02:00:50 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 27 Apr 2000 18:00:50 -0700 Subject: [Edu-sig] On the front page In-Reply-To: <3.0.3.32.20000427174102.032f3508@pop.teleport.com> References: Message-ID: <3.0.3.32.20000427180050.032f6ca4@pop.teleport.com> >Plus we should forget the "black box" is on both sides of ^ n't >the "cell-silicon interface" and we actually have less >insight into why it works at all on "this side" of the >interface. > >Kirby PS: re another erratum, I've been informed off-list that "exit, stage left" is from the point of view of the _actor_, not the _director_, as I'd wrongly guessed. From dorothea@terracom.net Fri Apr 28 02:38:19 2000 From: dorothea@terracom.net (Dorothea Salo) Date: Thu, 27 Apr 2000 20:38:19 -0500 (CDT) Subject: [Edu-sig] Articles of possible interest Message-ID: Hi, Guido (and edu-sig), Thanks for being such a good sport! >I had wanted the examples to be more realistic, but I don't really >know any girls (or boys!) in the ages described in the article, and I >still don't have the faintest idea what kind of games or other >activities *would* appeal to them so I could make the examples. >(Surely not Pokemon!) You'd be surprised. My coworker's daughter -- 9 or 10, I think -- got her picture in the newspaper last Halloween in some sort of Pokemon getup. I myself am rather an anime fan (although Pokemon makes me gag). I remember what I liked myself around that age, >but I was probably several standard deviations away from the norm, and >too socially inept to know what the girls were interested in. Well, I don't deny that the Barbie girls exist (I started to include a paragraph to that effect, but it got whiny, so I deleted it). I'm just not sure they're CP4E's first target, and they're certainly not its only target! >I did realize before it went to press that girls of that age no longer >play with Barbies, but I didn't know what to substitute, and neither >did my fiancee. I figured that 95% of the audience would be men like >me who wouldn't notice the cultural discontinuity, so I decided to >leave it in... Part of the problem. But I said that. :) You have more women in your audience than you probably realize, and you'll have more (and more vocal) women if you make them feel welcome. >Coming around to your plea for more text processing: good point. I >still believe that many kids would find text processing boring (you >must have a more than average interest in it given your interest in >linguistics), Well, yes, I certainly do, in the same way that computer programmers tend to have a more than average interest in mathematics. (I do confess that I haven't darkened the door of a math classroom since the calculus class I mentioned.) My point is more that kids might find text processing *immediately useful* in a way that robots aren't. Moreover, text processing is probably already a part of their lives in a way that robots aren't -- I think I typed up my first paper at age 13, and I expect kids these days are doing it younger. It seems a shame not to leverage some of that familiarity. They've seen and used spellcheckers, why not have them program one? There is also the fascinating interaction between computer language and natural language to explore. What are the "parts of speech" of Python? "for" isn't really a preposition, is it? Then what is it? I think verbally-oriented kids could really get into discussions like that -- and learn about *both* computer language *and* natural language in the process. and to really show off the power of today's computers, >graphics are in order. Searching a million words in under a second >isn't quite as impressive as displaying realistic full-screen 3-D >animation at 30 frames per second, I think, and the latter appeals >more to people who can't program at all, Internet search engines not >withstanding. No argument. But again, there *really are* people who yawn at pretty pictures who can be grabbed by an instant translator (especially if it's any good, which most of them aren't). Playing with strings can actually be a lot of fun. The "aha moment" that brought me to Python was learning about regular expressions. Most programmers, I think, find regexes as boring and difficult as I find computational math games. Me, I *love* constructing regexes, do it all the time and have done really pretty amazing things with them -- and I think there are LOTS of people who would catch onto them quickly and find them as fascinating as I do. >I also believe strongly that graphical user interfaces (if done well!) >are better than text interfaces for most things, including debugging. Oh, I tend to believe that also (she said, typing busily on a Macintosh). It's not like most people use emacs instead of Microsoft Word (*spit*). >Interestingly enough, I believe that programming itself, >i.e. expressing the intended operation of a computer program, is best >done through text. Well, because I'm so painfully verbal rather than visual, I sort of like the draw-the-GUI-widget development aids. But in the main I agree, insofar as I'm qualified to. >I hope that you could see through my biased examples and found some >information on where I think IDLE should go. I'd love to discuss that >here or in the idle-dev list. Yes, indeed I did. I shall have to start lurking on idle-dev. Thanks again for keeping your temper. I did try to stay out of flame-mode, but I'm never quite sure I've managed it. Dorothea ---------------------------------------------------------------------------- Dorothea Salo <*> |"He querido mas vivir en mi peque~a casa, dorothea@terracom.net |exenta, y se~ora, que no en sus ricos http://www.terracom.net/~dorothea |palacios, sojuzgada y cativa."_Celestina_ From ajs@ix.netcom.com Fri Apr 28 03:02:32 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Thu, 27 Apr 2000 22:02:32 -0400 Subject: [Edu-sig] On the front page References: Message-ID: <001701bfb0b5$d24e9e00$f0e26dd1@oemcomputer> Tis Arthur, from a different e-mail account, > Arthur, can you clarify the position you are arguing >*against*? The truth is my polemics are in fact not purely related to substantive issues. Alice is visible and has an impressive list of 'sponsors' - from NASA to Microsoft. That's good and its bad, from my perspective. What set me off most recently, as Stephen Figgins knows, is finding three references to it (out of five total) in the Education category of O'Reilly's Python Dev-Center. Which began to confirm to me, in my own mind at least, my worst fear, since I had first raised the issue - that Alice would become too closely identified as the Python representative to the world of education. Stephen has explained to me I misinterpreted his intent. Also, that fear is more real in the context of an evaporated EDU-SIG. With EDU-SIG rocking, I'm more relaxed. So I'm happy now to let it be. From siegel@eico.com Fri Apr 28 14:18:20 2000 From: siegel@eico.com (Arthur Siegel) Date: Fri, 28 Apr 2000 09:18:20 -0400 Subject: [Edu-sig] Articles of possible interest Message-ID: >I had wanted the examples to be more realistic, but I don't really >know any girls (or boys!) in the ages described in the article, and I >still don't have the faintest idea what kind of games or other >activities *would* appeal to them so I could make the examples. >(Surely not Pokemon!) FWIW, the thread of Beyond 3D which was about doing simple text based chat and internet stuff was originally inspired by a recent family visit during which my 10 year-old niece (a big baseball fan) showed me the radio she made and wanted to prove to me it really worked. I can also report that the world of teen-age internet chat is extremely co-ed. My son in fact is more comfortable relating with the opposite sex that way than face-to-face. Its text based. I love it, because it has made him want to know how to communicate well in writing. As Stephen has been emphasing, the skills kids learn are the skills they see as useful to getting them where they want to go. Knowing my son, written communication is something that would have been of little interest to him had internet chat not become important to him socially. From smorris@nexen.com Fri Apr 28 15:13:07 2000 From: smorris@nexen.com (Steve Morris) Date: Fri, 28 Apr 2000 10:13:07 -0400 (EDT) Subject: [Edu-sig] Articles of possible interest In-Reply-To: <20000427194525.A15263@mems-exchange.org> References: <20000427194525.A15263@mems-exchange.org> Message-ID: <200004281413.KAA05516@brocade.nexen.com> Greg Ward writes: > Girls play with dolls, boys play at killing, and that's the way the > world is, right? I sure hope not...) Your statement is truer than it should be. Ignoring this will not make it go away no matter how politically incorrect it is. There is quite a spread but more girls than boys are interested in dolls and more boys than girls are interested in games of violence. Not all of this is cultural. We don't want to encourage the stereotypes but if we ignore gender differences CP4E runs the risk of becoming CP4M. From smorris@nexen.com Fri Apr 28 15:19:21 2000 From: smorris@nexen.com (Steve Morris) Date: Fri, 28 Apr 2000 10:19:21 -0400 (EDT) Subject: [Edu-sig] Articles of possible interest In-Reply-To: <200004272337.TAA15044@eric.cnri.reston.va.us> References: <200004272337.TAA15044@eric.cnri.reston.va.us> Message-ID: <200004281419.KAA05546@brocade.nexen.com> Guido van Rossum writes: > Interestingly enough, I believe that programming itself, > i.e. expressing the intended operation of a computer program, is best > done through text. I guess that means that I believe that text > (symbols) is more powerful than images; while a picture may be worth a > thousand words, in my experience, most meaningful collections of a > thousand words are hard to capture in a picture. (You can also see > a program as a two-dimensional picture made up out of symbols.) As humans language is our primary tool. It is not surprising that computer language should be a natural way of expressing algorithms. Written language has driven thousands of years of development. I am often puzzled why people think that now that computers can draw pretty pictures and a mouse can click on them language should become an inappropriate way of communicating with a computer. GUIs are critiaccly important but they are not everything. From siegel@eico.com Fri Apr 28 15:30:08 2000 From: siegel@eico.com (Arthur Siegel) Date: Fri, 28 Apr 2000 10:30:08 -0400 Subject: [Edu-sig] Articles of possible interest Message-ID: > We don't want to encourage the stereotypes but if we ignore gender > differences CP4E runs the risk of becoming CP4M. It all gets convoluted anyway your turn. Can a position that math and numeracy is a boy thing and therefore CP4E with a numeracy slant is not gender friendly or neutral be considered 'progessive'. Many women would find that position objectionable. Clearly the stories we tell - Stephen's stories - can and should be either gender neutral or play both sides of the fence in turn. But I can't except that math itself is not a gender neutral subject. Two culture wars in a day. Whoosh. From pdx4d@teleport.com Fri Apr 28 15:33:51 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Fri, 28 Apr 2000 07:33:51 -0700 Subject: [Edu-sig] Articles of possible interest In-Reply-To: <200004281413.KAA05516@brocade.nexen.com> References: <20000427194525.A15263@mems-exchange.org> <20000427194525.A15263@mems-exchange.org> Message-ID: <3.0.3.32.20000428073351.0078f800@pop.teleport.com> At 10:13 AM 04/28/2000 -0400, Steve Morris wrote: > >Greg Ward writes: > > Girls play with dolls, boys play at killing, and that's the way the > > world is, right? I sure hope not...) > >Your statement is truer than it should be. Ignoring this will not make >it go away no matter how politically incorrect it is. Yeah. We need more geek girlz in command and control. Then maybe they'll put in a "glass ceiling" that'll keep boys with a violence fixation from rising beyond a certain level (some girlz likewise in need of reality checking of course). Kirby From smorris@nexen.com Fri Apr 28 15:58:07 2000 From: smorris@nexen.com (Steve Morris) Date: Fri, 28 Apr 2000 10:58:07 -0400 (EDT) Subject: [Edu-sig] Articles of possible interest In-Reply-To: References: Message-ID: <200004281458.KAA05632@brocade.nexen.com> Arthur Siegel writes: > Steve Morris writes > > We don't want to encourage the stereotypes but if we ignore gender > > differences CP4E runs the risk of becoming CP4M. > > It all gets convoluted anyway your turn. > > Can a position that math and numeracy is a boy thing > and therefore CP4E with a numeracy slant is not gender friendly or > neutral be considered 'progessive'. Many women would find that > position objectionable. Clearly the stories we tell - Stephen's stories - > can and should be either gender neutral or play both sides of the fence in > turn. > But I can't except that math itself is not a gender neutral subject. Funny. I thought we were talking about programming and CP4E. I'm addressing the issue of example applications for the lower grades. The issue was contrasting a group of boys doing some 3D stuff and a group of girls doing some Barbie thing. I know third graders best but assure you that if you present a broad spectrum of example applications there will be a difference between which have more girl appeal and which have more boy appeal. Some will have a more balanced appeal and perhaps we should try to understand and select for those. We won't do that without understanding the difference. As for Pokemon that is an excellent idea. Too many adults make their decisions based on what they personally find offensive. Pokemon has more cross gender appeal than most recent child fads. Adults see the marketing and their adult cynicism kicks in but kids of both genders love it. It gives them a world of secret knowledge. Trading the cards develops communication and negotiation skills. The shows emphasize virtues like honesty, integrity, helping your friends. The plots are thin but the message is good. Look at it through a childs eyes and stop with the automatic adult cynicism. If a programming example merely had the word Pokemon in its name you would be guaranteed at least a look from 90% of the K-4 set. It ought to be easy to think of some Pokemon related thing. Kids would love the idea of creating a Pokemon database (speaking of text applications.) At its heart Pokemon is a database application, 152 different Pokemon each having various characteristics and relationships to other Pokemon. The Pokemon heros carry around a Pokedex which is merely a slick Pokemon database access tool and communication device. The idea of a computer application is built into the show. Build on it. From dscherer@cmu.edu Fri Apr 28 16:30:22 2000 From: dscherer@cmu.edu (David Scherer) Date: Fri, 28 Apr 2000 11:30:22 -0400 Subject: [Edu-sig] Articles of possible interest In-Reply-To: <200004272337.TAA15044@eric.cnri.reston.va.us> Message-ID: > I did realize before it went to press that girls of that age no longer > play with Barbies, but I didn't know what to substitute, and neither > did my fiancee. I figured that 95% of the audience would be men like > me who wouldn't notice the cultural discontinuity, so I decided to > leave it in... This debate echoes another one that has centered around the game industry's recent rush to release computer games targeted at girls. Mattel's "Barbie Fashion Designer," which by all accounts was even worse than it sounds, sold more copies than Quake. The problem is not that Barbie won't sell, but that it may do more harm than good. Here's a well-written rant on the subject: http://www.gamasutra.com/features/game_design/19980213/girl_games.htm (I didn't write the games in question, please don't get mad at ME :) > Coming around to your plea for more text processing: good point. I > still believe that many kids would find text processing boring (you > must have a more than average interest in it given your interest in > linguistics), and to really show off the power of today's computers, > graphics are in order. Searching a million words in under a second > isn't quite as impressive as displaying realistic full-screen 3-D > animation at 30 frames per second, I think, and the latter appeals > more to people who can't program at all, Internet search engines not > withstanding. If anyone should be an advocate of 30-dual-texture-mapped-environment-mapped-real-time-3D-full-screen-frames-pe r-second, I should be. I'm presently developing a Python graphics library aimed at making 3D visualization accessible to novice programmers, so obviously I believe there's an important place for that. But, Guido, please don't discount what she's saying. Verbal skills *are* just as important as math skills, and for men just as much as for women. Text is also a more malleable medium than graphics, so a novice can do more with it. Let me make a specific, if rough around the edges, suggestion: a Python-based MUD/MOO. A text-based, online environment scriptable in Python. This would offer, for example: - Adventure. - Building. Extending the world with a combination of Python and English prose will be easy and fun. It would be possible - and probably great fun - to create entire games this way. - Communication: a MUD can be a richer communication environment than a chat program, because it provides richer features for action. - Competition, for those who want it. - Exploration: If a large database is provided, exploring and mapping the world will be an interesting task. It's also a task well-suited to computer assistance, so it provides more motivation for programming. - Writing: The only way to build or communicate in a text-based environment is to write. Trying to communicate something you really want communicated is a much better way to learn to write than writing assigned papers on topics you could care less about. - Theatre: MUDs are role-playing environments, after all. I don't have a lot of experience with MUDs, and I don't feel like I can make the case for this as well as it should be made. However, I don't think this would require boys and girls to go off in separate corners. All of the activities above enhance each other, and all of them provide ample opportunity for learning and programming. There is something for everyone in there. A Python-based MOO already exists, but after glancing at it I'm not sure it's a good basis for what I'm talking about. It tries to be like LambdaMOO, which means that a newcomer has to pick up the LambdaMOO commands *and* Python at the same time. I think that would be hopelessly confusing. Something new should be created, probably as an IDLE extension so that it can use IDLE to edit Python code. I don't think I have time to develop this myself, but I might be convinced to build a starting point if other people volunteer to, e.g. build a core database. What advantage does a text-based game have over a graphical one? It's vastly easier to extend. Maybe you create a simple room like this: class Glittering_cave (room): """You are in a cave carved almost entirely out of fractured quartz. Dim light from a crack to the south reflects off of thousands of crystal planes as you move. A passage winds northwest among the crystals.""" northwest = exit(ice_cave) south = exit(tunnel5) amethyst = object("amethyst", obvious=1) glittering_cave = Glittering_cave() In a 3D game, creating this room would require, at a minimum, modeling and texturing this scene, without using more triangles than the engine can handle at a reasonable frame rate. This is a formidable task for an expert, and is generally done with custom level editors or commercial software that sells for $3000+ a seat. In that kind of environment, blurring the line between the creator and consumer is a lot more difficult. Alice has *not* addressed this problem - they do not provide a modeler useful for this sort of thing. Just my $0.02, Dave From siegel@eico.com Fri Apr 28 16:30:19 2000 From: siegel@eico.com (Arthur Siegel) Date: Fri, 28 Apr 2000 11:30:19 -0400 Subject: [Edu-sig] Articles of possible interest Message-ID: >>Funny. I thought we were talking about programming and CP4E. Have I missed something again? If so, I would appreciate elaboration. From jmax@portal.ca Fri Apr 28 16:35:37 2000 From: jmax@portal.ca (John Maxwell) Date: Fri, 28 Apr 2000 08:35:37 -0700 (PDT) Subject: [Edu-sig] Articles of possible interest In-Reply-To: <20000428160042.7AF541CDCB@dinsdale.python.org> from "edu-sig-request@python.org" at Apr 28, 2000 12:00:42 PM Message-ID: <200004281535.IAA03124@cr366361-a.crdva1.bc.wave.home.com> David Scherer wrote: > Let me make a specific, if rough around the edges, suggestion: a > Python-based MUD/MOO. Yow! Ther's an interesting idea. But you know, I want to argue against it -- LambdaMOO is such a nice system already, and has a very, very nice language (though, appropriately, much more limited in domain than Python), what I think we maybe need is Python-MOO integration... maybe a MOO-Zope integration. THAT would be truly cool. > I don't have a lot of experience with MUDs, and I don't feel like I can make > the case for this as well as it should be made. However, I don't think this > would require boys and girls to go off in separate corners. Absolutely! As Amy Bruckman's copious writings (not to mention a goodly amount of the rest of the MOO/MUD literature) point out, there is relatively little gender barrier in MOO. If anyone is interested in this, Bruckman's dissertation (http://www.cc.gatech.edu/~asb/thesis) has some amazing material covering adolescent girls programming interactive agents. The CP4E community really needs to be aware of this work. - John Maxwell jmax@portal.ca ------------------------------------------------ Multimedia Ethnographic Research Lab (MERLin) University of British Columbia, Canada From jhrsn@pop.pitt.edu Fri Apr 28 18:19:19 2000 From: jhrsn@pop.pitt.edu (James Harrison) Date: Fri, 28 Apr 2000 13:19:19 -0400 Subject: [Edu-sig] On the front page (in defense of Alice) In-Reply-To: Message-ID: One last response from me :-) ... I don't really think you're off base in your Alice comments. Instead, they point out several potential areas of confusion that people with different backgrounds and agendas may encounter as they discuss computer-based education. I heard Randy Pausch (Alice's project director) do a presentation on Alice earlier this year and it was clear to me from that session that his real interest was in interface design. Alice as he has constructed it represents an experiment in interface design that is all about making a task that is complex for computer users (3D world construction) easier. Part of his rationale is that 3D worlds, at least some types of them, may best be built by artists and designers rather than engineers, but current tools require a user with an engineering mindset. This removes a large segment of potential authors who might make important contributions. His research in the construction of Alice has involved issues such as how non-engineering people think about the orientation of objects and movement in three dimensions. Understanding this informs tool design and even the choice of words for menus. With relation to education, Alice is used at CMU in a course in "human-computer interaction" in which artists and designers are paired with engineers in the construction of example 3D worlds using Alice. This common task creates an environment in which the two groups from different backgrounds experience how each other thinks about using the computer as a tool. Alice also might be a useful tool for creating 3D worlds that teach. The important issue here is that educators who are not engineers might be able to use a tool like Alice themselves to create worlds which are educational simulations. With additional development, a the tool might be able to create worlds rapidly with sufficient detail to teach a variety of topics including those of traditional general educational and others related to dangerous environments or medical procedures that are difficult to practice in reality. Some of Alice's concepts might also be useful in teaching computer programming. By providing an environment where the results of code are clearly displayed as object creation, object characteristics and movement, the elements of program logic could be effectively displayed. This would also be a good environment to introduce OOP concepts because object attributes and methods in code map logically to visual characteristics and capabilities of VR objects. Such an environment could be interesting and strongly reinforcing for younger students. I think this possibility has caught Guido's and other's imaginations. Alice in its current incarnation wasn't really designed for teaching programming, though it could inform such a system. IMHO, the real issue is which elements of Alice should be incorporated into an IDE that could be a pleasure for novices to use and could draw them into a fascination with the capabilities and power of programming--whether or not the job at hand involves manipulation of VR objects in 3 dimensions, text characters in one dimension or numbers in n dimensions. Jim Harrison University of Pittsburgh From dscherer@cmu.edu Fri Apr 28 22:29:51 2000 From: dscherer@cmu.edu (David Scherer) Date: Fri, 28 Apr 2000 17:29:51 -0400 Subject: [Edu-sig] Articles of possible interest In-Reply-To: <200004281535.IAA03124@cr366361-a.crdva1.bc.wave.home.com> Message-ID: > Yow! Ther's an interesting idea. But you know, I want to argue against it > -- LambdaMOO is such a nice system already, and has a very, very nice > language (though, appropriately, much more limited in domain than Python), > what I think we maybe need is Python-MOO integration... maybe a MOO-Zope > integration. THAT would be truly cool. I hope you will elaborate on the latter, but I still believe that an *entirely* Python MOO would be an extremely useful tool for teaching programming, precisely because Python is not "limited in domain." Beginning programmers struggle with language syntax and semantics - it is only later, after one or more languages have been mastered, that people begin to abstract away the differences. Learning multiple languages is powerful and important, but needing to deal with multiple languages *right away* is a big problem. Python's strength for CP4E is that it is both easy to learn and general-purpose. Python is powerful enough to be the *implementation* language for a MOO server, as well as the scripting language. I think that a MOO could be carefully designed so that as students advance they can go from simply exploring the world ("take apple") to extending the world ("class apple:") all the way to extending the implementation ("class emailPager:"). Learning a MOO language would teach someone the fundamentals of programming, but it would leave them powerless to apply them in the REAL world. That's fine if you are a highly motivated person who will pick up and learn other programming languages - but "Everyone" will not do that. On the other hand, it's a small step from using Python to manipulate a MOO environment to using it to manipulate other things. > Bruckman's dissertation (http://www.cc.gatech.edu/~asb/thesis) has some > amazing material covering adolescent girls programming interactive agents. > The CP4E community really needs to be aware of this work. Indeed. I had seen this before, but couldn't remember the reference in support of my previous post. Dave From siegel@eico.com Fri Apr 28 22:34:17 2000 From: siegel@eico.com (Arthur Siegel) Date: Fri, 28 Apr 2000 17:34:17 -0400 Subject: [Edu-sig] Articles of possible interest Message-ID: > Yow! Ther's an interesting idea. But you know, I want to argue against it > -- LambdaMOO is such a nice system already, and has a very, very nice > language (though, appropriately, much more limited in domain than Python), > what I think we maybe need is Python-MOO integration... maybe a MOO-Zope > integration. THAT would be truly cool. Would be. My hope is that is whatever is done is done with as little overhead as possbile. My niece's radio. She's wasn't going to use it to listen to her favorite group. But was excited and proud. She knew that this was a self-sufficient stand alone real working radio, that she had built. Core technology. Why am I so convinced that getting the kids as close to the core as we can is what would both most excite them and be most responsible as educators? Whether 3D or chat or anything else. I understand well its all a matter of degree, as we has been said. And am trying not to be a fundamentalist. But I do believe that Python, IDLE, and maybe 100 lines of code could be a great curriculum. From fig@oreilly.com Sat Apr 29 00:08:10 2000 From: fig@oreilly.com (Stephen R. Figgins) Date: Fri, 28 Apr 2000 16:08:10 -0700 Subject: [Edu-sig] Women and Computing Message-ID: <200004282308.QAA11610@rock.west.ora.com> Speaking of stories about women and computing.... Those wishing to have some stories to tell to girls in their classes should check out the PBS Special Minerva's Machine, or the ACM's online complimentary website at: http://www.acm.org/minerva Or the University of Alberta's overview at: http://www.ualberta.ca/~nfriesen/582/into.htm Or, moving beyond the computer, here is information on 4000 years of Women in Science: http://crux.astr.ua.edu/4000WS/ And then there is the Ada Project: http://www.cs.yale.edu/~tap/tap.html And of course, the ever popular girlgeeks.com http://www.girlkeeks.com Well, just so you know that there are stories to be found, stories to be told. There are famous women mathemeticians, scientists, programmers, engineers. Well, they would be famous, if we told their stories more. Stephen From redbird@rbisland.cx Sat Apr 29 04:12:39 2000 From: redbird@rbisland.cx (Gordon Worley) Date: Fri, 28 Apr 2000 23:12:39 -0400 Subject: [Edu-sig] More on RPN example In-Reply-To: <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> References: <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> Message-ID: At 5:59 PM -0700 4/27/2000, Kirby Urner wrote: > >At the moment there is not documentation, which will hopefully be >>forthcomming, but the text-based python program (thus cross platform) >>does have some online help will get one started. Also, more advanced > >I use IDLE. I downloaded your modules. I can import them, but >what to do next? Seems it'd take about 60 seconds to write a >few lines showing a sample interaction in > >>>> user types >computer replies >>>> user types >computer replies > >format. Maybe post that here and do a link from your web page >to the edu-sig archives. Well, taking 60 seconds seems a bit much to load and perform a single operation (on my computer and the Windows boxen at school the program has run practically instantaniously). Instructions; hmm, let's see. Start by running rb_rpn.py (or just call it's main() function); this starts the current text based interface (I'm on a Mac and Tk support isn't that great, so I wanted a text-based interface first so that anyone can participate and I could do development (if someone would like to develop a Tk calculator interface, I'd be more than willing to accept the submition or help one in using my modules to create said calculator)). I think that the online help (reached by typing '?' when at the main propmt) is pretty clear as to how each mode works, but I'll provide some examples anyway. Before doing that, though, here are the available operators: + add x and y registers - subtract x from y * multiply x and y / divide y by x % modulo y by x ^ raise y to the x power doubling above opperators (++, %%, etc.) will cause operation to affect all registers -> roll registers x through t up <- roll registers x through t down a-> roll entire stack up a<- roll entire stack down <> flip x and y resiters pop pop stack popall empty the stack lastx get the last x value (does not work in interactive mode) The three modes work like this: interactive: i: [enter numbers here] i: [enter more numbers or do operations] ...keep doing this forever, if one'd like static: stack: [enter values to be put in stack, bottom to top, seperated by spaces] opperators: [enter operators, seperated by spaces] ...these cycle back and force, returning results on the second, until the mode is left expression: exp: [enter RPN expression as it would be written on paper (i.e. 4 5 + 3 -), seperating each number or operator with spaces] And that's it. I hope that gets those of you interested started. I'll be included this documentation with a new release of the scripts that I should be making tonight or sometime over the weekend, and that should hopefully get you started. Also, I'm not an IDLE user (doesn't run on the Mac) and thus don't know how it works, but you may find it easier to run these scripts from the interperter directly, if IDLE is anything like IDE on the Mac when asking for user input. >That'd be a big help. To expect such minimal documentation is >not unreasonable, and really shouldn't take more than a few >minutes of your time. Well, if a few means ten, then I guess this documentation qualifies. In case anyone didn't see the first post, here is the address for where to download the scripts: . Oh, and just incase this produces problems, the files may be using carrage returns at the end of each line rather than what one's OS expects depending on how one's version of tar is configured. -- - Gordon Worley http://www.rbisland.cx/ mailto:redbird@rbisland.cx From pdx4d@teleport.com Sat Apr 29 16:49:46 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Sat, 29 Apr 2000 08:49:46 -0700 Subject: [Edu-sig] More on RPN example In-Reply-To: References: <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> Message-ID: <3.0.3.32.20000429084946.0316418c@pop.teleport.com> >And that's it. I hope that gets those of you interested started. >I'll be included this documentation with a new release of the scripts >that I should be making tonight or sometime over the weekend, and >that should hopefully get you started. Also, I'm not an IDLE user >(doesn't run on the Mac) and thus don't know how it works, but you >may find it easier to run these scripts from the interperter >directly, if IDLE is anything like IDE on the Mac when asking for >user input. Gordon -- Thanks for the boost. It was just that initial hurdle of knowing which module to import (I'd guess wrong), which made it seem difficult. To be very detailed: I created a subdirectory under Python called \rpn into which I unzipped your py files. Then I went: >>> import sys >>> sys.path.append(".\\rpn") >>> import rb_rpn That last command automatically triggered main() -- main() being the last line in the module -- and got me your prompt. The following is the first several lines of my session (I also explored other modes of course): Red Bird's RPN 0.4.1 Type i for interactive mode, s for static mode, e for expression mode, ? for help, or q to quit or leave mode (when in one). :e expression mode exp:4 3 + [4.0] [3.0, 4.0] [3.0, 4.0] 4 3 + [7.0] exp:4 5 * 2 + [4.0] [5.0, 4.0] [5.0, 4.0] 4 5 * [20.0] [2.0, 20.0] [2.0, 20.0] 20 2 + [22.0] As you can see, the program runs just fine in IDLE, which is just like the standard interpreted environment except color coded (computer output text in blue, my entered expressions in black). In the Windows environment, it's a choice between IDLE and a DOS box. As I've posted to edu-sig before, I see no real advantages to using DOS box Python for any purpose (unless that's all you've got) as IDLE gives the exact same experience (of using Python interactively), just in a much friendlier environment. As for Tk, I think the obvious thing, which might be fun to do, would be to wrap a simple RPN calculator interface around your modules. I always prefered Hewlett-Packards RPN calculators to TI's parentheses-infested ones. You have an Enter key to push a value on the stack, which is 4 levels deep. Even had a roll key for rolling values around. E.g. 3 [enter] 4 + gets you 7 (in bottom stack position). After you hit [enter] the first time, 3 is in the "y" position on the stack (2nd level), with a copy in "x" i.e.: 3 [enter] 4 + Stack a: a: a: a: z: z: z: z: y: y: 3 y: 3 y: ? x: 3 x: 3 x: 4 x: 7 <-------- visible What I'm forgetting (hence the question mark) is if the 3 stays in the y: position, so that repeated pressing of the + key gets you 10, 13, 16... (don't have a Hewlett-Packard around to test). Anyway, the important point is that the bottom of the stack is likewise what's displayed on the calculator. With tkinter (the Python wrapper to Tk), you'd just make some buttons in a frame, and have a read-only display box. If I were doing this, I'd add a prominent Enter key and basically emulate HP's most excellent design. GUI RPN calculators are already out there -- this wouldn't be the first or necessarily the fanciest. But it'd be a good example of how to use Tk with Python. A fun project. Conway's Game of Life is another one I'm thinking about doing (probably won't have time for either -- wouldn't be surprised if the latter had already been done (which doesn't mean I wouldn't do it again, as the point is learning, not being the one and only to have ever done something)). Kirby PS: my Python version of the Sieve of Erasthosthenes (another classic thing to do in any computer language) is now linked from the Prime Pages. See: http://www.utm.edu/research/primes/programs/Eratosthenes/ From ajs@ix.netcom.com Sat Apr 29 16:43:02 2000 From: ajs@ix.netcom.com (Arthur Siegel) Date: Sat, 29 Apr 2000 11:43:02 -0400 Subject: [Edu-sig] EDU-SIG activity References: <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> Message-ID: <001001bfb1f1$9db85040$b7e16dd1@oemcomputer> The transition from polemicist to community activist may not be an appropriate one to try to make. But I'd like to try. And volunteer to be a (value-free) recording secretary for EDU-SIG, trying to assemble and package links of any kind that folks find relevant to the subject of Python and education. Shot-gun approach. Highly relevant to tangentially relevant - technical, polemic, docs or code. I do not intend to do any editing of anything. Just assembe and pass along to folks in the position of Guido and Stephen, let's say, to edit as they see fit for relevancy to the EDU-SIG page or O'Reilly. I am just looking to do some grunt work here. Make me do it. So am asking folks to post up cites with a line or two discription. I will also search the EDU-SIG archives. And I'll start - I consider Numeric and related documentation highly relevant: home: http://numpy.sourceforge.net/ on-line docs: http://numpy.sourceforge.net/numpy.pdf From rlatimer@mirage.tjhsst.edu Sun Apr 30 00:50:15 2000 From: rlatimer@mirage.tjhsst.edu (Randy Latimer) Date: Sat, 29 Apr 2000 18:50:15 -0500 (EST) Subject: [Edu-sig] Articles of possible interest In-Reply-To: Message-ID: David - Randy Latimer here from TJ...If you want to do some "end-of-year" Python let me know, I think we could implement it pretty easy. It'd be a good experiment. Randy L. On Fri, 28 Apr 2000, David Scherer wrote: > > Yow! Ther's an interesting idea. But you know, I want to argue against it > > -- LambdaMOO is such a nice system already, and has a very, very nice > > language (though, appropriately, much more limited in domain than Python), > > what I think we maybe need is Python-MOO integration... maybe a MOO-Zope > > integration. THAT would be truly cool. > > I hope you will elaborate on the latter, but I still believe that an > *entirely* Python MOO would be an extremely useful tool for teaching > programming, precisely because Python is not "limited in domain." > > Beginning programmers struggle with language syntax and semantics - it is > only later, after one or more languages have been mastered, that people > begin to abstract away the differences. Learning multiple languages is > powerful and important, but needing to deal with multiple languages *right > away* is a big problem. > > Python's strength for CP4E is that it is both easy to learn and > general-purpose. Python is powerful enough to be the *implementation* > language for a MOO server, as well as the scripting language. I think that > a MOO could be carefully designed so that as students advance they can go > from simply exploring the world ("take apple") to extending the world > ("class apple:") all the way to extending the implementation ("class > emailPager:"). > > Learning a MOO language would teach someone the fundamentals of programming, > but it would leave them powerless to apply them in the REAL world. That's > fine if you are a highly motivated person who will pick up and learn other > programming languages - but "Everyone" will not do that. On the other hand, > it's a small step from using Python to manipulate a MOO environment to using > it to manipulate other things. > > > Bruckman's dissertation (http://www.cc.gatech.edu/~asb/thesis) has some > > amazing material covering adolescent girls programming interactive agents. > > The CP4E community really needs to be aware of this work. > > Indeed. I had seen this before, but couldn't remember the reference in > support of my previous post. > > Dave > > > _______________________________________________ > Edu-sig mailing list > Edu-sig@python.org > http://www.python.org/mailman/listinfo/edu-sig > From jmax@portal.ca Sat Apr 29 23:25:03 2000 From: jmax@portal.ca (John Maxwell) Date: Sat, 29 Apr 2000 15:25:03 -0700 (PDT) Subject: [Edu-sig] RE: articles of possible interest In-Reply-To: <20000429160032.C19761CD8A@dinsdale.python.org> from "edu-sig-request@python.org" at Apr 29, 2000 12:00:32 PM Message-ID: <200004292225.PAA04102@cr366361-a.crdva1.bc.wave.home.com> David Scherer wrote: > > what I think we maybe need is Python-MOO integration... maybe a MOO-Zope > > integration. THAT would be truly cool. > > I hope you will elaborate on the latter, but I still believe that an > *entirely* Python MOO would be an extremely useful tool for teaching > programming, precisely because Python is not "limited in domain." > > Beginning programmers struggle with language syntax and semantics - it is > only later, after one or more languages have been mastered, that people > begin to abstract away the differences. Hmmm. I think we're diverging on the issue of the end goal. You seem to be assuming we're aiming to teach people to be programmers. I'm not sure that's the goal in and of itself... my personal take is programming as a means to greater control and understanding in an IT-dominant world -- 'literacy', if I can use that word. And if that's the goal, then a language that is very wide in domain scope may not be ideal... one with a certain degree of domain-specificity may be preferable. I think we've seen on this list many arguments for why Python is a better choice than C++ on those very grounds. The nice thing about Python is that it is very well suited to the kinds of Internet-y things that are hot these days -- parsers and GUIs and CGIs and stuff like that. The very things that we wouldn't use C++ for because it's too darned general. MOO is a further narrowing of domain, and I'm going to invoke Bruckman's work again to point out the efficacy of a very tightly-coupled language/application pair. She's got 9-year-olds programming not because you can create this or that data structure in MOOcode, but because you can do something that's immediately meaningful within that *cultural* context -- a pet dog 'bot or whatever -- in not too many lines of abstraction. Somebody the other day wrote here very eloquently about the line between interface and implementation. We're always walking one or the other with that line. Python is great because it allows us to draw it in different places. We might call it "scaffolding". Zope is a great example -- the line between interface and implementation is so blurry! And I'll agree -- if we had an entirely Python-based MOO, that would be wonderful, but I'm not sure it's the most important thing on the agenda. But Pavel Curtis' MOO succeeds by keeping the implementation layer very thin, and letting most of it happen up above, in MOO code, so the line between implementation and interface remains, in practice, fairly fuzzy there too. > Learning a MOO language would teach someone the fundamentals of programming, > but it would leave them powerless to apply them in the REAL world. I would invite you to take a critical look at what this "real world" is you're appealing to... I'm not at all convinced that it's so real out there these days :-) Seriously, though, I think it comes down to the difference between aiming to teach people "Programming", and aiming to teach them to make technology work for their own ends, whatever that might look like. - John Maxwell jmax@portal.ca ------------------------------------------------ Multimedia Ethnographic Research Lab (MERLin) University of British Columbia, Canada From redbird@rbisland.cx Sun Apr 30 05:39:52 2000 From: redbird@rbisland.cx (Gordon Worley) Date: Sun, 30 Apr 2000 00:39:52 -0400 Subject: [Edu-sig] More on RPN example In-Reply-To: <3.0.3.32.20000429084946.0316418c@pop.teleport.com> References: <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> <3.0.3.32.20000429084946.0316418c@pop.teleport.com> Message-ID: At 8:49 AM -0700 4/29/2000, Kirby Urner wrote: >As for Tk, I think the obvious thing, which might be fun >to do, would be to wrap a simple RPN calculator interface >around your modules. I always prefered Hewlett-Packards >RPN calculators to TI's parentheses-infested ones. You >have an Enter key to push a value on the stack, which >is 4 levels deep. Even had a roll key for rolling >values around. I'd very much like to do such an interface, but on the Mac that just isn't really all that fesiable right now. Rumor has it, though, that this could be changing in a week or two, so I may be posting back here soon with a nice Tk example for everyone to use. If not, I would really appreciate it if someone coded something up. >E.g. 3 [enter] 4 + gets you 7 (in bottom stack >position). > >After you hit [enter] the first time, 3 is in the "y" >position on the stack (2nd level), with a copy in "x" >i.e.: > >3 [enter] 4 + > >Stack >a: a: a: a: >z: z: z: z: >y: y: 3 y: 3 y: ? >x: 3 x: 3 x: 4 x: 7 <-------- visible > >What I'm forgetting (hence the question mark) is if >the 3 stays in the y: position, so that repeated >pressing of the + key gets you 10, 13, 16... (don't >have a Hewlett-Packard around to test). Just to clarify, the register you labeled as a is generally refered to as t in all the HP documentation that I've seen. As for what happens in the last step, x and y are operated on and the result put into x, and the other registers copy down (i.e. y =z, z=t, t=t). This is 4 Level RPN, and while nice, my program impliments something closer to RPL, which has a variable size stack of infinite length (in your examples, each of the 'empty' registers does contain a value, even if it is just zero). Anyway, submisions are welcome, especially if anyone wants to help me impliment numpy support. I'll probably get to it eventually, but it is not as immediately important as some other issues. -- - Gordon Worley http://www.rbisland.cx/ mailto:redbird@rbisland.cx From tim_one@email.msn.com Sun Apr 30 06:19:51 2000 From: tim_one@email.msn.com (Tim Peters) Date: Sun, 30 Apr 2000 01:19:51 -0400 Subject: [Edu-sig] Articles of possible interest In-Reply-To: <20000427194525.A15263@mems-exchange.org> Message-ID: <000401bfb263$b61b1d80$822d153f@tim> [Dorothea Salo, on Guido's CP4E essay in the Linux Journal supplement] > So, what are the little nippers up to, according to van Rossum? Let's > see: > > "We walk up to two girls in the back of the class who are busy > debugging a Barbie dress-up game used as an exercise." > > Excuse me while I barf. Do people really wonder why women aren't > hackers? [Greg Ward] > Yeah, I just about barfed there too. Guido, what *WERE* you > thinking?!?!? I am no big fan of "political correctness", but this > particular example was just plain dumb. Hmm. Barbie remains a 2 billion $/year business for Mattel, one of the most successful and longest-lived kids' products ever. A revealing story about how Jill Barad built this empire can be found at: http://www.businessweek.com/1998/21/covstory.htm WRT computers, software titles like "Barbie Riding Club", "Barbie Detective" and "Barbie Fashion Designer" are credited with *creating* a profitable retail market for "girl software", and remain top sellers; e.g., "On the one hand the Barbie software is great – it really opened up retailers' eyes that there was a market for these games," said Roberta Furger, author of a new book, "Does Jane Compute? Preserving Our Daughters' Place in the Cyber Revolution." At the same time, she warns, "You don't want to define the market by saying Barbie equals girls' software." There needs to be a variety of games appealing to the interests of all girls, she said. from a contemporaneous early story at: http://www.washingtonpost.com/wp-srv/frompost/feb98/girlware2.htm Mattel's current offerings are described at the condescendingly named: http://www.barbie.com/girls/softwareforgirls/ I don't make a hobby of studying the kids' software market, but I just had to respond to this one since virtually all of my friends' young daughters do in fact spend countless hours with their Barbie CDs. If you want something kids are actually interested in, watch what they do! the-day-a-girl-is-shunned-for-loving-barbie-is-the-day-i- stop-blowing-up-the-universe-ly y'rs - tim From dscherer@cmu.edu Sun Apr 30 08:00:06 2000 From: dscherer@cmu.edu (David Scherer) Date: Sun, 30 Apr 2000 03:00:06 -0400 Subject: [Edu-sig] RE: articles of possible interest In-Reply-To: <200004292225.PAA04102@cr366361-a.crdva1.bc.wave.home.com> Message-ID: > Hmmm. I think we're diverging on the issue of the end goal. You seem to be > assuming we're aiming to teach people to be programmers. I'm not sure > that's the goal in and of itself... my personal take is programming as a > means to greater control and understanding in an IT-dominant world -- > 'literacy', if I can use that word. I think the goal is to put tools in people's hands. Not to make them professional programmers or expert software engineers. Just to give them skills that they can use and build on. Someone who has only programmed in a MOO just isn't going to apply the skills they've learned to a problem that pops up in their life. Someone who takes a course that does (for example) some Python MOO programming, some Python graphics programming, and some Python Internet programming can! It's an incredibly ambitious goal to try to get "Everybody" to learn a programming language. Getting everyone to learn two is probably just impossible - so I'd like to push the Right Thing. Everything related to CP4E has to be looked at in that light: choose your battles. > And if that's the goal, then a language that is very wide in domain scope > may not be ideal... one with a certain degree of domain-specificity may > be preferable. I think we've seen on this list many arguments for why > Python is a better choice than C++ on those very grounds. The nice thing > about Python is that it is very well suited to the kinds of Internet-y > things that are hot these days -- parsers and GUIs and CGIs and stuff like > that. The very things that we wouldn't use C++ for because it's too darned > general. Python is a better choice than C++ because it is easy to learn, and because it is a more useful tool for casual programmers. There is nothing "domain-specific" about Python. Anything a nonexpert can do in any programming language, they can probably do with Python given some appropriate modules. C++ may be at the opposite end of the "power" spectrum from MOO, but someone with a year of C++ instruction is probably in the same position as someone who has played LambdaMOO for a year. They've learned a lot - but until they learn more, they can't *do* anything. In practice, C++ is useless in the hands of anyone but an expert. > MOO is a further narrowing of domain, and I'm going to invoke > Bruckman's work again to point out the efficacy of a very tightly-coupled > language/application pair. She's got 9-year-olds programming not because > you can create this or that data structure in MOOcode, but because you can > do something that's immediately meaningful within that *cultural* context > -- a pet dog 'bot or whatever -- in not too many lines of abstraction. Bruckman's work is an incredible step. My hope is that, since Python is so remarkably easy for a general-purpose language, her basic approach could be used to teach Python, which is a much more directly useful skill. > Somebody the other day wrote here very eloquently about the line between > interface and implementation. Thank you; that was me :) > And I'll agree -- if we had an entirely Python-based MOO, that would be > wonderful, but I'm not sure it's the most important thing on the agenda. > But Pavel Curtis' MOO succeeds by keeping the implementation layer very > thin, and letting most of it happen up above, in MOO code, so the line > between implementation and interface remains, in practice, fairly fuzzy > there too. MOO code is still only good for making more MOO. Having invested expensive time learning that language, you can't use it to script a graphics engine, because there isn't one in MOO. There are several for Python. You can't script a web page, you can't draw a graph, you can't control your mail client. Theoretically all of these things could be integrated with the MOO language, and perhaps a few of them have, but Python is a far better tool for that sort of thing. You wouldn't choose MOO to write a symbolic differentiator in calculus class or an orbit simulator in physics, but both of those would be accessible projects for Python-literate students. Of course, there's a great danger that even people who learn Python won't go on to do these things. One of the big goals of CP4E needs to be connecting its "graduates" to the resources and community they will need when they ask "can I use Python to do *this*?" That's another place where I think a "Python MOO" could serve - if there were a centralized server like Moose Crossing for Python, Python experts would surely gather there. I think that a world implemented and immediately extensible in Python would be a great place to learn, teach, and talk about Python. > n Bridge of Death You are standing on a rickety bridge over the Gorge of Eternal Peril. The bridgekeeper blocks your way. The bridgekeeper says, "STOP!" The bridgekeeper asks, "What is your name?" > Dave From fig@oreilly.com Sun Apr 30 15:16:55 2000 From: fig@oreilly.com (Stephen R. Figgins) Date: Sun, 30 Apr 2000 07:16:55 -0700 Subject: [Edu-sig] RE: articles of possible interest In-Reply-To: Your message of "Sun, 30 Apr 2000 03:00:06 EDT." References: Message-ID: <200004301416.HAA23225@rock.west.ora.com> >"Python MOO" could serve - if there were a centralized server like Moose >Crossing for Python, Python experts would surely gather there. I think that >a world implemented and immediately extensible in Python would be a great >place to learn, teach, and talk about Python. Has anyone metioned POO yet? Maybe I missed it. http://www.strout.net/python/poo/doc.html I haven't played with poo (ick!) but it might make a good starting place for those interested in Python Moo development. Stephen Figgins fig@oreilly.com From fig@oreilly.com Sun Apr 30 15:45:51 2000 From: fig@oreilly.com (Stephen R. Figgins) Date: Sun, 30 Apr 2000 07:45:51 -0700 Subject: [Edu-sig] RE: articles of possible interest In-Reply-To: Your message of "Sun, 30 Apr 2000 07:16:55 PDT." <200004301416.HAA23225@rock.west.ora.com> References: <200004301416.HAA23225@rock.west.ora.com> Message-ID: <200004301445.HAA23452@rock.west.ora.com> Ah, and one more, MOOP, this one found lurking in the vaults. http://www.accessoft.com/moop/ It has a more pleasant acronym. That said, I find news forums a more interesting place to meet others and learn about programming, and it has the added benefit of being archived. In a chat or moo, the conversation is often lost, and because of when you logged on, or what room you are in at the moment, your questions might not reach the right eyes. And if I am to take the time building interactive objects in Python, I think I would like them to be more visible to the world. What if we thought of the web itself as a giant moo? With each site as its own sort of room? Or, perhaps think of the web as a medium for delivering a moo? The moo could be built in a distributed environment, all that would be needed is some sort of moo servlet that can pass on state to other moo servlets running on the web... Digressing further, I have always thought that the web itself is an excellent eduactional medium. Learning to manipulate and extend it can be very useful, and the tools that you might use to do that are wide open, because you are really dealing with open protocols, standards. The language you use to do that could be anything. Most Education and the Web books and articles have focussed on using the web as a research tool. But it is also a real world environment that is open to scripting. Stephen Figgins fig@oreilly.com From fig@oreilly.com Sun Apr 30 15:53:15 2000 From: fig@oreilly.com (Stephen R. Figgins) Date: Sun, 30 Apr 2000 07:53:15 -0700 Subject: [Edu-sig] RE: articles of possible interest Message-ID: <200004301453.HAA23576@rock.west.ora.com> In yet another followup to my own post! >Digressing further, I have always thought that the web itself is an >excellent eduactional medium. ^^^^^^^^^^^ I like this typo. Wish I could say it was intentional. Programming the web is definitely eduactional! Stephen Figgins fig@oreilly.com From pdx4d@teleport.com Sun Apr 30 16:02:16 2000 From: pdx4d@teleport.com (Kirby Urner) Date: Sun, 30 Apr 2000 08:02:16 -0700 Subject: [Edu-sig] More on RPN example In-Reply-To: References: <3.0.3.32.20000429084946.0316418c@pop.teleport.com> <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> <3.0.3.32.20000427175904.032fbca8@pop.teleport.com> <3.0.3.32.20000429084946.0316418c@pop.teleport.com> Message-ID: <3.0.3.32.20000430080216.031c2524@pop.teleport.com> >Just to clarify... Yeah, that rings a bell. No HP calc docs in my possession. I got into the HP65 in high school with friend Michael Brodheim (his dad a road engineer in the Philippines) -- one of the first programmables. Later my parents got me an HP45 while traveling through Portland (quite expensive in those days). The HP and WFF'N PROOF, a logic game using dice, are my two main exposures to RPN. Thanks. Kirby From Jtsswim@aol.com Sun Apr 30 18:00:02 2000 From: Jtsswim@aol.com (Jtsswim@aol.com) Date: Sun, 30 Apr 2000 13:00:02 EDT Subject: [Edu-sig] RE: articles of possible interest Message-ID: In a message dated 4/30/2000 2:59:45 AM Eastern Daylight Time, dscherer@cmu.edu writes: > > Hmmm. I think we're diverging on the issue of the end goal. You seem to be > > assuming we're aiming to teach people to be programmers. I'm not sure > > that's the goal in and of itself... my personal take is programming as a > > means to greater control and understanding in an IT-dominant world -- > > 'literacy', if I can use that word. > > I think the goal is to put tools in people's hands. Not to make them > professional programmers or expert software engineers. Just to give them > skills that they can use and build on. Someone who has only programmed in a > MOO just isn't going to apply the skills they've learned to a problem that > pops up in their life. Someone who takes a course that does (for example) > some Python MOO programming, some Python graphics programming, and some > Python Internet programming can! > > It's an incredibly ambitious goal to try to get "Everybody" to learn a > programming language. Getting everyone to learn two is probably just > impossible - so I'd like to push the Right Thing. Everything related to > CP4E has to be looked at in that light: choose your battles. > > > And if that's the goal, then a language that is very wide in domain scope > > may not be ideal... one with a certain degree of domain-specificity may > > be preferable. I think we've seen on this list many arguments for why > > Python is a better choice than C++ on those very grounds. The nice thing > > about Python is that it is very well suited to the kinds of Internet-y > > things that are hot these days -- parsers and GUIs and CGIs and stuff like > > that. The very things that we wouldn't use C++ for because it's too darned > > general. > > Python is a better choice than C++ because it is easy to learn, and because > it is a more useful tool for casual programmers. There is nothing > "domain-specific" about Python. Anything a nonexpert can do in any > programming language, they can probably do with Python given some > appropriate modules. > > C++ may be at the opposite end of the "power" spectrum from MOO, but someone > with a year of C++ instruction is probably in the same position as someone > who has played LambdaMOO for a year. They've learned a lot - but until they > learn more, they can't *do* anything. In practice, C++ is useless in the > hands of anyone but an expert. > > > MOO is a further narrowing of domain, and I'm going to invoke > > Bruckman's work again to point out the efficacy of a very tightly-coupled > > language/application pair. She's got 9-year-olds programming not because > > you can create this or that data structure in MOOcode, but because you can > > do something that's immediately meaningful within that *cultural* context > > -- a pet dog 'bot or whatever -- in not too many lines of abstraction. > > Bruckman's work is an incredible step. My hope is that, since Python is so > remarkably easy for a general-purpose language, her basic approach could be > used to teach Python, which is a much more directly useful skill. > > > Somebody the other day wrote here very eloquently about the line between > > interface and implementation. > > Thank you; that was me :) > > > And I'll agree -- if we had an entirely Python-based MOO, that would be > > wonderful, but I'm not sure it's the most important thing on the agenda. > > But Pavel Curtis' MOO succeeds by keeping the implementation layer very > > thin, and letting most of it happen up above, in MOO code, so the line > > between implementation and interface remains, in practice, fairly fuzzy > > there too. > > MOO code is still only good for making more MOO. Having invested expensive > time learning that language, you can't use it to script a graphics engine, > because there isn't one in MOO. There are several for Python. You can't > script a web page, you can't draw a graph, you can't control your mail > client. Theoretically all of these things could be integrated with the MOO > language, and perhaps a few of them have, but Python is a far better tool > for that sort of thing. You wouldn't choose MOO to write a symbolic > differentiator in calculus class or an orbit simulator in physics, but both > of those would be accessible projects for Python-literate students. > > Of course, there's a great danger that even people who learn Python won't go > on to do these things. One of the big goals of CP4E needs to be connecting > its "graduates" to the resources and community they will need when they ask > "can I use Python to do *this*?" That's another place where I think a > "Python MOO" could serve - if there were a centralized server like Moose > Crossing for Python, Python experts would surely gather there. I think that > a world implemented and immediately extensible in Python would be a great > place to learn, teach, and talk about Python. I agree, but why use some integration of Python with something else when Python itself is easy enough to learn without dumbing it down. The idea of CP4E is to allow someone after a class or two to be able to write a program which solves a problem such as a mathematical expression or a game which will allow his/her friends to play and maybe even wow at his/her ability. The game would not even need to be graphical. I know of dozens of Computer Science I and II students at Yorktown who use a non-graphical Linux prompt (vim) for programming python over something like GNOME's gedit, or windows notepad. When they need to see if something will work they test in the interactive interpreter and then see their mistake. They then easily fix it because they saw an error, or if they don't understand they check their book online (Downey, Elkner and Zadka; How To Think Like a Computer Scientist -- Python Edition available at http://yhslug.tux.org/obp/thinkCS/thinkCSpy/index.htm). This book is a translation from a C++ version for the US Advanced Placement class. First, it is very easy to understand because the writer is a teacher NOT a programmer. It also allows an easy transition to the higher class because the styles are similar. In addition there are students who just sit down and learn Python on their own because they had taken Computer Science I and II when the Language in use was C++. I actually happen to be one of those. Right now I am learning, Python, Zope/DTML, and Networking all in 1 class at Yorktown. This a choice a finished "CP4E" Student could go to, but this class is flexible because the student creates their curriculum by keeping a webpage such as http://yhslug.tux.org/bus_cs/csc/home/jason_straw which gives a set of goals and a set of accomplishments. For More Information on any Computer Science Classes at Yorktown see: http://yhslug.tux.org/bus_cs/csc/ For More Information on Yorktown High School's Open Book Project; Including: How to Think Like a Computer Scientist. HTML Programming and Python Resources see: http://yhslig.tux.org/obp To Learn about Yorktown High School's Linux User Group see: http://yhslug.tux.org To contact the Computer Sciences Department at Yorktown send mail to: jelkner@yorktown.arlington.k12.va.us or jstraw@yorktown.arlington.k12.va.us |----------------------------------------------| |Yorktown Webmaster Jason Straw| |jstraw@yhspatriot.yorktown.arlington.k12.va.us| |Please quote me in your reply | |#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-| From dscherer@cmu.edu Sun Apr 30 19:41:03 2000 From: dscherer@cmu.edu (David Scherer) Date: Sun, 30 Apr 2000 14:41:03 -0400 Subject: [Edu-sig] RE: articles of possible interest In-Reply-To: <200004301445.HAA23452@rock.west.ora.com> Message-ID: Stephen Figgins writes: > Has anyone metioned POO yet? Maybe I missed it. > > http://www.strout.net/python/poo/doc.html > > I haven't played with poo (ick!) but it might make a good starting > place for those interested in Python Moo development. and then: > Ah, and one more, MOOP, this one found lurking in the vaults. > > http://www.accessoft.com/moop/ > > It has a more pleasant acronym. The acronym may be the biggest difference - MOOP seems to be based closely on the POO codebase. I've played with POO (though not with MOOP - I couldn't find a place to download it!), and I mentioned that in my first post on this topic. The POO code would undoubtedly come in handy in writing a system like I describe, but the existing system has some serious shortcomings as a first experience for novice programmers. It tries to be friendly to people who already know LambdaMOO, which has the side effect that you need to understand both "@set foo to 42" and "foo=42". > That said, I find news forums a more interesting place to meet others > and learn about programming, and it has the added benefit of being > archived. In a chat or moo, the conversation is often lost, and > because of when you logged on, or what room you are in at the moment, > your questions might not reach the right eyes. A MOO would complement archived forums, not replace them. A newsgroup is by far a better place to say, "I'm working on an X, and I need to do Y with module Z. I keep running into A; does anyone have any experience with that?" A MOO is a better place to say, "Hey, look at this! How does this thing work? I wonder if I could use that for X? Anyone here know where I can find a tutorial on Y? What have you been working on lately? Is there any way I can help out with that?" http://www.cc.gatech.edu/~asb/papers/convergence.html is one of Amy Bruckman's papers, from before "Moose Crossing." I think it makes this argument more effectively than I can. http://www.cc.gatech.edu/fac/Amy.Bruckman/thesis/4-collaborative-learning.ht ml#4.1 is also a vivid example of how supportive a MOO environment can be. > And if I am to take the time building interactive objects in Python, I > think I would like them to be more visible to the world. What if we > thought of the web itself as a giant moo? With each site as its own > sort of room? It seems to me that there's an important difference between a MOO and the web. The web technology is built around a "publisher/reader" model, and MOOs are built around a much more fundamentally interactive one. From the first paper I linked to above: | If [VR environments are] "interactive," it is in the limited sense that | most hypertext systems are interactive: there are multiple paths | through the material, and the system has a limited ability to react | to the user. However, the ways in which the system reacts are designed | by the artists and engineers who constructed it and not by the users. There's also a big difference in the level of social contact involved. Two people looking at the same web site don't ever come in contact with each other, or with the site's author. Even at sites that provide forums, the vast majority of visitors lurk. For example, there are 164 people subscribed to edu-sig right now, and others reading the archives. Since 2/1, there have been roughly 420 posts by 63 people. (Hi, lurkers! :) Dave From Jtsswim@aol.com Sun Apr 30 20:07:09 2000 From: Jtsswim@aol.com (Jtsswim@aol.com) Date: Sun, 30 Apr 2000 15:07:09 EDT Subject: [Edu-sig] RE: articles of possible interest Message-ID: <63.4f0e99f.263dde5d@aol.com> In a message dated 4/30/2000 2:41:04 PM Eastern Daylight Time, dscherer@cmu.edu writes: > Even at sites that provide forums, the vast majority of visitors lurk. For > example, there are 164 people subscribed to edu-sig right now, and others > reading the archives. Since 2/1, there have been roughly 420 posts by 63 > people. (Hi, lurkers! :) Now that's a thought...some of us, like my self wait for a time then talk, or they don't need questions answered on that list they just need a place to read about what is going on. |----------------------------------------------| |Yorktown Webmaster Jason Straw| |jstraw@yhspatriot.yorktown.arlington.k12.va.us| |Please quote me in your reply | |#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-| From jmax@portal.ca Sun Apr 30 19:40:37 2000 From: jmax@portal.ca (John Maxwell) Date: Sun, 30 Apr 2000 11:40:37 -0700 (PDT) Subject: [Edu-sig] RE: Articles of possible interest In-Reply-To: <20000430160025.F26C01CD9C@dinsdale.python.org> from "edu-sig-request@python.org" at Apr 30, 2000 12:00:25 PM Message-ID: <200004301840.LAA00831@cr366361-a.crdva1.bc.wave.home.com> David Scherer wrote: Stephen R. Figgins wrote: > Has anyone metioned POO yet? Maybe I missed it. > Ah, and one more, MOOP, this one found lurking in the vaults. Haha. Same project! Good decision to change the acronym, methinks! > That said, I find news forums a more interesting place to meet others > and learn about programming, and it has the added benefit of being > archived. In a chat or moo, the conversation is often lost, and > because of when you logged on, or what room you are in at the moment, > your questions might not reach the right eyes. Precisely the reason for my earlier plea for a Zope-MOO integration (or a Zope-Poo integration, I guess). We used to have a MOO project for teachers where they could build website objects (essentially just URLs) that could be used to show webpages to groups of people in real time (like a synchronized slide show) or like books in a library that you could look at on your own. The idea was to try to leverage the MOO for both synchronous (chat-like) and asynchronous (mail- or list-like) purposes. Now, MOO does an unparalled job (IMHO) of the synchronous stuff, but something like Zope has it hands down for asynchronous groupwork. To be able to merge the functionality would be fabulous. > And if I am to take the time building interactive objects in Python, I > think I would like them to be more visible to the world. What if we > thought of the web itself as a giant moo? With each site as its own > sort of room? Or, perhaps think of the web as a medium for delivering > a moo? The moo could be built in a distributed environment, all that > would be needed is some sort of moo servlet that can pass on state to > other moo servlets running on the web... OK, right, exactly, and -- to actually bring it back to relevance for CP4E -- the big picture is an object-based distributed environment for our programming tasks. Both your synchronous and asynchronous interactions (and the objects that make them go) are *situated* -- you're not working on your hard drive or your desktop, you're working in a virtual environment. I think this is the feature that makes Amy Bruckman's adolescent programmers tick... that they're not coding scripts to do things on a desktop or a disk, but rather within a shared virtual space. The Web is such a space (though rather flat). MOOs and MUDs are much richer environments. I'm loving working with Zope right now, because it starts to look like these two things are getting closer together... it's not just pages and files, it's objects and behaviours. If it actually can be distributed across servers -- Python being the glue -- then we'd really have something. My standard_html_header object should be able to refer to my player object, right? And vice-versa? - John Maxwell jmax@portal.ca ------------------------------------------------ Multimedia Ethnographic Research Lab (MERLin) University of British Columbia, Canada From dscherer@cmu.edu Sun Apr 30 20:41:17 2000 From: dscherer@cmu.edu (David Scherer) Date: Sun, 30 Apr 2000 15:41:17 -0400 Subject: [Edu-sig] RE: articles of possible interest In-Reply-To: <63.4f0e99f.263dde5d@aol.com> Message-ID: I wrote: > Even at sites that provide forums, the vast majority of > visitors lurk. Jason Straw responded: > Now that's a thought...some of us, like my self wait for a time > then talk, or > they don't need questions answered on that list they just need a place to > read about what is going on. That is, more or less, my point - and it isn't at all a criticism of the "lurkers". An archived forum lies somewhere in between personal communication and publishing. It doesn't make sense to contribute except when you think you have something particularly important to add to the conversation. There's obviously a place for such environments, and I'm certainly not calling for decreasing the signal-to-noise ratio of mailing lists and newsgroups! There's also a place for environments in which speech is transient, real-time, and personal, and where passers-by can be actively drawn into conversation. Some such environments exist in real life: a good classroom is an example. Unfortunately, "Everyone" does not, and will not forseeably have access to a community of fellow Python users in real life. Dave