From tom@malcolmson.com Tue Apr 3 18:21:59 2001 From: tom@malcolmson.com (Tom) Date: Tue, 3 Apr 2001 13:21:59 -0400 Subject: [Edu-sig] Looking for feedback on new Python training software Message-ID: I've been working on some software that monitors the activity of running python applications, and that I think (hope) could be valuable for teaching Python. www.malcolmson.com/pyspy Before Python I learned C++. This was a mistake: I should have learned Python first (and maybe last). But for any computer language, it seems to me that learning and mastering the language would be greatly fascilitated by a better understanding of what is happening when you run your program. So I decided to write an application that would visualize this, showing what was happening (in terms of objects, references, functions, etc.) when a Python program ran. Now I've ended up with something both more and less than I intended. More because I think it could develop into a variety of different tools. Less because I've been so busy with the core that I haven't done much on the GUI. But maybe that's OK, because I don't have experience with training or education so I'm probably not the best person to write an educational interface. I should probably stick to the core and let somebody else write the UI. This leaves me a bit uncertain about how to proceed, so I appreciate your comments and suggestions, Thanks, Tom. From pdx4d@teleport.com Thu Apr 5 23:45:42 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 05 Apr 2001 15:45:42 -0700 Subject: [Edu-sig] Integration of Math + IT: a "good thing" In-Reply-To: Message-ID: <3.0.3.32.20010405154542.01565d2c@pop3.norton.antivirus> Originally posted to math-teach at the Math Forum. One typo fixed. This thread got its start in quotes from the Singapore math curriculum docs (Singaporeans score relatively high on global math surveys), which advocates integration of math with IT (Information Technology) -- although, in practice, this seems to have more to do with learning biz apps, than with CP4E. Kirby ===================== Subject: Integration of Math + IT: a "good thing" Author: Kirby Urner Date: 5 Apr 01 00:18:37 -0400 (EDT) Ronald D. Ferguson wrote: > With the "perfection" of CASE tools, computer algebra systems, > and "natural language" interfaces, perhaps the day will arrive > when we are all programmers, and all mathematicians. If this > is indeed the future, how would we describe the level of > abstraction of the resulting knowledge base? As AP comp sci course pop up at the high school level, and take control of the bulk of the computers, I think the opportunity is to boost the math content on this already-computerized side of the fence, versus waging the uphill battle to phase programming into the graphing calculator ghetto, where the necessary tools are simply absent, and where teachers are often professionally proud of their chalkboard-only approach -- downright disdainful of other technologies. Phasing more math into comp sci is not an uphill battle at all, because the core syllabus at the highest levels is comprised of such as 'The Art of Computer Programming' by Donald Knuth, a multi-volume work packed to the gills with mathematical concepts and notations, as are the "on ramp" texts (more accessible) such as 'Concrete Mathematics' (Knuth a co-author). 'The Art of...' as you must know, is built around a very low level language, MMIX (updated from MIX, to include a RISC-based instruction set), in order not to lose site of the hardware underpinnings: registers and such. For this reason, we might consider 'The Art of...' to be "hard core", i.e. for comp sci majors, whereas at the secondary school level we're content to ramp up using a VHLL (very high level language) such as [fill in the blank with your favorite]. Over on the Python e-list, it's already a given for a lot of posters that they'll be teaching a comp sci course next year. A lot of them are looking for arguments to justify the switch to Python from C++ or Java -- the same thing goes on in the workplace, where pointy haired bosses are skeptical of Dilbert's idea to use Python for some next big thing. Anyway, all questions of "which language?" aside, it remains an open question for many a faculty members what to use for content. Do we dive into GUI programming right away? There's a lot you can do interactively at the command line, with programs writing directly to the console. But what's relevant to program. The game of Hang Man? The Tower of Hanoi? OK, maybe, but then what? Enter mathematics -- all that stuff you've been learning in math class must be relevant, or at least gives us a lot of ready-made grist for the mill. Probability, permutations, bases, functions, factorial, binomial coefficients, vectors, matrices... yeah, there's a lot here, and we can get into it without spending a lot of time prettifying a GUI, getting lost in the aesthetics of an interface at the cost of not learning any nuts and bolts. Because at this intro level we need to be learning about data structures, conditional execution, namespaces, objects, bits and bytes. We can overlay it with pretty GUI gizmos later -- but before we apply the frosting, we at least need some cake. What I'm hoping is that as comp sci teachers start racing ahead in linear algebra, showing students how to rotate tetrahedra and so on, math teachers will think: hey, this is the kind of stuff _we_ were supposed to be teaching. Why should we have to "make do" with these graphing calculators, while the programmers get to play with VRML plug-ins and ray tracers? Good question. Kirby PS: For more along these lines, you might want to pull up my post to the mathchina list, where people are sharing their two cents with the visiting professor and delegation: http://mathforum.com/epigone/mathchina/yoyehwal From jasonic@nomadicsltd.com Wed Apr 11 13:58:34 2001 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Wed, 11 Apr 2001 08:58:34 -0400 Subject: [Edu-sig] Thinking in Patterns References: <3.0.3.32.20010405154542.01565d2c@pop3.norton.antivirus> Message-ID: <00eb01c0c287$1e377ba0$c3090740@megapathdsl.net> Bruce Eckel's Thinking in Patterns ftp://www.mindview.net/pub/eckel/TIPatterns/ From jasonic@nomadicsltd.com Wed Apr 11 13:59:41 2001 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Wed, 11 Apr 2001 08:59:41 -0400 Subject: [Edu-sig] Scientific Python 2.2 Message-ID: <00f701c0c287$45fdac40$c3090740@megapathdsl.net> New release: Scientific Python 2.2 http://starship.python.net/crew/hinsen/scientific.html Includes data visualizion via VRML, VPython and lots more... From pdx4d@teleport.com Wed Apr 11 15:57:58 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Wed, 11 Apr 2001 07:57:58 -0700 Subject: [Edu-sig] Scientific Python 2.2 In-Reply-To: <00f701c0c287$45fdac40$c3090740@megapathdsl.net> Message-ID: <3.0.3.32.20010411075758.014bd744@pop3.norton.antivirus> At 08:59 AM 4/11/2001 -0400, you wrote: >New release: Scientific Python 2.2 > >http://starship.python.net/crew/hinsen/scientific.html > >Includes data visualizion via VRML, VPython and lots more... I don't see that it includes VPython. Also primarily geared to Unix/Linux (no Windows binaries -- doesn't say if it'll compile or what incompatibilities there might be). Looks useful though. For learning purposes, I have very simple implementations of quaternions, VRML and some of the other stuff (by no means all) in my little python101.zip file. Kirby From gritsch@iue.tuwien.ac.at Wed Apr 11 19:41:08 2001 From: gritsch@iue.tuwien.ac.at (Markus Gritsch) Date: Wed, 11 Apr 2001 20:41:08 +0200 Subject: [Edu-sig] Scientific Python 2.2 References: <3.0.3.32.20010411075758.014bd744@pop3.norton.antivirus> Message-ID: <001101c0c2b6$fb729200$759322c3@telekabel.at> Kirby Urner wrote: > For learning purposes, I have very simple implementations > of quaternions, VRML and some of the other stuff (by no > means all) in my little python101.zip file. Yes, I have used your Vector class which makes it possible to specify coordinates as quaternions to build a small model of a diamond-crystal lattice (http://stud4.tuwien.ac.at/~e9326522/KineticsKit/html/exa8.png) Anyone interested in interactively playing with it look at http://stud4.tuwien.ac.at/~e9326522/KineticsKit/html/ at the exa8_zinkblende.py Kind regards, Markus From jasonic@nomadicsltd.com Wed Apr 11 20:42:30 2001 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Wed, 11 Apr 2001 15:42:30 -0400 Subject: [Edu-sig] Scientific Python 2.2 References: <3.0.3.32.20010411075758.014bd744@pop3.norton.antivirus> Message-ID: <00bb01c0c2bf$8c2745e0$c3090740@megapathdsl.net> ----- Original Message ----- From: "Kirby Urner" > I don't see that it includes VPython. Also primarily > geared to Unix/Linux (no Windows binaries -- doesn't say > if it'll compile or what incompatibilities there might > be). Good point about the lack of Windows binaries. Perhaps some kind person will make some available. This seems to be an inreasing trend I note for Python extensions :-) I have not played with it at all yet, but it lists among the section 'Scientific.Visualization: 3D visualization modules': Scientific.Visualization.VRML: create VRML files containing simple geometrical objects. Scientific.Visualization.VRML2: almost identical to VRML, but produces VRML2 syntax (aka VRML97) Scientific.Visualization.VMD: provides data visualization via the molecular visualization program VMD. Scientific.Visualization.VPython: provides data visualization via the VPython extension module. - Jason ___________________________________________________________ Jason CUNLIFFE = NOMADICS['Interactive Art and Technology'] From pdx4d@teleport.com Wed Apr 11 23:44:16 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Wed, 11 Apr 2001 15:44:16 -0700 Subject: [Edu-sig] Scientific Python 2.2 In-Reply-To: <00bb01c0c2bf$8c2745e0$c3090740@megapathdsl.net> References: <3.0.3.32.20010411075758.014bd744@pop3.norton.antivirus> Message-ID: <3.0.3.32.20010411154416.01502304@pop3.norton.antivirus> At 03:42 PM 4/11/2001 -0400, you wrote: >----- Original Message ----- >From: "Kirby Urner" > >> I don't see that it includes VPython. >Scientific.Visualization.VPython: provides data visualization via the >VPython extension module. ^^^^^^^^^^^^^^^^^^^^^^^^ Ah so, I stand corrected. Kirby ====== And now for something completely different: Excerpt from recent post to community college math teacher list: My agenda is: start kids playing with a CLI around 8th grade if not sooner and develop programming skills in connection with math topics through high school. I favor using Python for this purpose for reasons many computer science teachers share, and envision a time when, at the college level, math teachers might take basic competence/familiarity with Python as an ability shared by the average incoming student (the more accomplished students might know other languages in addition). The arena in which such an agenda has the greatest chance of being tested/implemented in this day and age is in the homeschooler sector, as this is where (a) kids already have computers and use them for self-tutoring and (b) innovation is happening of necessity. However, I don't mind sharing these ideas with folks entrenched more deeply in the status quo curriculum, as there might still be a notion or two which is transferable. However, the real changes are probably more likely in other contexts. Kirby ======= For those wanting to dig through the archives to read the whole thread (my posts + many others): http://www.mathforum.com/epigone/mathedcc/feronflix From larnder@acm.org Fri Apr 13 06:15:03 2001 From: larnder@acm.org (Christopher Isaac Larnder) Date: Thu, 12 Apr 2001 22:15:03 -0700 Subject: [Edu-sig] Re: python for homeschoolers References: Message-ID: <3AD68B57.7426A7CA@openface.ca> > Kirby said: > ... envision a time when, > at the college level, math teachers might take basic > competence/familiarity with Python as an ability shared > by the average incoming student > > The arena in which such an agenda has the greatest > chance of being tested/implemented in this day and age > is in the homeschooler sector, as this is where (a) kids > already have computers and use them for self-tutoring > and (b) innovation is happening of necessity. > We send our boy to school part-time, giving him a bit of space to actually explore self-motivated learning the rest of the time. He's started recently with a bit python to make nice print-outs of what he'd earn cutting the grass for the neighbours once per week, times 3 clients, times 3 months etc.. Another output format fostering self-motivation is VPython. A third, which I haven't tried yet is simple python-web page interactions. ( any suggestions for dead-easy python-web stuff?) I'm much less interested in "getting python into the schools" than in the opportunity of a CP4E vision bringing support to non-formal, non-schooled decentralized learning models. Kids are inside the schools, python is outside: The two can evolve together by bringing the latter in, but it could go a lot further by getting the former out. We would be happy to hear about any other independent youngpy learners out there.. -Izk ( Christopher Isaac Larnder ) From agauld@crosswinds.net Fri Apr 13 02:01:48 2001 From: agauld@crosswinds.net (Alan Gauld) Date: Fri, 13 Apr 2001 06:01:48 +0500 Subject: [Edu-sig] College CS courses Message-ID: <3ad6ce8c.5ead.0@crosswinds.net> Not sure this is entirely appropriate for the list but is anyone involved in teaching CS at college/university level? We have just been reviewing our graduate recruitment process for the current year and have been shocked, nay appalled, at the poor standard of the interviewees. I wondered if anyone, especially from the UK, could provide pointers to online syllabuses(sp?) for CS courses. We just want to know what's being taught, because so far as we can tell it isn't computing as we know it. Most courses seem to only teach Java(*), don't cover much on operating systems, software engineering or indeed anything to do with large scale computing. Is this truly the current state of CS in academia or are we just attracting the wrong grads? Alan g. (*) Interview Questions included: 1) Contrast and compare two programming languages (if the grad hesitated we suggested Java and C or VB) [Only about 10% of interviwees were able to do this.] 2) What are the differences between NT and Unix. When would you select one over the other? [Universally the response was "NT has a GUI". One even suggested Unix was old fashioned and prone to crashing...] 3) Describe the software lifecycle and the role of Configuration Management. [ Blank looks, most have only programmed within a Visual IDE - usually Cafe or JBuilder...] and so it went on... From Hans_Geuns@dragonsys.com Fri Apr 13 15:45:21 2001 From: Hans_Geuns@dragonsys.com (Hans_Geuns@dragonsys.com) Date: Fri, 13 Apr 2001 10:45:21 -0400 Subject: [Edu-sig] College CS courses Message-ID: Many of the Harvard Extension School CS course syllabi are online http://www.extension.harvard.edu/2000-01/courses/csci.shtml Level of those courses is from introductory/college to graduate level. Hans "Alan Gauld" @python.org on 04/12/2001 09:01:48 PM Please respond to agauld@crosswinds.net Sent by: edu-sig-admin@python.org To: edu-sig@python.org cc: Subject: [Edu-sig] College CS courses Not sure this is entirely appropriate for the list but is anyone involved in teaching CS at college/university level? We have just been reviewing our graduate recruitment process for the current year and have been shocked, nay appalled, at the poor standard of the interviewees. I wondered if anyone, especially from the UK, could provide pointers to online syllabuses(sp?) for CS courses. We just want to know what's being taught, because so far as we can tell it isn't computing as we know it. Most courses seem to only teach Java(*), don't cover much on operating systems, software engineering or indeed anything to do with large scale computing. Is this truly the current state of CS in academia or are we just attracting the wrong grads? Alan g. (*) Interview Questions included: 1) Contrast and compare two programming languages (if the grad hesitated we suggested Java and C or VB) [Only about 10% of interviwees were able to do this.] 2) What are the differences between NT and Unix. When would you select one over the other? [Universally the response was "NT has a GUI". One even suggested Unix was old fashioned and prone to crashing...] 3) Describe the software lifecycle and the role of Configuration Management. [ Blank looks, most have only programmed within a Visual IDE - usually Cafe or JBuilder...] and so it went on... _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig From dajoy@softhome.net Sat Apr 14 02:29:37 2001 From: dajoy@softhome.net (dajoy@softhome.net) Date: Fri, 13 Apr 2001 20:29:37 -0500 Subject: [Edu-sig] re: College CS courses In-Reply-To: Message-ID: Computer "Science" is not engineering. Science is not technology. As I see it CS has to do with data structures, algorithms, programming paradigms. daniel On 13 Apr 01, at 12:01, edu-sig-request@python.org wrote: > We just want to know what's being taught, because so > far as we can tell it isn't computing as we know it. > Most courses seem to only teach Java(*), don't cover much > on operating systems, software engineering or indeed > anything to do with large scale computing. > > Is this truly the current state of CS in academia or > are we just attracting the wrong grads? From agauld@crosswinds.net Sat Apr 14 00:10:33 2001 From: agauld@crosswinds.net (Alan Gauld) Date: Sat, 14 Apr 2001 04:10:33 +0500 Subject: [Edu-sig] re: College CS courses Message-ID: <3ad805f9.691c.0@crosswinds.net> >Computer "Science" is not engineering. Science is > not technology. As I see it CS has to do with > data structures, algorithms, programming paradigms. But surely computer science should also be about how computers operate - OS and physical hardware etc After all how can computer science advance if the computer scientists don't understand the fundamentals? Also what about the sciece of computing in the large? After all physics studies atomic begaviour as well as astronomic behavious, and all things in between. Modern CS seems to have settled for atomic only. Certainly CS courses used to cover all of those areas. Now they appear to have become merely programming courses, and even there only within very narrow boundaries - Java and VB! This is partoicularly worrying at a time when the computing industry is spending less and less time writing code. Integration of packages, configuration, etc are the largest part of modern develpments. Also, there doesn't appear to be a computer engineering curriculum. Software engineering and computer engineering seem, in practice, to be mere synonims for CS... It seems a shame that probably bright students will be denied job opportunities because companies like mine (a large telco!) can't afford the time to teach them the basics we expect them to know from college. It seems likely that we will now stop recruiting CS grads and hire job changers or electronic engineering grads only.(They know the background and usually have some programming too...) >daniel Thanks for your comments, they do seem to reflect the current CS trends. Alan G From dyoo@hkn.eecs.berkeley.edu Sat Apr 14 14:11:24 2001 From: dyoo@hkn.eecs.berkeley.edu (Daniel Yoo) Date: Sat, 14 Apr 2001 06:11:24 -0700 (PDT) Subject: [Edu-sig] College CS courses In-Reply-To: <3ad6ce8c.5ead.0@crosswinds.net> Message-ID: On Fri, 13 Apr 2001, Alan Gauld wrote: > Not sure this is entirely appropriate for the list but is anyone > involved in teaching CS at college/university level? I'm one of the teaching assistants for the introductory CS class, CS3, at UC Berkeley. > We have just been reviewing our graduate recruitment > process for the current year and have been shocked, > nay appalled, at the poor standard of the interviewees. > I wondered if anyone, especially from the UK, could > provide pointers to online syllabuses(sp?) for CS > courses. UC Berkeley uses Scheme for the introductory CS classes. The introductory class (CS3) introduces functional-programming and recursion. http://www-inst.eecs.berkeley.edu/~cs3 has the syllabus, as well as class lecture notes. The class is using Harvey and Wright's "Simply Scheme", which is a preparatory text for Structure and Interpretation of Computer Programs. The idea about CS3 is that, for nonmajors and students who aren't ready to run headfirst into SICP, we give a gentle introduction to programming concepts. Still, it's definitely not an "easy" class: there's some ideas like higher-order functions are pretty tricky at first. After that, we have three "core" classes that all CS undergrads need to take: CS61A, CS61B, and CS61C. They try to show different levels of programming. 61A is coverage of SICP topics, using Scheme. They talk about recursion, logic programming, and programming with state. Hard stuff, and a lot of fun. http://www-inst.eecs.berkeley.edu/~cs61a. 61B is the algorithms course, using Java as the implementation language. The course focuses on low level details and the efficiency of algorithms. http://www-inst.eecs.berkeley.edu/~cs61b 61C is the low-level hardware course. We learn about computer architecture, using MIPS assembly to learn how computers perform things like subroutines. At the same time, we learn about the effects of cache and memory. http://www-inst.eecs.berkeley.edu/~cs61c After that, the upper division classes run a gamut of topics, including databases, compilers, operating systems, artificial intelligence, computation and complexity, randomized algorithms, graphics, and software engineering. If there's any topic in particular that you'd like a syllabus of, I'll see if I can find it for you. > Is this truly the current state of CS in academia or > are we just attracting the wrong grads? Not sure. I have a few friends at Stanford (don't shoot me! *grin*), and from hearing their experience, it sounds like they're doing very similar stuff. Don't know about how other US colleges do it. > (*) Interview Questions included: > 1) Contrast and compare two programming languages (if > the grad hesitated we suggested Java and C or VB) > [Only about 10% of interviwees were able to do this.] Ouch. Berkeley's policy is not to concentrate on any given language: it feels that the classes assume that students will independently learn the language or die trying. *grin* However, it does have "self-paced" courses that deal mainly with language issues: http://www-inst.eecs.berkeley.edu/~selfpace > 2) What are the differences between NT and Unix. When would you > select one over the other? [Universally the response was "NT has a > GUI". One even suggested Unix was old fashioned and prone to > crashing...] Ouch. You might actually want to talk with Professor Mike Clancy (clancy@cs.berkeley.edu) --- I believe he's involved with graduate admissions, and should have a lot to say about your concerns. From pdx4d@teleport.com Sat Apr 14 17:22:04 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Sat, 14 Apr 2001 09:22:04 -0700 Subject: [Edu-sig] Re: python for homeschoolers In-Reply-To: <3AD68B57.7426A7CA@openface.ca> References: Message-ID: <3.0.3.32.20010414092204.012b7fb4@pop3.norton.antivirus> Currently the both-parents-working economics of an average household makes schooling away from home the most practical option for many. I'd like to see more hybrids -- different mixes of @home vs. @school than we see today (e.g. 50-50). In any case, CP4E means taking advantage of Python's accessibility to promote basic programming skills across the board. I think the best way to do this would be to anticipate computer use on the model of calculator use, with math classrooms especially switching to the former. Then we'd build a curriculum which contained "some basic programming skills" as a premise, beginning in 8th grade if not sooner. This wouldn't be an elective or AP requirement, but a built-in feature of what we mean by "numeracy". Knowing some programming will be as much a cultural norm as knowing how to drive a car or ride a bicycle. "Basic programming" doesn't have to mean writing fancy GUIs. But homeschoolers are in a position to go ahead of the curve and trailblaze what will become standard in the private/public institutions only later in the game. Kirby >I'm much less interested in "getting python into the schools" than >in the opportunity of a CP4E vision bringing support to non-formal, >non-schooled decentralized learning models. > >Kids are inside the schools, python is outside: The two can evolve >together by bringing the latter in, but it could go a lot further >by getting the former out. > >We would be happy to hear about any other independent youngpy >learners out there.. > >-Izk >( Christopher Isaac Larnder ) From matthias@rice.edu Sat Apr 14 19:06:38 2001 From: matthias@rice.edu (Matthias Felleisen) Date: Sat, 14 Apr 2001 13:06:38 -0500 (CDT) Subject: [Edu-sig] re: College CS courses In-Reply-To: (edu-sig-request@python.org) References: Message-ID: <200104141806.NAA10558@africa.cs.rice.edu> Alan Gould writes: > Certainly CS courses used to cover all of those areas. > Now they appear to have become merely programming courses, > and even there only within very narrow boundaries > - Java and VB! > It seems likely that we will now stop recruiting CS grads and hire job > changers or ... > Thanks for your comments, they do seem to reflect the current CS trends. Alan, you shouldn't conclude from a single response, which comes from the .net world and not from the .edu world, that colleges ignore what's happening in the real world. Indeed, the trend to teach just Java and VB **IS** a reflection of this trend to accommodate the "real world". The problem is that it reflects the perception of fashion-prone colleges not history-sensitive reality. I am a professor of Computer Science and I believe that Computer Science is about the construction of software. This includes many things: - programming and design of programs, cross-language programming - specifying functions, modules, systems - requirements engineering - integration of software packages - generation of programs from specs - maintenance, including run-time checking of all forms - software analysis (`a la soft typing in Erlang, since you're in telecom) - testing and debugging, test suites - integration with an existing OS and machine - stress testing and performance debugging This is a random ordering and covers the essentials. There are other things that they need to know, but they are best taught in a business school setting. I also believe that a CS program should dedicate the first three years of an education (the US assumes a four-year program) to the _principles_ of software construction and the last year to buzz words. Currently, it's almost the opposite at many places. I have seen Berkeley's approach, and it's probably close to what you want. (I know about Stanford and I don't think the post from Berkeley described the situation properly.) I know Rice's curriculum, and I find we do many of the above but lack people who do a lot of software package integration. I know that Indiana teaches an approach like the one I described. In general though, universities and colleges have three problems with teaching "software construction" rather than some "stuff in JAVA:" First, they believe that they must cater to their students. Whatever students want is taught. Of course, an 18-year old doesn't have a clue about the long-term needs of a CS career or software company. An 18-old knows what he did for his latest internship and that's about it. For these internships they use JAVA and VB, so this must be industry relevant. Right? Second, professors are really paid for the research they conduct. Like software products, research is **feature driven**; studying the process of software construction (I don't mean management). Trying to figure out how to produce software that is by an order of magnitude more maintainable than today's "stuff" is just barely ever rewarded. It's too long-term oriented. As a result, researchers focus on data structures, algorithms, and small programs/libraries. Few of us direct large teams of programmers in a software project. (My PLT SCHEME project consists of some 12 people, distributed over three universities. That includes one staff programmer, two assistant professors, and eight students. That's not a small project for a university, if you count software integration as a necessary property. I bet it's tiny compared to what you know.) Third, we don't have the resources to teach all these topics. We cannot truly emulate the industrial context that (large) companies assume. We don't do it. We don't have the software basis. We don't have the staff to grade such things. How should we know how to teach it? For years, I have given course in which students build a product over the semester, exchange products among teams, get down-graded when they want to "purchase" an intermediate solution. When I finally got to teach it, my average enrollment went down from way above the average of a Rice sophomore course to just below. Those people who make it thru love it. They call it "software bootcamp" and say "it's worth its price." For years, I have pushed that other professors adopt a similar model and teach the contents and the software process at the same time. (My course is *NOT* our SE course.) You may guess how many did. This summer I am moving to NORTHEASTERN UNIVERSITY in Boston. This is a "co-op" university where students spend one year in industry (in addition to their summers) and then come back to study more. This is like the programs of "Technische Universitaeten" in Germany, and I know that it taught me a lot about the real world. (It even induced a switch in career plans.) I suspect that these kids know more about the requirements of a true job, but I am afraid that they too will confuse the use of JAVA or VB for their latest co-op period with the use of insight into software construction. What we need is that people like you come to universities and speak out. You must tell professors and students, time and again, that focusing on JAVA and half-baked OOP isn't going to be it. Tell them to start with Scheme or Python. Tell them to bring Java in when students know how to program. They won't believe this if they hear it from the few colleagues who care about the process (not management). They may just believe it if industry representatives like you say so again and again. -- 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.teach-scheme.org/ http://www.htdp.org/ "Computer Science is no more about computers than astronomy is about telescopes." -- E. W. Dijkstra From agauld@crosswinds.net Sun Apr 15 14:45:19 2001 From: agauld@crosswinds.net (Alan Gauld) Date: Sun, 15 Apr 2001 18:45:19 +0500 Subject: [Edu-sig] re: College CS courses Message-ID: <3ada247f.10471.0@crosswinds.net> HI Matthias, > you shouldn't conclude from a single response, > which comes from the .net world and not from > the .edu world, that colleges ignore what's happening > in the real world. I hope not. > I believe that Computer Science is about the > construction of software. I guess thats where I see a movement in CS. It used to be about much more: about the ability to compute with a machine. It included the operation and networking of computing hosts as well as the construction of software. It was also concerned about novel ways to compute - for example large parallel arrays - nobody seems to teach these anymore and yet in industry they are more widely used than ever, but with an ever decreasing number of grads who know even what they are, far less how to use them... At a very primitive level we had a recent (successful) entrant who insisted on using a well known IDE for his development environment. Everyone else urged him not to, but he insisted it was more "efficient" than our old fashioned makefiles. His first compile took 17 hours to complete - the project consists of 27,000 C++ files... The makefiles do it in less than 2 hours. Why? Because the makefiles distribute the build over 10 servers with only the final linkage on the host... It was impossible to replicate that on his IDE but it took a very long time for him to come around... Now I don't expect colleges to simulate that with 27,000 files but the principles could be tought, illustrated and even demonstrated surely? How many grads today even know how to write a makefile that could distribute a build? > ... > This is a random ordering and covers the essentials. Sure. I'm glad to see that those things are being covered somewhere. >I also believe that a CS program should dedicate the > first three years of an education (the US assumes > a four-year program) Scotland likewise, I think the rest of the UK is 3 years... > We cannot truly emulate the industrial context > that (large) companies assume. Sure, But neither can the Mechanical Engineering dept emulate building the Brooklyn bridge. Nor most physics departments afford a particle accelerator, but they still teach the principles on the assumption that their students will someday be doing those things. I think many CS departments have lost sight of the fact that industrial computing requires more than a kind of super PC user/hobbyist. [And with due respect to CP4E, its a great goal to have everyone programming literate, just as it is to have everyone math literate but the CS programs need to aim higher IMHO] >What we need is that people like you come to > universities and speak out. I used to go to both Glasgow and Edinburgh universities as a guest lecturer on "Delivery Management" - all the activities on a project that are not about "developing software". (The notes are in an article on informIT.com if anyone is interested...) The original lecturers were keen and it got a good response from the students but last year one university changed lecturer and despite making the offer we have not been asked back... maybe I'm just not a good enough speaker of course :-) > Tell them to start with Scheme or Python. > Tell them to bring Java in when students know how to > program. One reason I wrote my online tutor and book was that too many of the summer break grads we get think that they can only programme in language X, I was trying to show that programming is pretty much the same in any language (especially if they are imperative in style). > about the process (not management). They may just > believe it if industry representatives like you > say so again and again. We are trying and despite my pessimism will doubtless continue to interview, it just seems to be an increasing fruitless exercise :-( Thanks to all for their responses. I don't want to clog the list, if anyone wants to continue/respond offline feel free to mail direct to: agauld@crosswinds.net I feel better having vented some steam ;-) Alan G. From matthias@rice.edu Mon Apr 16 17:18:59 2001 From: matthias@rice.edu (Matthias Felleisen) Date: Mon, 16 Apr 2001 11:18:59 -0500 (CDT) Subject: [Edu-sig] Re: College CS courses In-Reply-To: (edu-sig-request@python.org) References: Message-ID: <200104161618.LAA11354@africa.cs.rice.edu> > From: "Alan Gauld" > Date: Sun, 15 Apr 2001 18:45:19 +0500 > > I guess thats where I see a movement in CS. It used to be > about much more: about the ability to compute with a > machine. It included the operation and networking of > computing hosts as well as the construction of software. > It was also concerned about novel ways to compute - for > example large parallel arrays - nobody seems to teach > these anymore and yet in industry they are more widely > used than ever, but with an ever decreasing number of > grads who know even what they are, far less how to use > them... Correct. CS should, and does, teach automata, logic, type theory, and other stuff. Most grads, and most industry people, preach that this is useless until they realize that something like JAVA is a snapshot of the state of CS from 1985 (According to Gosling). > Now I don't expect colleges to simulate that with > 27,000 files but the principles could be tought, > illustrated and even demonstrated surely? How many > grads today even know how to write a makefile that > could distribute a build? Yeap. Rice's Zwanepoel was one of the very first in the mid 80s to turn make files into distributed, optimistically parallelizing tools. I teach stress testing, but I admit that I don't stress test building a program. We build our programs and docs over night on large servers. > I think many CS departments have lost sight of the > fact that industrial computing requires more than > a kind of super PC user/hobbyist. YES! > > One reason I wrote my online tutor and book was > that too many of the summer break grads we get > think that they can only programme in language > X, I was trying to show that programming is > pretty much the same in any language (especially > if they are imperative in style). Wrong. Consider JAVA and an implementation that uses a copy gc. You're much better off using functional patterns than old-style imperative "this works in any programming language" style "programming." (Sorry I can only put quotes around this word .. I don't consider it programming when someone can form a phrase in Python or Scheme or Java and the phrase "accomplishes" something. "But it works" is the biggest lie in computing.) Unless you learn to program functionally, you will never understand how to build such programs. -- Matthias From humbert@hagen.de Mon Apr 16 18:49:10 2001 From: humbert@hagen.de (L. Humbert) Date: Mon, 16 Apr 2001 19:49:10 +0200 Subject: [Edu-sig] Re: Edu-sig digest, Vol 1 #274 - 1 msg References: Message-ID: <3ADB3096.7030104@hagen.de> Hi, in the actual issue vol 24, no.2 (april 2001) of "informatik spektrum" - the german journal for professional informatics (springer verlag) you'll find an article entitled: "Quo vadis, informatik" written by Britta Schinzel and Karin Kleinn pp 91-97 There is a small abstract in english included, which I'll post here. The questions are available in german at the end of the article. On interst you may ask the article authors ( schinzel at modell.iig.uni-freiburg.de ) for translation of the questions into english (;- abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Within a project "Professionalisation of Infor- matics" performed at the Institute for Computer Science and Social Research of the University of Freiburg we want to explore which are the actual standards of professionality in German Informatics, which ways the subject is following at the time, and what is considered as most likely future develop- ment.We want to find out which are the different streams of self definition and leading visions within Informatics, especially with respect to software de- velopment, and how these are participating in the development of Informatics as science and as a pro- fession. We want to invite all colleagues interested in the future of Informatics, in particular also the female ones, to tell us their opinions. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ludger Humbert http://in.hagen.de/~humbert/ From jasonic@nomadicsltd.com Mon Apr 16 23:55:27 2001 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Mon, 16 Apr 2001 18:55:27 -0400 Subject: [Edu-sig] PyGame ? Message-ID: <001101c0c6c8$545e5100$c3090740@megapathdsl.net> Hi Wondering if anyone here has looked the latest PyGame? http://pygame.seul.org/ Looks like there is some very useful stuff in there - for example CDROM + Joystick drivers etc.. Could be useful for improving installations, tutorials, inteface Joystick to 3D graphics/Math functions, Lightflow, motivational progamming.. lots of blit functions for animation.. for teaching progamming using game context of analyis and design... The recent thread on CS now and in the good old days when computers were driven by rubber bands, reminds me that the prespetn metaphors of widgets and wodgets adn dominance of unimaginative, insanely complex GUIs and operting systems has tended to obsccure some of teh basic things about using computers. For example - when you look ata screen you are looking at a display. How does it get there? How do you change it etc.? I dont mean one shoull take the vacuum cleaner apart everytime you want tidy the house, but at least once in once life, preferably at an early age, take it apart and put it back together. Pygame seems interesting in that you can jump in making stuff and thinkning about logic or gameplay, but also can poke around lower level, deal with interfaces to physical and virtual devices.. some kids really enjoy that. PyGame is thoroughly cross-platform because it is based on SDL http://www.libsdl.org/ Simple DirectMedia Layer is a cross-platform multimedia library designed to provide fast access to the graphics framebuffer and audio device. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power." Simple DirectMedia Layer supports Linux, Win32, BeOS, MacOS, Solaris, IRIX, and FreeBSD. SDL is written in C, but works with C++ natively, and has bindings to several other languages, including Ada, Eiffel, ML, Perl, and Python. [also jokes: A little girl had just finished her first week of school. "I'm wasting my time," she said to her mother. "I can't read, I can't write - and they won't let me talk!" ] Personally I have never been a game player, so I don't know about all this. They always bored me. Longest ever was couple of days with Sim City, and last summer for a day 'The Sims' with my niece, but I was fascinated by the idea of Sim City and what kind of stuff one could develop beyond it. My idea of computer games was alsways graphic software, music, Forth/Lingo/Python/Zope/Flash programming, etc.. First thing I ever did on my Amiga was bootup a version of Conways game of Life. Then went on to exploring realtime granular synthesis using RGS, and other magical soudn and graphic software written by a brilliant friend. You can read about them at http://www.echonyc.com/~jhhl/software.html I did not sleep much that first week I remember -- hooked me on computers.and wanting to learn how to program. My Amiga background tells me cross-platform multimedia library + Python abatraction interface is a GOOD thing. What's you opinion? - Jason ___________________________________________________________ Jason CUNLIFFE = NOMADICS['Interactive Art and Technology'] From pdx4d@teleport.com Tue Apr 17 01:29:55 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Mon, 16 Apr 2001 17:29:55 -0700 Subject: [Edu-sig] PyGame ? In-Reply-To: <001101c0c6c8$545e5100$c3090740@megapathdsl.net> Message-ID: <3.0.3.32.20010416172955.013fd428@pop3.norton.antivirus> Thanks Jason, your finds expand my horizons. Kirby From lex@berezhny.net Tue Apr 17 04:29:06 2001 From: lex@berezhny.net (Lex Berezhny) Date: Mon, 16 Apr 2001 20:29:06 -0700 (PDT) Subject: [Edu-sig] PyGame ? In-Reply-To: <3.0.3.32.20010416172955.013fd428@pop3.norton.antivirus> Message-ID: <20010417032906.29583.qmail@web10907.mail.yahoo.com> Hi, > Thanks Jason, your finds expand my horizons. I dont usually post on this list, but PyGame really got my attention, so I would like to add my thanks as well. Safe hacking, - Lex Berezhny __________________________________________________ Do You Yahoo!? Yahoo! Auctions - buy the things you want at great prices http://auctions.yahoo.com/ From pdx4d@teleport.com Wed Apr 18 19:14:47 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Wed, 18 Apr 2001 11:14:47 -0700 Subject: [Edu-sig] A math + python example (cc: math-learn) In-Reply-To: <3.0.3.32.20010416172955.013fd428@pop3.norton.antivirus> References: <001101c0c6c8$545e5100$c3090740@megapathdsl.net> Message-ID: <3.0.3.32.20010418111447.014d9824@pop3.norton.antivirus> Thanks to Dave Marain posting to math-learn@yahoogroups.com [1], the subject of Farey series arose, an ideal topic for those engaged in a "math + programming" curriculum using Python or other language (e.g. Scheme). Farey(N) is the complete list of reduced (lowest-terms) fractions=20 between 0 and 1 inclusive, in ascending order, having denominators=20 up to and including N.[2] For example, if N=3D3, then Farey(N) =3D >>> farey(3,'f') ['0/1', '1/3', '1/2', '2/3', '1/1'] The 'f' argument returns the list in 'fraction format p/q' -- including=20 for 0 and 1. The default list (no 2nd argument) returns a list of=20 tuples: >>> farey(3) [(0, 1), (1, 3), (1, 2), (2, 3), (1, 1)] and the 'd' option returns floating point numbers, which are a=20 little different from the decimals one would compute by hand, owing=20 to the decimal->binary->decimal conversions that go on in floating=20 point world: >>> farey(3,'d') [0.0, 0.33333333333333331, 0.5, 0.66666666666666663, 1.0] One way to generate a Farey series is given in 'Concrete Mathematics' (Graham, Knuth, Patashnik): generate a Stern- Brocot subtree to the depth necessary in order to get all=20 fractions of denominator N. The Stern-Brocot tree is formed by interpolating what are called mediants between every pair of terms in an expanding list. The mediant of p1/q1 and p2/q2 is simply (p1+p2)/(q1+q2).[3] So, starting with [(0,1),(1,1)], and interpolating a single mediant, you get: [(0,1),(1,2),(1,1)]. The next iteration gives you [(0,1),(1,3),(1,2),(2,3),(1,1)], and so on. =20 >>> farey(7,'f') ['0/1', '1/7', '1/6', '1/5', '1/4', '2/7', '1/3', '2/5',=20 '3/7', '1/2', '4/7', '3/5', '2/3', '5/7', '3/4', '4/5',=20 '5/6', '6/7', '1/1'] This algorithm is guarenteed to reach all lowest terms fractions,=20 and keeps them in ascending order to boot. The tree algorithm=20 will pick of fractions of denominator > N in the process of=20 getting all those with denominators <=3D N, so some filtering is required in the final step. =20 The tree algorithm is defined as a separate function, to facilitate=20 explorations independent of the Farey series connection, e.g.=20 classroom discussion might focus on the fact that initial values=20 of 0/1 and 1/0 will plant a tree that grows towards encompassing=20 all positive lowest terms fractions, none missing, no duplicates. Here's some code, although students might not want or need it: Python source (public domain): =20 http://www.inetarena.com/~pdx4d/ocn/python/farey.py Color-coded in HTML for readability (uses Win32 IDLE colors=20 -- pre-written conversion modules do this work [4]): http://www.inetarena.com/~pdx4d/ocn/python/farey.html Kirby =3D=3D=3D=3D=3D=3D=3D Notes: [1] http://groups.yahoo.com/group/math-learn/message/521 [2] The Farey series links to what are called Ford circles, as discussed in 'The Book of Numbers' by Conway and Guy. My thanks to Pat Ballew for pointing this out: http://groups.yahoo.com/group/math-learn/message/523 [3] Domingo G=F3mez Mor=EDn generalizes the notion of mediant in his definition of rational mean, which he uses to specify various root-finding algorithms etc. Mor=EDn's site suggests some more fun programming challenges. See: http://www.etheron.net/usuarios/dgomez/RmDef.htm [4] (c) 1996-2000 by Mitchell S. Chapman, Zachary Roadhouse,=20 Tim Peters and Just van Rossum (I modified the color key to match Win32 IDLE 0.8). From pdx4d@teleport.com Wed Apr 18 19:39:07 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Wed, 18 Apr 2001 11:39:07 -0700 Subject: [Edu-sig] And now for something completely different... Message-ID: <3.0.3.32.20010418113907.014da67c@pop3.norton.antivirus> Speaking of "math through programming", just wanted to share some of my latest results from exploring Python + LiveGraphics3D and Python + Povray. LiveGraphics3D is a Java applet by Martin Kraus, free for non- commercial purposes, that takes Mathematica graphics files (.m extension) and presents them in a web-interactive context, complete with mouse-controlled zoom, rotate, and a stereo viewing option (you have to cross or splay your eyes to see the stereo -- a learned skill). I've taught my polyhedra to display themselves in .m format, via a lg3d.py module, so now I can provide browsers with interactive views such as found at: http://www.inetarena.com/~pdx4d/ocn/lvmviews.html For a long time, I've been using the Python + Povray synergy to generate colorful polyhedra, mostly in wireframe. But one should remember that Povray is a sophisticated rendering engine with a lot more to it. With a little spit and polish ("search and replace" in the Povray editor), simple cartoony renderings may be transformed into more expensive-looking sculptures, as here: http://www.inetarena.com/~pdx4d/ocn/concavedodeca.html This gets us into the realm of "math + art" -- always a fertile realm (good book: 'Connections: The Geometric Bridge Between Art and Science' by Jay Kappraff -- which is just coming out in a 2nd edition this month, April 2001). Kirby From jasonic@nomadicsltd.com Wed Apr 18 20:31:30 2001 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Wed, 18 Apr 2001 15:31:30 -0400 Subject: [Edu-sig] And now for something completely different... References: <3.0.3.32.20010418113907.014da67c@pop3.norton.antivirus> Message-ID: <010701c0c83e$2c16e780$c3090740@megapathdsl.net> From: "Kirby Urner" > I've taught my polyhedra to display themselves in .m format, via > a lg3d.py module, so now I can provide browsers with interactive > views such as found at: > > http://www.inetarena.com/~pdx4d/ocn/lvmviews.html Kirby This is great news! I would love to see and try your lg3d.py module. Is it posted anywhere? I have been a big fan of Mathematica used with Martin Kraus's terrific LiveGraphics3D applet for several years. It keeps getting better. It loads quickly and is very fast and repsonsive. It is capable of nice animation -> [see examples on his site ] and has some lovely 'hide/reveal' features using alternate keys + mouse buttons to remove elements dynamically from a model display Wolfram, though touting it off a little, have been reluctant as always to quickly take this ball and run with it. Which is perhaps just as well since Martin Kraus is freer to keep doing his 'thing' unencumbered. I suggest you put these mouse interaction hotkeys info close at hand on your own page: user action applet reaction dragging (left mouse button pressed) rotating about an axis in the picture releasing left mouse button while dragging spinning about an axis in the picture SHIFT key pressed plus vertical dragging zooming SHIFT key pressed plus horizontal dragging rotating about an axis perpendicular to the picture CONTROL key pressed plus vertical dragging changing focal length CONTROL key pressed plus horizontal dragging changing strength of stereo effect META (ALT) key (or right mouse button) pressed plus vertical dragging stripping parts of the graphics "o" key printing parameter settings to the Java console (aka Java messages window) "s" key toggling between single picture, stereo pictures for diverge fusing and stereo pictures for cross fusing HOME key restoring original perspective (no spinning) - Jason ___________________________________________________________ Jason CUNLIFFE = NOMADICS['Interactive Art and Technology'] From jasonic@nomadicsltd.com Wed Apr 18 21:49:53 2001 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Wed, 18 Apr 2001 16:49:53 -0400 Subject: [Edu-sig] And now for something completely different... References: <3.0.3.32.20010418113907.014da67c@pop3.norton.antivirus> Message-ID: <016f01c0c849$1ef64e00$c3090740@megapathdsl.net> Searching on Google for 'lg3d' I come across some nice sites: http://www.jps.net/tau/rodpack/rptroctm.htm http://www.geocities.com/a_thompson.geo/model/ - Jason ___________________________________________________________ Jason CUNLIFFE = NOMADICS['Interactive Art and Technology'] From trelf13@yahoo.com Thu Apr 19 14:37:21 2001 From: trelf13@yahoo.com (Donald) Date: Thu, 19 Apr 2001 06:37:21 -0700 (PDT) Subject: [Edu-sig] movables Message-ID: <20010419133721.11444.qmail@web5205.mail.yahoo.com> Hi. I'm currently in a high school computer science class and have been assigned the job of finding a way to move a box, or paddle, for a pong game another student is making. I've tried writing a couple programs, one using a box, another using a circle, neither working. If anyone could help me out, it would be much appreciated. Donald __________________________________________________ Do You Yahoo!? Yahoo! Auctions - buy the things you want at great prices http://auctions.yahoo.com/ From pdx4d@teleport.com Thu Apr 19 17:28:06 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 19 Apr 2001 09:28:06 -0700 Subject: [Edu-sig] And now for something completely different... In-Reply-To: <010701c0c83e$2c16e780$c3090740@megapathdsl.net> References: <3.0.3.32.20010418113907.014da67c@pop3.norton.antivirus> Message-ID: <3.0.3.32.20010419092806.014e28c4@pop3.norton.antivirus> At 03:31 PM 4/18/2001 -0400, you wrote: >From: "Kirby Urner" >> I've taught my polyhedra to display themselves in .m format, via >> a lg3d.py module, so now I can provide browsers with interactive >> views such as found at: >> >> http://www.inetarena.com/~pdx4d/ocn/lvmviews.html > >Kirby > >This is great news! > >I would love to see and try your lg3d.py module. Is it posted anywhere? > Jason -- I've bundled lg3d.py inside of python101.zip, which is linked from each of my 'Numeracy + Computer Literacy' pages e.g. http://www.inetarena.com/~pdx4d/ocn/numeracy0.html -- this zip also contains vrml.py. Both lg3d.py and vrml.py are designed to mimic the interface exported by povray.py, and that's pretty well documented in numeracy1.html -- except that I'm in the process of upgrading povray.py slightly to make it easier to use textures. All of these modules work in complement with coords.py, which contains my general vector classes, e.g. they all give you shaft(v), edge(v1,v2), point(v), and face(vlist), where v,v1,v2 are vectors and vlist is a list of vectors. * shaft(v) draws from the origin to vector tip v, * edge(v1,v2) draws an edge between the tips of v1 and v2, * point(v) draws a sphere at the tip of v, and * face(vlist) makes a polygon going around the points defined by the vectors in vlist (which should all be coplanar). The above methods all belong to whatever output object you've chosen, i.e. some povray or LiveGraphics3D object. So, for example, you could do something like this: >>> import povray, coords, lg3d >>> myfile = povray.Povray("coolgraphic.pov") # instantiate povray object >>> v1 = coords.Vector((1,0,0)) # define a vector >>> v2 = coords.Vector((-3,3,0)) # ...and another >>> myfile.edge(v1,v2) # use vectors to make an edge >>> myfile.close() # close the povray file You would now have a file called "coolgraphic.pov" on your disk ready for rendering in povray, and containing the information for displaying an edge running from (1,0,0) to (-3,3,0). You could have instantiated the Povray object with more parameters (e.g. background color), but just a filename is sufficient. Or, you might have gone: >>> myfile = lg3d.Lg3d("coolgraphic.m") >>> v1 = coords.Vector((1,0,0)) >>> v2 = coords.Vector((-3,3,0)) >>> myfile.edge(v1,v2) >>> myfile.close() ...which is essentially the same thing, except you've made myfile an Lg3d object vs. a Povray object -- same methods, but you're creating "coolgraphic.m" on your disk, suitable for embedding as the INPUT_FILE in the applet HTML for LiveGraphics3D. My process for creating the various polyhedra at my website, in LG3D, Povray or VRML formats, is to use the above technology under a Polyhedron or Shape class which pre-assigns all the critical vertex information to vectors, and lists faces as tuples. For example, my Cube class looks like this: class Cube(Shape): """ Labels of Numbers of Shape Volume Vertices Vertices, Edges, Faces --------------------------------------------------------- Duo-tet Cube 3 A-H 8 12 6 """ faces = [('A','H','C','F'),('A','H','B','G'),('B','E','C','H'), ('B','E','D','G'),('D','G','A','F'),('C','E','D','F')] sphcolor = cylcolor = "Green" def __init__(self): Shape.__init__(self) self.volume = 3.0 You can see that 'A' must be the name of some vector, which in this case is actually stored in the module itself as a global variable. That's the entire cube class definition, as all the code for translating, scaling and rotating is in the superclass, i.e. part of Shape's definition (from which Cube inherits). Note: I don't explicitly give the edges, as these are implied in the faces list, i.e. I have code that builds a list of vertex-pairs (edges) from a face-tuple such that ('A','H','C','F') nets me ('A','H'),('H','C'),('C','F'),('F','A') -- just traveling around the perimeter. Of doing all the faces this way nets you each edge twice, so I need to screen for duplications as I build my edges list. The method looks like this: def getedges(self): """Extract edges from the faces list. Face lists contain consecutive vertices, so build and edge list by taking pairs, with the last vertex connecting back to the first. Use sort() to assure each edge is specified uniquely """ edges = [] # locally scoped for face in self.faces: # e.g. ['A','B','C'] for j in range(len(face)): candidate = [face[j],face[j-1]] candidate.sort() # assure uniqueness if not tuple(candidate) in edges: edges.append(tuple(candidate)) # add if new self.edges = edges Anyway, that's the kind of stuff I'm doing on the back end. Kirby From jasonic@nomadicsltd.com Thu Apr 19 19:44:01 2001 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Thu, 19 Apr 2001 14:44:01 -0400 Subject: [Edu-sig] And now for something completely different... References: <3.0.3.32.20010418113907.014da67c@pop3.norton.antivirus> <3.0.3.32.20010419092806.014e28c4@pop3.norton.antivirus> Message-ID: <002d01c0c900$b3e22860$c3090740@megapathdsl.net> From: "Kirby Urner" > Jason -- I've bundled lg3d.py inside of python101.zip, which is linked > from each of my 'Numeracy + Computer Literacy' pages e.g. > http://www.inetarena.com/~pdx4d/ocn/numeracy0.html -- this zip also > contains vrml.py. <... snip lovely intro tutorial +links...> Kirby Thank you very much.. wow. so much to explore and so many components coming together :-) Very exciting times we live in.. philosophy, concept, tools, simulation, realization Here'e another log for the global digital fireside. [Just posted this morning to the CHI-WEB list]: http://liftoff.msfc.nasa.gov/RealTime/JTrack/3D/JTrack3D.html So two topics I have in mind: 1. A timseries version of the above do the above using python101 tools [need to sort out the NASA datasets and write an Earth Model with orbits where one acn vary the graviation params and demo why/what/how geostationary orbits work] .. any thoughts about this. 2. How to make lg3d more interactive so now coudl browse & query the datapoints? VRML can obviously do this, but lg3d is so snappy it makes me happy! - Jason From Arthur_Siegel@rsmi.com Thu Apr 19 20:41:20 2001 From: Arthur_Siegel@rsmi.com (Arthur_Siegel@rsmi.com) Date: Thu, 19 Apr 2001 14:41:20 -0500 Subject: [Edu-sig] And now for something completely different... Message-ID: <0065883C.N22121@rsmi.com> Kirby writes - >With a little spit and polish ("search and replace" >in the Povray editor), simple cartoony renderings may be transformed >into more expensive-looking sculptures, as here: > http://www.inetarena.com/~pdx4d/ocn/concavedodeca.html yum. >This gets us into the realm of "math + art" -- always a fertile >realm (good book: 'Connections: The Geometric Bridge Between >Art and Science' by Jay Kappraff -- which is just coming out in >a 2nd edition this month, April 2001). The subject i've been rooting about in for the last few years - projective geometry - a mathmatical discipline that it seems to me was the essential step toward non-Euclidian geometry/Relativity, etc - was itself a direct outgrowth of the purely artistic concerns of Renaissance painters related to perspective. Jason writes - >>Searching on Google for 'lg3d' I come across some nice sites: >>http://www.jps.net/tau/rodpack/rptroctm.htm Surprised Kirby didn't mention it - maybe did not consider it relevant to this list. But Jason you might be interested that the tool that did the actual rendering at this site - Struck - is a java project that Kirby has been close to for some time and originally turned me on to - that evolved into Fluidiom, and which is continuing to evolve in interesting directions. http://www.fluidiom.com/ Unfortunately for me, the list that follows Fluidiom developments tends to communicate in Buck Fullerisms - so I don't keep up very well. But its an interesting place to lurk, nonetheless. ART From jasonic@nomadicsltd.com Thu Apr 19 20:32:42 2001 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Thu, 19 Apr 2001 15:32:42 -0400 Subject: [Edu-sig] UNext Message-ID: <006201c0c907$81ae1f00$c3090740@megapathdsl.net> http://www.elearningpost.com/elthemes/norman.asp comments? - Jason ___________________________________________________________ Jason CUNLIFFE = NOMADICS['Interactive Art and Technology'] From pdx4d@teleport.com Thu Apr 19 22:11:46 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 19 Apr 2001 14:11:46 -0700 Subject: [Edu-sig] And now for something completely different... In-Reply-To: <002d01c0c900$b3e22860$c3090740@megapathdsl.net> References: <3.0.3.32.20010418113907.014da67c@pop3.norton.antivirus> <3.0.3.32.20010419092806.014e28c4@pop3.norton.antivirus> Message-ID: <3.0.3.32.20010419141146.014d82e8@pop3.norton.antivirus> >Thank you very much.. wow. so much to explore and so many components coming >together :-) Very exciting times we live in.. philosophy, concept, tools, >simulation, realization > Thanks Jason. http://groups.yahoo.com/group/math-learn/message/552 is a very recent post to math-learn which introduces some of the same ideas (writing to math teachers, who are mostly chatting about the TI-XX GC -- but there's always hope. This post in turn links to a new web page: http://www.inetarena.com/~pdx4d/ocn/mygraphs.html -- shows source code for doing the LiveGraphics displayed. Now I'm going to check some of these URLs you've been tossing out. >2. How to make lg3d more interactive so now coudl browse & query the >datapoints? I saw from that star system page that you can label the lg3d points. This could be handy. I need to figure out how to add labels. Kirby From pdx4d@teleport.com Thu Apr 19 22:14:16 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 19 Apr 2001 14:14:16 -0700 Subject: [Edu-sig] And now for something completely different... In-Reply-To: <0065883C.N22121@rsmi.com> Message-ID: <3.0.3.32.20010419141416.01296de0@pop3.norton.antivirus> At 02:41 PM 4/19/2001 -0500, Arthur_Siegel@rsmi.com wrote: >>>Searching on Google for 'lg3d' I come across some nice sites: > > >>>http://www.jps.net/tau/rodpack/rptroctm.htm > >Surprised Kirby didn't mention it - maybe did not consider it >relevant to this list. But Jason you might be interested that the I'd forgotten all about this page. I've since linked to it. Fun to have edu-sig reconnect me to stuff I'd lost track of in another context. Very true that I know John Braley, the author of the above (not to be confused with John Brawley, a subscriber to many of the same lists, and whom I've not met in person as of this posting). >http://www.fluidiom.com/ > >Unfortunately for me, the list that follows Fluidiom developments >tends to communicate in Buck Fullerisms - so I don't keep up very well. > I have trouble keeping up too -- Fluidiom has evolved its own little idiom that takes awhile to tune in (easiest if you're actually using the applet/application). Kirby From toconnor@vcd.hp.com Thu Apr 19 23:39:18 2001 From: toconnor@vcd.hp.com (Thomas O'Connor) Date: Thu, 19 Apr 2001 15:39:18 -0700 Subject: [Edu-sig] Observations from the Northwest Science Expo Message-ID: <200104192239.PAA23812@hpvcpto.vcd.hp.com> On March 12 of this year, I participate as a middle school judge for the Northwest Science Expo held on the campus of Portland State University, in Portland Oregon. I was assigned to the team evaluating middle school behavioral science projects along with 8 other scientists and engineers. We evaluated 21 student projects. This was a great group of kids and I want to be clear that this is in no way a criticism of any of their work. I believe that the judges took much effort to value and encourage the students. But as is often the case, a world view can be shattered by an example of something outstanding, which then shows all else to be mediocre. I had one of those experiences at NWSE, and it relates to the use of computers in education. I'd be interested in any comments anyone in this group has to offer. The outstanding example in this case was a project put together by young lady in the fourth grade (who was, by the way competing against 6-8th graders). Her project investigated the effects of varying light/dark cycle periods on bean plant growth. Her experimental design and investigation was reasonably thorough, particularly for someone her age, but not outstanding by comparison to those she was competing with. What struck me as outstanding however, was how she related to her data. When I asked what conclusions she drew from her experiment, she made an expansive hand motion, one of those "it should be clearly obvious to the most casual observer," gestures towards her hand drawn data plots. With wide eyed excitement, she explained how her data clearly proved her original thesis incorrect. It was clear that she had fully internalized her data. In this, she stood apart from here peers. By contrast, most other student I spoke with related to their graphs and charts as fuzzy abstract representations of their data. Some examples: * More than half of the students produced three-dimensional bar charts to display data. Unfortunately, only one student was able to accurately read their bar charts. The others failed to account for the parallax between the bar and the back of the graph which represented the X scale. * One young man was analyzing the effect of color on mood. But when he reported his results, his graph was color coded for color. In other words, his red bar represented the color black, the pink bar represented yellow, the yellow bar represented green. When asked about this, he said his software wouldn't let him pick the colors of the bars in his bar-chart. * An 8th grader noted that her results did not vary significantly from what would have been predicted from a purely random sampling. This was a very enlightened analysis, and the judges all gave her credit for attempting to utilize good statistical analysis. But the statistical theory she was attempting to utilize was clearly well beyond her knowledge and skill level. When asked why so much of her her project display was focused on the statistical analysis of her data when she admitted that she didn't really understand it, she stated, "well, Excel did all the math for me." * A sixth grader did a project to determine which parent the gene for red hair was inherited from. Her knowledge of genetics was impressive, particularly for her age. But the computer generated graphs she displayed conveyed no meaning to any of the judges. Had she displayed and focused on the genealogy charts she had stashed in the back of her project notebook, she probably would have won an award. * There were two students who had a very good project on luminescent solutions and the effects of solution temperature on luminescence. While their presentation was very good, what I found most notable in speaking with them was the rate of change graph they had scribbled on the back of a piece of yellow legal pad to explain the cascade effect they had observed. Their scribbled graph conveyed more meaning than all their beautiful computer generated charts. Questions to ponder: -------------------- * Does the use of the computer to generate charts enhance the synthesis of data, or might it actually hinder it? In this case, the fourth grader who was determining environmental effects on plant growth collected her data by drawing points on her graph each day during the experiment. At the science fair, she was able to articulate the meaning of that data better than other middle school students I spoke with. The only other students who showed equivalent understanding did so by utilizing a scribbled graph drawn on the back of a legal pad. So is there a correlation between the manual plotting of data and the cognitive interpretation of that data? * Gerald E. Jones in "How to LIE with CHARTS," on the "old fassion" approach to charting mused: Having such crude tools might have forced those early chart-makers into slower thought processes. It is conceivable that they actually pondered carefully composition--maybe even the content!--of those pathetically simple charts and graphs. Can it be that in their technological poverty they achieved a higher level of consciousness? Did they actually come to grasp the meaning of their graphic creations? [1] With the proliferation of three-dimensional bar that even the creators can not accurately read, is the real meaning of the data being masked by the visual presentation? * I know from experience that I can take someone who is generally computer phobic but who has a good understanding of statistics, sit them down in front of Excel, and within a few hours they can be using it productively. On the other hand, as I observed, an 8th grader who knows Excel inside and out, cannot do meaningful statistics. So why do so many people insist that schools teach Excel, or Word, or Powerpoint for example? Shouldn't the real focus be on teaching number theory, problem solving, language composition and cognitive perception? I'm beginning to wonder how much benefit computers actually add to the learning process? I'd welcome a discussion on the topic by those who are effectively utilizing computers in their curriculum today. Thanks for the bandwidth. Tom O. ----- Thomas O'Connor toconnor@vcd.hp.com Hewlett Packard, Vancouver Washington Phone: (360) 212-5031 Telnet: 212-5031 [1] "How to LIE with CHARTS," Gerald E. Jones, Sybex, 1995, p. XVII. See also: "The Visual Display of Quantative Information," Edward Tufte, Graphics Press, 1983 ----- Thomas O'Connor toconnor@vcd.hp.com Hewlett Packard, Vancouver Washington Phone: (360) 212-5031 Telnet: 212-5031 From pdx4d@teleport.com Fri Apr 20 01:37:30 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 19 Apr 2001 17:37:30 -0700 Subject: [Edu-sig] Observations from the Northwest Science Expo In-Reply-To: <200104192239.PAA23812@hpvcpto.vcd.hp.com> Message-ID: <3.0.3.32.20010419173730.014dd5c0@pop3.norton.antivirus> > So why do so many people insist that schools teach Excel, or Word, > or Powerpoint for example? Shouldn't the real focus be on teaching > number theory, problem solving, language composition and cognitive > perception? > >I'm beginning to wonder how much benefit computers actually add to >the learning process? I'd welcome a discussion on the topic by those >who are effectively utilizing computers in their curriculum today. > >Thanks for the bandwidth. > >Tom O. This is a good analysis and "connect the dots" presentation. I might draw different conclusions though, e.g. the ineffective use of computer technology points to a need for more, not less, training it its use. Perhaps CP4E offers a better approach, in that it gets students more deeply under the hood of their computers, vs. having them rely so entirely on "wizard" style apps which "do everything for you". They learn to drive with a manual shift first. Tufte's (which you mention) is of course the classic in this field. He takes a no-nonsense approach and advocates eliminating "chart junk" -- lots of extra noise and clutter which maybe appears "slick" to the aesthetically un-initiated, but which actually gets in the way of communicating the data. Given computers, there's a need to bring this "plain speech" aesthetic into the classroom, as an antidote to all the bells and whistles which students are tempted to include simply because they can. I think cutting out the computer training leaves students more helpless than ever, went suddenly plunked down in front of Microsoft Office XXXX and told to produce "presentation graphics" for the boss. If only they'd had a good teacher in high school who (a) showed them the ins and outs and (b) laid down some sensible aesthetic guidelines. Kirby From jasonic@nomadicsltd.com Fri Apr 20 02:37:58 2001 From: jasonic@nomadicsltd.com (Jason Cunliffe) Date: Thu, 19 Apr 2001 21:37:58 -0400 Subject: [Edu-sig] Observations from the Northwest Science Expo References: <200104192239.PAA23812@hpvcpto.vcd.hp.com> Message-ID: <004401c0c93a$87cfc2c0$c3090740@megapathdsl.net> Thomas Thank you for an interesting post.. My first reaction is that your ancdotes powerfully reinforce why people here, and elsewhere, have been articulating so strongly in favor of a new 'computer literacy' as opposed to computer use. Use of MSExcel by itself will lead to a dumbnig down effect perhaps as many times as it has the oppposite. Microsoft's philosophy in general is "we do it all for you - sit back and munch popcorn in yuor lazey boy!".. thisis why so programmers adn artists many fear an mistrust them.. The same may be true for any packaged tool which comes without guidance, experience or understanding.. And it is participative experience, the essence of an active and emersive quality in life which is the crucial difference. 'Experience' these days is a word which has been wholesale drugged, gagged, beaten and kidpnapped by marketeers. Making things, doing thinsg with one's own mind, eye, hand brain.. experimenting, making mistakes, getting lost, finding one's way, trying again, succeeding .. that is experience. I argue: #1 It does NOT matter what tools one uses - sticks and sand, pencil and paper, python and laptop. It's how you use them that counts.. [pun by accident] You said it yourself - she had internalized the data and the insight.. Had the kids who used Excel, instead been taught the foundation of programatic thinking using 'hands-on' CLI and visualization tools like Python _before_ having being turned loose on MSExcell with its blasckbox, counter-intuitive, packaged magic charting 'wizards', they might even have surprised you even more! Would you ask them to run a 3.x minute mile before they can walk? [-> see #2 below] #2 It DOES matter what tools one uses. It's how you use them that counts.. Tools which are open..let one explore, tools whihc let one build one's own tools and use them how one wants.. These are good tools to use for learning. Computers are among the most adaptible tools ever invented, because they are tool building tools. One can thus grow with them and adapt them to ones learning. [-> see#1 above] If people [schools] put computers and dependancy upon them at the focus, and then ask everyone to adapt to them then a terrible mistake and disservice is being made. However, if children and learning are the center, and we teach how to use and adapt these soft tools [computers] to each other's needs [programming] then I believe we will see a flowering of human expression and intelligence whcih will make the renaissance look like kindergarden!! - Jason ___________________________________________________________ Jason CUNLIFFE = NOMADICS['Interactive Art and Technology'] ----- Original Message ----- From: "Thomas O'Connor" To: Cc: Sent: Thursday, April 19, 2001 6:39 PM Subject: [Edu-sig] Observations from the Northwest Science Expo > > On March 12 of this year, I participate as a middle school judge for > the Northwest Science Expo held on the campus of Portland State > University, in Portland Oregon. I was assigned to the team evaluating > middle school behavioral science projects along with 8 other > scientists and engineers. We evaluated 21 student projects. ...snip interesting annecdotes and concerned questions... From delza@alliances.org Fri Apr 20 02:38:01 2001 From: delza@alliances.org (Dethe Elza) Date: Thu, 19 Apr 2001 18:38:01 -0700 Subject: [Edu-sig] Observations from the Northwest Science Expo In-Reply-To: <200104192239.PAA23812@hpvcpto.vcd.hp.com> Message-ID: I'll have to go against Kirby here (sort of). I think this is a sign that computers have become fetish items which distract from teaching the basics. Let me use the metaphor of a calculator. A calculator can easily help you add, subtract, multiply, and divide, and helps to reduces errors with these operations. But when you try to do anything more advanced, such as algebra, the calculator doesn't really help unless you actually understand what you are doing. The difference with the computer (especially with the wizard-driven Excel graphs) is that the computer can still *look* like it's doing something for you even when you don't understand you're doing. I think we need to teach computers in school, but a) we cannot let them become fetishes, b) we cannot let them detract from the essentials of what is being taught, and c) we need to use computers for what they're good for (and that's a tough call). --Dethe Dethe Elza Chief Mad Scientist Burning Tiger Technologies From pdx4d@teleport.com Fri Apr 20 03:19:09 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Thu, 19 Apr 2001 19:19:09 -0700 Subject: [Edu-sig] Observations from the Northwest Science Expo In-Reply-To: References: <200104192239.PAA23812@hpvcpto.vcd.hp.com> Message-ID: <3.0.3.32.20010419191909.014036a4@pop3.norton.antivirus> At 06:38 PM 4/19/2001 -0700, Dethe Elza wrote: >I'll have to go against Kirby here (sort of). I think this is a sign that >computers have become fetish items which distract from teaching the basics. > It's just that I think learning *some* programming needs to be one of those basics. In my version of TomorrowLand, you really are no-kidding illiterate in a fundamental way if you have no programming skills whatsoever. Likewise, to know some programming is nothing to boast about (any more than knowing your alphabet) -- it's just one of those things, like riding a bike (doesn't mean you don't feel proud at first, but this is no way to stand out from the crowd -- this is all a logical consequence of what CP4E really means, IF we take it seriously). So let's talk about the 4 R's: Reading, wRiting, 'Rithmetic and pRogramming. Or, to keep it 3, just make sure 'Rithmetic is understood to include some of that command line stuff. Or conflate it with wRiting if you prefer. Any way you slice it, this is basic, fundamental, critical stuff. To not teach it when the technology is freely available is trully idiotic (just to be polemical about it). That being said, sure, maybe draw lots of your charts and graphs by hand and leave the Excel wizards out of it. Programming doesn't mean making more work than you need to. When I want to put a political cartoon on the web, I freehand it (with a pen, not a mouse or lightpen). No need for 3DStudio Max or Adobe Illustrator. But then I scan and FTP it -- finding the right _mix_ of technologies (paper and pencils are technology too, as are quill pens) is what's important. Kirby From wilson@visi.com Fri Apr 20 03:39:11 2001 From: wilson@visi.com (Timothy Wilson) Date: Thu, 19 Apr 2001 21:39:11 -0500 (CDT) Subject: [Edu-sig] Observations from the Northwest Science Expo In-Reply-To: Message-ID: On Thu, 19 Apr 2001, Dethe Elza wrote: > Let me use the metaphor of a calculator. A calculator can easily help you > add, subtract, multiply, and divide, and helps to reduces errors with these > operations. But when you try to do anything more advanced, such as algebra, > the calculator doesn't really help unless you actually understand what you > are doing. Educator's must be vigilant against using technology as a substitute for hard thinking. I've seen too many high school students use their calculators to divide a number by 10. Don't even get me started on proportional reasoning... -Tim -- Tim Wilson | Visit Sibley online: | Check out: Henry Sibley HS | http://www.isd197.k12.mn.us/ | http://www.zope.org/ W. St. Paul, MN | | http://slashdot.org/ wilson@visi.com | | http://linux.com/ From orcmid@email.com Wed Apr 25 23:13:51 2001 From: orcmid@email.com (Dennis E. Hamilton) Date: Wed, 25 Apr 2001 15:13:51 -0700 Subject: [Edu-sig] Observations from the Northwest Science Expo In-Reply-To: <200104192239.PAA23812@hpvcpto.vcd.hp.com> Message-ID: Wow! I have been away for a few days, and there are follow-on comments I haven't read yet as I clean up a 1000-posting Python backlog, winnowed to the 100 that I intend to read. This is awesome. First, I learned statistics in college, and yet it wasn't until, many years later where I took on being a statistician for a 29-week training project in which people managed their progress and achievement of their results through statistics that my relationship changed from a fun game with mathematics and numbers to an experienced measure of something that was happening in the world. I affirm that the *mechanical* use of computers is not appropriate in education or *anywhere* *else*. I tutored high-school algebra last summer, and I am putting together a team of 10 to provide more for the same school (the one my entire family attended) using fellow alumni from the class of '57. One of the things that I noticed is that the use of calculators and decimal notation leaves kids completely at sea when we get to rationals again as part of algebra (where decimal simplifications are unavailable). I don't mean to disparage the use of calculators. What I see is missing is that intimate relationship with numbers and arithmetic in which we begin to develop a sense of how these things work and can be confident in the manipulations and relationships that the algebra over standard arithmetic then abstracts and makes systematic. I tutored my 11-year-old grandnephew, a new 6th grader earlier this school year, and I saw how all he wanted to do was get an answer the teacher would accept. There was nothing about how we learned to deal with our fallibility as arithmeticians, being able to demonstrate our results to others and, indeed, being able to coach a fellow student. (I recently noticed that this is all in Polya's "How to Solve It", but when I examined it as a college freshman I didn't get it.) Getting back to the key point. Having an intimate relationship with the data and having a way to visualize the data's story born from that familiarity is crucial. When I worked for engineers at Boeing as a 19-year-old engineering aide, it was amazing to see their sense of the data and the automatic way their attention was drawn to things that looked off and needed to be explored more deeply. There was usually an error in the calculations, in some input data, or the rough model we were perfecting. I had the same experience working with Paul Horst, a serious statistician at the University of Washington at that time. Don't let go on what you observed. It is critical and much to be cultivated if we are to encourage the future engineers, managers, and leaders who we are going to entrust with shepherding the technologies of the future. The biggest concern I have is the lack of experience teachers may have with this themselves and how they are being thrown into a world of computer use without any way to get grounded in where the power really is. It does not empower them to teach and it does not give them a sense of the wonder and power of scientific approaches. More than anything, there is a missing compassion for human fallibility and the use of tools that mask that rather than give us mastery of it. Thank you for your thoughtfulness and careful observation. -- Dennis -----Original Message----- From: edu-sig-admin@python.org [mailto:edu-sig-admin@python.org]On Behalf Of Thomas O'Connor Sent: Thursday, April 19, 2001 15:39 To: edu-sig@python.org Cc: toconnor@hpvcpto.vcd.hp.com Subject: [Edu-sig] Observations from the Northwest Science Expo On March 12 of this year, I participate as a middle school judge for the Northwest Science Expo held on the campus of Portland State University, in Portland Oregon. I was assigned to the team evaluating middle school behavioral science projects along with 8 other scientists and engineers. We evaluated 21 student projects. This was a great group of kids and I want to be clear that this is in no way a criticism of any of their work. I believe that the judges took much effort to value and encourage the students. But as is often the case, a world view can be shattered by an example of something outstanding, which then shows all else to be mediocre. I had one of those experiences at NWSE, and it relates to the use of computers in education. I'd be interested in any comments anyone in this group has to offer. The outstanding example in this case was a project put together by young lady in the fourth grade (who was, by the way competing against 6-8th graders). Her project investigated the effects of varying light/dark cycle periods on bean plant growth. Her experimental design and investigation was reasonably thorough, particularly for someone her age, but not outstanding by comparison to those she was competing with. What struck me as outstanding however, was how she related to her data. When I asked what conclusions she drew from her experiment, she made an expansive hand motion, one of those "it should be clearly obvious to the most casual observer," gestures towards her hand drawn data plots. With wide eyed excitement, she explained how her data clearly proved her original thesis incorrect. It was clear that she had fully internalized her data. In this, she stood apart from here peers. By contrast, most other student I spoke with related to their graphs and charts as fuzzy abstract representations of their data. Some examples: * More than half of the students produced three-dimensional bar charts to display data. Unfortunately, only one student was able to accurately read their bar charts. The others failed to account for the parallax between the bar and the back of the graph which represented the X scale. * One young man was analyzing the effect of color on mood. But when he reported his results, his graph was color coded for color. In other words, his red bar represented the color black, the pink bar represented yellow, the yellow bar represented green. When asked about this, he said his software wouldn't let him pick the colors of the bars in his bar-chart. * An 8th grader noted that her results did not vary significantly from what would have been predicted from a purely random sampling. This was a very enlightened analysis, and the judges all gave her credit for attempting to utilize good statistical analysis. But the statistical theory she was attempting to utilize was clearly well beyond her knowledge and skill level. When asked why so much of her her project display was focused on the statistical analysis of her data when she admitted that she didn't really understand it, she stated, "well, Excel did all the math for me." * A sixth grader did a project to determine which parent the gene for red hair was inherited from. Her knowledge of genetics was impressive, particularly for her age. But the computer generated graphs she displayed conveyed no meaning to any of the judges. Had she displayed and focused on the genealogy charts she had stashed in the back of her project notebook, she probably would have won an award. * There were two students who had a very good project on luminescent solutions and the effects of solution temperature on luminescence. While their presentation was very good, what I found most notable in speaking with them was the rate of change graph they had scribbled on the back of a piece of yellow legal pad to explain the cascade effect they had observed. Their scribbled graph conveyed more meaning than all their beautiful computer generated charts. Questions to ponder: -------------------- * Does the use of the computer to generate charts enhance the synthesis of data, or might it actually hinder it? In this case, the fourth grader who was determining environmental effects on plant growth collected her data by drawing points on her graph each day during the experiment. At the science fair, she was able to articulate the meaning of that data better than other middle school students I spoke with. The only other students who showed equivalent understanding did so by utilizing a scribbled graph drawn on the back of a legal pad. So is there a correlation between the manual plotting of data and the cognitive interpretation of that data? * Gerald E. Jones in "How to LIE with CHARTS," on the "old fassion" approach to charting mused: Having such crude tools might have forced those early chart-makers into slower thought processes. It is conceivable that they actually pondered carefully composition--maybe even the content!--of those pathetically simple charts and graphs. Can it be that in their technological poverty they achieved a higher level of consciousness? Did they actually come to grasp the meaning of their graphic creations? [1] With the proliferation of three-dimensional bar that even the creators can not accurately read, is the real meaning of the data being masked by the visual presentation? * I know from experience that I can take someone who is generally computer phobic but who has a good understanding of statistics, sit them down in front of Excel, and within a few hours they can be using it productively. On the other hand, as I observed, an 8th grader who knows Excel inside and out, cannot do meaningful statistics. So why do so many people insist that schools teach Excel, or Word, or Powerpoint for example? Shouldn't the real focus be on teaching number theory, problem solving, language composition and cognitive perception? I'm beginning to wonder how much benefit computers actually add to the learning process? I'd welcome a discussion on the topic by those who are effectively utilizing computers in their curriculum today. Thanks for the bandwidth. Tom O. ----- Thomas O'Connor toconnor@vcd.hp.com Hewlett Packard, Vancouver Washington Phone: (360) 212-5031 Telnet: 212-5031 [1] "How to LIE with CHARTS," Gerald E. Jones, Sybex, 1995, p. XVII. See also: "The Visual Display of Quantative Information," Edward Tufte, Graphics Press, 1983 ----- Thomas O'Connor toconnor@vcd.hp.com Hewlett Packard, Vancouver Washington Phone: (360) 212-5031 Telnet: 212-5031 _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig From pdx4d@teleport.com Sat Apr 28 05:20:15 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Fri, 27 Apr 2001 21:20:15 -0700 Subject: [Edu-sig] Algebra + Python In-Reply-To: Message-ID: <000801c0cf9a$87109ce0$0802a8c0@KirbyUrner> I like to imagine a fictional but possible world in which computer programming for everybody (CP4E) means smoother integration of math and computer science in the lower grades. In the real world, there's a push to make the teaching of algebra more widespread at the 8th grade level. What I imagine is that this is the grade level where we might formally begin using some programming language (e.g. Python, Scheme) in the classroom -- in the sense of having students look at and write source code. In 7th grade, they might watch the teacher project some command line stuff, but getting under the hood wouldn't happen quite as much. A link between programming and algebra is in this concept of variables. A polynomial in the 2nd degree is typically written as Ax^2 + Bx + C, which in Python is more like A*x**2 + B*x + C. The capital letters are called constant coefficients and they "fix" a polynomial, give it its characteristic "call letters" (like in radio: the is KQPD...). Then x is what varies -- you might stipulate over some domain, e.g. from in [-10,10] (square brackets means inclusive). At the command line, 8th graders would have one kind of function called a "polynomial factory" that turned out polynomials with a specific set of coefficients. These would then be floated as functions in their own right, ready to take in x domain values and spit out f(x) range values. There may be a better way to write the factory function than I've shown below. I'd like to see other solutions: >>> def makepoly(A,B,C): """ Build a polynomial function from coefficients """ return eval("lambda x: %s*x**2 + %s*x + %s" % (A,B,C)) >>> f = makepoly(2,3,4) # pass coefficients as arguments >>> f(10) # f is now a function of x 234 >>> 2*10**2 + 3*10 + 4 # check 234 >>> f(-10) 174 >>> [f(x) for x in range(-10,11)] # remember, 2nd arg is non-inclusive [174, 139, 108, 81, 58, 39, 24, 13, 6, 3, 4, 9, 18, 31, 48, 69, 94, 123, 156, 193, 234] >>> g = makepoly(1,-2,-7) # make a new polynomial >>> g(5) 8 >>> g(f(5)) # composition of functions 4616 >>> f(g(5)) # f(g(x)) is not equal to g(f(x)) 156 The same technique might be applied to a sinewave function. Here the coefficients may appear is follows: f(x) = A sin(Bx + C) + D You can imagine doing the factory function, based on the above example, or using some (better?) strategy. Below is a web resource that implements some of these same ideas, also using a computer language, but to my eye it all looks less intuitive in the J language (what the text says is featured). Is it just me? Is this just because I've spent more time with Python? I'm sure that's partly it. http://www.jsoftware.com/pubs/mftl/mftl.htm Moving beyond 8th grade, we want students to understand what's meant be D(f(x)) at point x, i.e. dy/dx at x -- the derivative. Again, Python makes this easy in that we can write a generic derivative taker: >>> def deriv(f,x): """ Return approximate value of dy/dx at f(x) """ h = .0001 return (f(x+h)-f(x))/h >>> deriv(f,2) # f(x) = 2*x**2 + 3*x + 4 11.000200000026439 >>> deriv(g,2) # g(x) = x**2 - 2*x - 7 2.0001000000036129 If you remember how to take the derivative of a polynomial, you'll know that f'(x) = 4*x + 3 and g'(x) = 2*x - 2 -- so these are pretty good approximations. Somebody challenged us on math-teach to think of how we might teach crypto and number theory to 7th graders. My suggestions are in this thread (Number Theory question, reply to Wayne Bishop, 25 Apr 2001 http://www.mathforum.com/epigone/math-teach/zilbangkan ). I use the IDLE CLI quite a bit, along with my ciphers.py Another post re Python + Intro Calculus, as per the above is at: http://www.mathforum.com/epigone/math-learn/wonbloryeh I think any of us who know some Python, and some math, can write this kind of stuff. It's not esoteric. I'd just like to see more of it, is all, coming from a lot of different corners. That's because I think a CP4E world would have some major advantages over the current one, including more students motivated to comprehend technology at deeper levels (I think adding more computer stuff to math will make it less of a turn off for many students, if done in a cool and interesting way (which doesn't have to mean super glitzy at every turn -- a bare bones CLI ala IDLE can be part of it)). Kirby From pdx4d@teleport.com Sat Apr 28 05:23:09 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Fri, 27 Apr 2001 21:23:09 -0700 Subject: [Edu-sig] Algebra + Python Message-ID: <000901c0cf9a$f02f0360$0802a8c0@KirbyUrner> I like to imagine a fictional but possible world in which computer programming for everybody (CP4E) means smoother integration of math and computer science in the lower grades. In the real world, there's a push to make the teaching of algebra more widespread at the 8th grade level. What I imagine is that this is the grade level where we might formally begin using some programming language (e.g. Python, Scheme) in the classroom -- in the sense of having students look at and write source code. In 7th grade, they might watch the teacher project some command line stuff, but getting under the hood wouldn't happen quite as much. A link between programming and algebra is in this concept of variables. A polynomial in the 2nd degree is typically written as Ax^2 + Bx + C, which in Python is more like A*x**2 + B*x + C. The capital letters are called constant coefficients and they "fix" a polynomial, give it its characteristic "call letters" (like in radio: the is KQPD...). Then x is what varies -- you might stipulate over some domain, e.g. from in [-10,10] (square brackets means inclusive). At the command line, 8th graders would have one kind of function called a "polynomial factory" that turned out polynomials with a specific set of coefficients. These would then be floated as functions in their own right, ready to take in x domain values and spit out f(x) range values. There may be a better way to write the factory function than I've shown below. I'd like to see other solutions: >>> def makepoly(A,B,C): """ Build a polynomial function from coefficients """ return eval("lambda x: %s*x**2 + %s*x + %s" % (A,B,C)) >>> f = makepoly(2,3,4) # pass coefficients as arguments >>> f(10) # f is now a function of x 234 >>> 2*10**2 + 3*10 + 4 # check 234 >>> f(-10) 174 >>> [f(x) for x in range(-10,11)] # remember, 2nd arg is non-inclusive [174, 139, 108, 81, 58, 39, 24, 13, 6, 3, 4, 9, 18, 31, 48, 69, 94, 123, 156, 193, 234] >>> g = makepoly(1,-2,-7) # make a new polynomial >>> g(5) 8 >>> g(f(5)) # composition of functions 4616 >>> f(g(5)) # f(g(x)) is not equal to g(f(x)) 156 The same technique might be applied to a sinewave function. Here the coefficients may appear is follows: f(x) = A sin(Bx + C) + D You can imagine doing the factory function, based on the above example, or using some (better?) strategy. Below is a web resource that implements some of these same ideas, also using a computer language, but to my eye it all looks less intuitive in the J language (what the text says is featured). Is it just me? Is this just because I've spent more time with Python? I'm sure that's partly it. http://www.jsoftware.com/pubs/mftl/mftl.htm Moving beyond 8th grade, we want students to understand what's meant be D(f(x)) at point x, i.e. dy/dx at x -- the derivative. Again, Python makes this easy in that we can write a generic derivative taker: >>> def deriv(f,x): """ Return approximate value of dy/dx at f(x) """ h = .0001 return (f(x+h)-f(x))/h >>> deriv(f,2) # f(x) = 2*x**2 + 3*x + 4 11.000200000026439 >>> deriv(g,2) # g(x) = x**2 - 2*x - 7 2.0001000000036129 If you remember how to take the derivative of a polynomial, you'll know that f'(x) = 4*x + 3 and g'(x) = 2*x - 2 -- so these are pretty good approximations. Somebody challenged us on math-teach to think of how we might teach crypto and number theory to 7th graders. My suggestions are in this thread (Number Theory question, reply to Wayne Bishop, 25 Apr 2001 http://www.mathforum.com/epigone/math-teach/zilbangkan ). I use the IDLE CLI quite a bit, along with my ciphers.py Another post re Python + Intro Calculus, as per the above is at: http://www.mathforum.com/epigone/math-learn/wonbloryeh I think any of us who know some Python, and some math, can write this kind of stuff. It's not esoteric. I'd just like to see more of it, is all, coming from a lot of different corners. That's because I think a CP4E world would have some major advantages over the current one, including more students motivated to comprehend technology at deeper levels (I think adding more computer stuff to math will make it less of a turn off for many students, if done in a cool and interesting way (which doesn't have to mean super glitzy at every turn -- a bare bones CLI ala IDLE can be part of it)). Kirby From pdx4d@teleport.com Sat Apr 28 05:32:06 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Fri, 27 Apr 2001 21:32:06 -0700 Subject: [Edu-sig] Algebra + Python In-Reply-To: <000901c0cf9a$f02f0360$0802a8c0@KirbyUrner> Message-ID: <000a01c0cf9c$2f1f4480$0802a8c0@KirbyUrner> My apologies for the double-post. That was my doing (not some other kind of glitch). Kirby From schoen@loyalty.org Sat Apr 28 06:14:41 2001 From: schoen@loyalty.org (Seth David Schoen) Date: Fri, 27 Apr 2001 22:14:41 -0700 Subject: [Edu-sig] Algebra + Python In-Reply-To: <000801c0cf9a$87109ce0$0802a8c0@KirbyUrner>; from pdx4d@teleport.com on Fri, Apr 27, 2001 at 09:20:15PM -0700 References: <000801c0cf9a$87109ce0$0802a8c0@KirbyUrner> Message-ID: <20010427221441.Z5636@zork.net> Kirby Urner writes: > A link between programming and algebra is in this concept > of variables. A polynomial in the 2nd degree is typically > written as Ax^2 + Bx + C, which in Python is more like > A*x**2 + B*x + C. The capital letters are called constant > coefficients and they "fix" a polynomial, give it its > characteristic "call letters" (like in radio: the is > KQPD...). Then x is what varies -- you might stipulate > over some domain, e.g. from in [-10,10] (square brackets > means inclusive). This point is very subtle. I'm afraid that a lot of adults still couldn't tell -- for example -- the difference between an expression like "x+3" and an equation like "y=x+3". Mathematicians tend to get very comfortable with higher-order functions, "function factories", operations on functions, and the like. Unfortunately, it seems that other people often don't. If we see in a math book Consider the equation y = Ax + B there's already a good deal of sophistication: first, "y = Ax + B" is _not_ a general fact (or theorem) which is true in general, without context or qualification. In this case it's a hypothesis, or, some would say, a statement of a subworld in which this _is_ an axiom or a theorem (one of many possible such subworlds contained as logical possibilities within our own world). (This might be confusing because _some_ formulas, like those in physics or like the quadratic formula, _are_ general -- and are something to memorize and to apply in a whole class of situations. Whereas here, this equation is not a great truth about nature, but just an assumption which we make temporarily to see what would follow from it.) But also, A and B were not specified explicitly. So we're told that "A and B are numbers" and "x and y are numbers" -- but they have different roles with respect to the situation. A, B, x, and y are _all_ unspecified, but A and B are "constants" and x and y are "variables": yet later on we may make a further hypothesis. "Suppose x is 3 -- then what happens?" (One kind of answer is "Then y will be 3A + B".) Isn't it funny, from the point of view of a beginning algebra student, that a "constant", which is supposed to represent a _particular number_, is still often given in symbolic form, and we often never learn what the constant actually stood for? That leads to yet another conceptual problem: _do_ variables always actually "stand for" some particular quantity? At the very beginning of algebra, as I experienced it, the answer was an unqualified "yes": each letter is just a sort of "alias" or "code name" or something for a _particular quantity_, and it is our job to find that particular quantity and so "solve the problem". This completely glosses over the possibility of underdetermined equations, which simply describe relationships between quantities (some mathematicians like to think of functions, or mappings between sets). If we say y=f(x) -- without giving other simultaneous equations -- we have an underdetermined system, and there is no longer a meaningful question of "What is x?". x is not anything in particular; x is really a signifier for the entire domain of a function. But, interestingly, if we add more equations to a system, it may become determined. In that case, we are asking "What are the particular values of the variables x, y, z for which all of these things could be true at the same time?" or "If all of these constraints were applied at once, what possibilities would be left?" or "What is the intersection of the geometric objects corresponding to the loci of points satisfying each of these relations?". In the geometric interpretation, "y = Ax^2 + Bx + C" is actually an equation representing a shape in five-dimensional shape, one equation in five unknowns. When we study a particular quadratic, we are intersecting that shape with the shapes given by three other equations: A = [some given constant], B = [some given constant], and C = [some given constant]. Then, by substitution, we could turn this, if we choose, into one equation in two unknowns (the familiar quadratic). But some people would prefer to say that all five dimensions are still there -- we are just looking at a particular region, where some other conditions specific to our problem happen to obtain. The geometric interpretation of any equation (or inequality or other kind of relation) as expressing something about a subset of a space with a huge number of dimensions (one per variable) is something that shows up in explicit detail in linear algebra, but before that is only hinted at. Some Algebra II textbooks mention a bit about "so many equations in so many unknowns", and substitution, and maybe even determinants, but there isn't the strong geometric sense of "there are an infinite number of dimensions of space, and by writing mathematical relations we choose to focus our attention on intersections or disjunctions or whatever of subsets of that space". And I don't know whether the multidimensional spatial metaphor is helpful or harmful in 7th grade; if people have read E. A. Abbott, it will at least be _exciting_ to them. Once I studied Scheme and lambda and environments in _SICP_, I felt much more comfortable about all of this. Here programming can help a great deal, I think. But I wonder how many algebra students can't really see what's going on and what the actual roles of those letters are. > At the command line, 8th graders would have one kind of > function called a "polynomial factory" that turned out > polynomials with a specific set of coefficients. These > would then be floated as functions in their own right, > ready to take in x domain values and spit out f(x) range > values. > > There may be a better way to write the factory function than > I've shown below. I'd like to see other solutions: > > >>> def makepoly(A,B,C): > """ > Build a polynomial function from coefficients > """ > return eval("lambda x: %s*x**2 + %s*x + %s" % (A,B,C)) If Python's variable scope rules didn't prevent it, return lambda x: A*x**2 + B*x + C would be much easier to read, because it would avoid the format string stuff, which is _not_ so intuitive unless you're already a C programmer. Earlier today I wrote "%02x" without flinching, so "%s" is second nature. But if you're trying to get students to understand how the lambda is working, "%s" and the tuple may add a lot of confusion which it would be nice to be able to avoid. > >>> f = makepoly(2,3,4) # pass coefficients as arguments > >>> f(10) # f is now a function of x > 234 > >>> 2*10**2 + 3*10 + 4 # check > 234 > >>> f(-10) > 174 > >>> [f(x) for x in range(-10,11)] # remember, 2nd arg is non-inclusive > [174, 139, 108, 81, 58, 39, 24, 13, 6, 3, 4, 9, 18, 31, > 48, 69, 94, 123, 156, 193, 234] > >>> g = makepoly(1,-2,-7) # make a new polynomial > >>> g(5) > 8 > >>> g(f(5)) # composition of functions > 4616 > >>> f(g(5)) # f(g(x)) is not equal to g(f(x)) > 156 I still think that some of my old math teachers would be floored if they could see some of these applications. > Moving beyond 8th grade, we want students to understand what's > meant be D(f(x)) at point x, i.e. dy/dx at x -- the derivative. > Again, Python makes this easy in that we can write a generic > derivative taker: > > >>> def deriv(f,x): > """ > Return approximate value of dy/dx at f(x) > """ > h = .0001 > return (f(x+h)-f(x))/h > > >>> deriv(f,2) # f(x) = 2*x**2 + 3*x + 4 > 11.000200000026439 > >>> deriv(g,2) # g(x) = x**2 - 2*x - 7 > 2.0001000000036129 > > If you remember how to take the derivative of a polynomial, you'll > know that f'(x) = 4*x + 3 and g'(x) = 2*x - 2 -- so these are pretty > good approximations. I would add an h parameter, with a default value: def deriv(f,x,h=0.0001): return (f(x+h)-f(x))/h Another possibility is to take the right-limit numerical derivative and the left-limit numerical derivative. def left_deriv(f,x,h=0.0001): return (f(x)-f(x-h))/h Contrasting the two shows (among other things) that the numerical methods are imprecise and the kind of errors you get may depend on where you take your samples. (The magnitude of the error will depend on the magnitude of h, but the sign of the error will depend on which side you take the derivative on.) I think I would have been happy to have been given some numerical methods before I knew calculus, and then to learn a precise way to do it. (If I had programs that say that the slope of something is 2.0000001, I would like to know how to prove that my programs aren't quite right, and that the real slope is 2.) Python is a good language for this; I have written concise Riemann sum and Monte Carlo programs which find the area under a circle, to illustrate for students how those techniques work. My Riemann sum program is 17 lines and my Monte Carlo program is 51 lines; I think they're readily readable for a non-programmer. The current situation is definitely the reverse -- you get symbolic differentiation and integration first, and numerical methods on a computer later on. In fact, because I wasn't going into engineering, I never had the numerical methods course, and I still don't know about a lot of the efficient ways for doing numerical integration of differential equations and so on. I wonder whether the "symbolic first, numerical later" comes from the historical lack of availability of computers, or whether it's intended to promote detailed understanding. I know a lot of math teachers were very unhappy with graphing calculators because of the extent to which their approximations can substitute for proof. You would see algebra tests where a teacher would say "solve this system" or "solve this polynomial" and students would pull out graphing calculators and get an answer like "2.003" and write "x=2". So one obvious problem is that they weren't solving anything -- they were just typing the equations into the graphing calculator, and it would find intersections or roots by iterative approximation methods. Another problem is that students were seeing an answer that looked plausible and believing it without any proof. So if x "looks like about 2" (in the calculator), students might have little compunction about writing "x=2". But this could be wrong! It's easy to devise problems where a numerical solution is _close to_ an integer or a rational, so if you do an approximation you can easily be misled. Sometimes there is a symbolic method which would give a precise answer in symbolic form (and show that the guess from the approximation is actually incorrect). On the other side, people who do work with applied mathematics nowadays often spend a lot of time writing programs to do numerical approximation -- numerical integration and differentiation, numerical approximate solution of linear systems, numerical approximation of roots of polynomials, and dynamic or statistical simulation. I met lots of experimental physicists who did simulation work and who weren't trying to find any kind of symbolic form for anything -- they wanted _numbers_! Crunch, crunch, crunch. So some people might say that, if a good deal of mathematics is done (as it is) with computer approximation and simulation, then getting people started early with experimenting with computer approximation and simulation is a good thing. The question is whether there is necessarily a loss in understanding of theory when people are taught these numerical techniques early on. (Who wants to do symbolic integration to figure a definite integral when your TI calculator has FnInt?) Of course, you can program symbolic manipulation in a computer too. A very good exercise which some students at my old high school once got a lot of attention for attacking is symbolic differentiation -- given a string or a tree representation of a function of one variable, compute a string or a tree representation of its symbolic derivative. The representation just has to be _valid_; you don't have to simplify. This also leads to the interesting question of how you get a string converted into a tree or a tree converted into a string, which is something people are _definitely_ going to encounter in great detail in computer science. Finding the abstract structure of a formal expression, which is to say parsing it, just keeps coming up everywhere. I could have understood a lot about that in high school, if somebody had taught it. -- Seth David Schoen | And do not say, I will study when I Temp. http://www.loyalty.org/~schoen/ | have leisure; for perhaps you will down: http://www.loyalty.org/ (CAF) | not have leisure. -- Pirke Avot 2:5 From pdx4d@teleport.com Sat Apr 28 09:44:51 2001 From: pdx4d@teleport.com (Kirby Urner) Date: Sat, 28 Apr 2001 01:44:51 -0700 Subject: [Edu-sig] Algebra + Python In-Reply-To: <20010427221441.Z5636@zork.net> Message-ID: <000701c0cfbf$7dd3a760$0802a8c0@KirbyUrner> Lot's of interesting ruminations here. > disjunctions or whatever of subsets of that space". And I don't know > whether the multidimensional spatial metaphor is helpful or harmful in > 7th grade; if people have read E. A. Abbott, it will at least be > _exciting_ to them. ( I'm somewhat impatient with this approach of using "higher dimensions" as hype (pun intended) -- getting math to seem "cool" by doing stage magic ala Abbott. But I'm very much in the minority here. ) > Once I studied Scheme and lambda and environments in _SICP_, I felt > much more comfortable about all of this. Here programming can help > a great deal, I think. But I wonder how many algebra students can't > really see what's going on and what the actual roles of those letters > are. Yes, good point. I think it all seems clearer once you've got the computer language to refer to. Just studying the language clears up operating on functions, passing functions as parameters. Python makes this all more concrete, easier to wrap your brain around. > If Python's variable scope rules didn't prevent it, > > return lambda x: A*x**2 + B*x + C I think there's something more like this I'm just not getting tonight. The scoping rules did change recently. Surely there's a better way than my eval("%s") stuff, I agree. > I would add an h parameter, with a default value: > > def deriv(f,x,h=0.0001): > return (f(x+h)-f(x))/h Yeah, good suggestion. There's also a way to compute an optimized h based on analysis of the function itself, but I don't have that at my finger tips. > I could have understood a lot about that in high school, if somebody > had taught it. You make a lot of on-target observations in this post, ask some good questions. Given different learners have different strengths and weaknesses, what's the best mix of approaches and methods is maybe not something we can optimize in a blanket way. But the computer language and command line capability adds a lot more tools and ways to get at the substance of math. It's a whole new bag of tricks (relatively new). I think teachers will eventually have a lot of fun with this stuff -- but right now calculators are all the rage, are hogging the limelight. Given all the stuff you can do with computers, kids want them (MP3s, web etc.). But calculators are pretty specialized and relatively few would go out and buy them were they not required for various math courses. So you spend a lot of time learning to use a tool that you may not use beyond the math course itself (if you're going to be using math professionally, you'll likely switch to a computer). With a computer language, though, you've got something to grow with. It'll engage the operating system, serve as a way to control various other apps via APIs and so forth. I think this is a better and more versatile platform on which to build in a lot of mathematical concepts, vs. being so reliant on calculators. Kirby From Brent.Burley@disney.com Mon Apr 30 17:56:49 2001 From: Brent.Burley@disney.com (Brent Burley) Date: Mon, 30 Apr 2001 09:56:49 -0700 Subject: [Edu-sig] Algebra + Python Message-ID: <3AED9951.1511FA55@fa.disney.com> Kirby wrote: > There may be a better way to write the factory function than > I've shown below. I'd like to see other solutions: > > >>> def makepoly(A,B,C): > """ > Build a polynomial function from coefficients > """ > return eval("lambda x: %s*x**2 + %s*x + %s" % (A,B,C)) How about this? class poly: def __init__(self, A, B, C): self.A, self.B, self.C = A, B, C def __call__(self, x): return self.A * x**2 + self.B * x + self.C >>> f = poly(2,3,4) >>> f(10) 234 Having to know about classes pushes you more into learning Python as a programming language rather than just using Python as a math exploration tool, but that could be a good thing. You could even expand on the idea by adding additional methods that relate to polynomials (deriv, integral, roots, etc.): class poly: ... def deriv(self, x): return 2*self.A*x + self.B >>> f.deriv(2) 11 Brent