The idea of rich data structures was to take advantage of the Internet by providing students with more meaningful precoded data through which to plow. Examples: * all the bones in the body as a tree structure (with some fancy networking among skull bones) * GIS info (I posted cities.xml from Winterhaven) * the eight planets of our solar system, plus Pluto and Iris (the latter owned by CBS (smile)). The idea of a rich data stream anticipates Python 3's strong powers around data bitting (new bit type), which'll make OO dissection of IPv6 packets (legacy IPv4 packets) a cinch. Kids'll groove in their ability to really dissect what's going on over the wire (sniffed from the ether or whatever). Rather than encourage too much interloping on neighbors' comm channels (a favorite hacker pass time I realize), we need canned data streams of a simplified "cave painting" nature, with known solutions. Like it'll be a goal of the packetsniffer.py package to zip through these canned packets at high (enough) speed, and to spit back reports on whether they're tcp or udp, used by which flavored protocols and so on (you need ideas about protocol if you hope to reconstruct the payload, for all but the simplest of containers). Students will grow to understand tcp/ip by reading packetsniffer's deliberately *non*-obfuscated source code. What a relief to see it all in Python, vs. staring at low-level C structs all the time. Most would die of boredom before getting there. Python keeps it less boring. I'm aware that the Python Community hasn't waited for Python 3 before beginning work in this genre. Python has some of the more sophisticated networking tools around, including flagship peer to peer bittorrent in wx. Python is *truly* an effective language, which is why certain unnamed schools of low standards prefer students to concentrate on maybe Visual Basic or Java. The former is toothless enough (minus the ActiveX add-ons), and the latter is difficult enough, that relatively few in those two camps are as likely to experience the free flowing and comprehensible style we Pythoneers simply take for granted. Tough luck for them, and best wishes on some next iteration.** Kirby ** of course this rhetoric is full of false dichotomies, I realize. Many of us who code in Python likewise enjoy Java and VB.NET sometimes, or C# or whatever. I came to Python via Java from xBase (which I still use), and before that APL (which got me spoiled on always wanting REPL). So to heap scorn on BASIC, which I'm not doing, is really ahistorical anyway. There wasn't any Python way back then, especially not on the ROM chip when you booted the PC. However, I *do* still oppose this misguided "Python: the new BASIC" meme. I think that's stupid, as it overlooks Python's way stronger potential owing to its much higher level of design sophistication. "Python ain't yer grandfather's BASIC" is the slogan I'd prefer. Too bad JavaScript is so poorly named, as it'd be a better runner up to Python (because of the DOM) than most 2nd banana languages.
kirby urner wrote:
The idea of rich data structures was to take advantage of the Internet by providing students with more meaningful precoded data through which to plow.
Examples:
* all the bones in the body as a tree structure (with some fancy networking among skull bones)
* GIS info (I posted cities.xml from Winterhaven)
* the eight planets of our solar system, plus Pluto and Iris (the latter owned by CBS (smile)).
The idea of a rich data stream anticipates Python 3's strong powers around data bitting (new bit type), which'll make OO dissection of IPv6 packets (legacy IPv4 packets) a cinch.
Kirby, I've seen your posts re building up a reusable set of data for teaching before, and I think it is a good idea. Where are you collecting and making this information available? It seems like a single project under source control would allow others to utilize and contribute to such a stockpile, piece by piece. -Jeff
On 8/23/07, Jeff Rush <jeff@taupro.com> wrote:
Kirby, I've seen your posts re building up a reusable set of data for teaching before, and I think it is a good idea. Where are you collecting and making this information available? It seems like a single project under source control would allow others to utilize and contribute to such a stockpile, piece by piece.
-Jeff
I'm more just into upholding edu-sig's reputation as a source of great ideas. Rich Data Structures & Streams, you saw it here first. Kirby
kirby urner wrote:
On 8/23/07, Jeff Rush <jeff@taupro.com> wrote:
Kirby, I've seen your posts re building up a reusable set of data for teaching before, and I think it is a good idea. Where are you collecting and making this information available? It seems like a single project under source control would allow others to utilize and contribute to such a stockpile, piece by piece.
I'm more just into upholding edu-sig's reputation as a source of great ideas. Rich Data Structures & Streams, you saw it here first.
I was afraid of that. ;-( It would make a valuable resource. The world has more than enough great ideas -- but a severe shortage of those who adopt them, refine them and bring them into fruition. I see this here, from the community as a whole, on edu-sig and we've seen it for the past five years on the various advocacy lists. An issue gets raised, ideas flow in, and nothing happens. Sometime later the same is raised again and many of the same ideas come in. And truly good ideas languish because those rare, precious people with a tendency to step forward already have a (over) full slate and cannot take on any more while the rest consider ideas their sole contribution. It is the birthing and raising not the conception that takes more effort - ask any parent. I've just been frustrated lately across several spheres of life with how very hard it is to get people, in general, to get involved, to take on meaningful projects even those they agree are valuable. The explanation eludes me and keeps me awake at night and I ask those I meet from other walks of life why. ---- Be careful. If you wave your hands around wildly like that for too long, you're likely to fly up into the air and bump your head against the ceiling.
On 8/24/07, Jeff Rush <jeff@taupro.com> wrote:
kirby urner wrote:
Kirby, I've seen your posts re building up a reusable set of data for teaching before, and I think it is a good idea. Where are you collecting and making this information available? It seems like a single project under source control would allow others to utilize and contribute to such a stockpile, piece by piece.
I'm more just into upholding edu-sig's reputation as a source of great ideas. Rich Data Structures & Streams, you saw it here first.
I was afraid of that. ;-( It would make a valuable resource.
Jeff, if you have an idea where to store pointers to rich data sources (Python Wiki maybe?), we could start collecting them there. Here are a few for starters: ISO Country Codes list: http://xml.coverpages.org/country3166.html Moby Word Lists: http://www.dcs.shef.ac.uk/research/ilash/Moby/ MathWorld, lookup formulas to your hearts content: http://mathworld.wolfram.com/ There are many more, of course, and I too would love to see a good place where we could collect them. See the Frink language for a interesting approach: Many data sources are built-ins to Frink, and the language uses units rather than simple numbers to represent data. http://futureboy.homeip.net/frinkdocs/ HTH --Dethe
On 8/23/07, Jeff Rush <jeff@taupro.com> wrote:
I'm more just into upholding edu-sig's reputation as a source of great ideas. Rich Data Structures & Streams, you saw it here first.
I was afraid of that. ;-( It would make a valuable resource.
Yes, valuable as in we might use it to our competitive advantage in order to recruit more students into our program.
The world has more than enough great ideas -- but a severe shortage of those who adopt them, refine them and bring them into fruition. I see this here,
I did put together cities.xml: http://www.4dsolutions.net/ocn/python/cities.xml But just randomly piling large sets of data across all subjects and making someone king of that hill doesn't necessarily sound like a good idea to me. Sounds more like something they'd try in Texas. ;-)
from the community as a whole, on edu-sig and we've seen it for the past five years on the various advocacy lists. An issue gets raised, ideas flow in, and
Edu-sig has been doing Python Advocacy for longer than any of the so-called advocacy lists right? Go edu-sig!
nothing happens. Sometime later the same is raised again and many of the same ideas come in. And truly good ideas languish because those rare, precious people with a tendency to step forward already have a (over) full slate and cannot take on any more while the rest consider ideas their sole contribution. It is the birthing and raising not the conception that takes more effort - ask any parent.
I'm working with other busy gnu math teachers on carving out a niche in the ecosystem, so like stashes of polyhedral OFF files, X3D stuff, EIG stuff, is our specific rich data. But do I try to jumble my stuff with that of every other teacher? No. We gnu math teachers are actually kinda cliquey. Any other big American city could do what we do and intercept Pentiums headed for the landfill. Free Geek (freegeek.org) doesn't make a secret of how it works. But *do* they? We're maybe just not so lazy in Portland?
I've just been frustrated lately across several spheres of life with how very hard it is to get people, in general, to get involved, to take on meaningful projects even those they agree are valuable. The explanation eludes me and keeps me awake at night and I ask those I meet from other walks of life why.
I think sometimes football metaphors help. Something about different teams not wanting to share all the same coaches (at least not simultaneously). Kirby
kirby urner wrote:
On 8/23/07, Jeff Rush <jeff@taupro.com> wrote:
The world has more than enough great ideas -- but a severe shortage of those who adopt them, refine them and bring them into fruition. I see this here,
I did put together cities.xml: http://www.4dsolutions.net/ocn/python/cities.xml
And I thank you - I incorporated it into the DataResources page I outline below.
But just randomly piling large sets of data across all subjects and making someone king of that hill doesn't necessarily sound like a good idea to me.
Sounds more like something they'd try in Texas. ;-)
Hey, I'm no "King of the Hill" TV guy ;-) I picture this more like a barn raising in Texas - friends and helpful folk get together and pitch in where they can. Maybe at first it looks confusing, with lots of donated items heaped about but then a leader here or there looks it over, begins to see a pattern, and starts to organize the heap. Let's not turn away help even if we're not yet sure where each piece fits. BTW, thanks everyone for the links posted to this list as data streams. All were very good reading, but the data streams I was thinking about was basically raw data on which instructors can build. Some of the links were standalone web-interactive experimentation areas and some were domain-specific teaching languages other than Python - all valuable in their own right and I've made a list to get them onto the wiki. Taking a cue from Laura's suggestion, I've reworked the Edu-SIG wiki page which actually didn't have much on it (as a group we could enhance this). http://www.python.org/community/sigs/current/edu-sig/ I started a catalog of educational data resources underneath it at: http://wiki.python.org/moin/EduSig/DataResources and defined a wiki category for "PythonInEducation". Seems there was one for "PythonInBusiness" but not for education (or science - there is now). There is also a suggestion box at the bottom of the data resources page to collect more ideas and links to reusable data.
nothing happens. Sometime later the same is raised again and many of the same ideas come in. And truly good ideas languish because those rare, precious people with a tendency to step forward already have a (over) full slate and cannot take on any more while the rest consider ideas their sole contribution. It is the birthing and raising not the conception that takes more effort - ask any parent.
I'm working with other busy gnu math teachers on carving out a niche in the ecosystem, so like stashes of polyhedral OFF files, X3D stuff, EIG stuff, is our specific rich data.
But do I try to jumble my stuff with that of every other teacher? No. We gnu math teachers are actually kinda cliquey.
Any other big American city could do what we do and intercept Pentiums headed for the landfill. Free Geek (freegeek.org) doesn't make a secret of how it works. But *do* they?
We're maybe just not so lazy in Portland?
I'm not sure you and I are using the same definition of the spirit of FOSS. ;-) Mine is more about sharing with anyone who comes along, less about cliques, less about my city or state or country against another. And less about who gets credit - more about a private joy that something you've created is helping those who have no idea who you are. But FOSS I'd guess is broad enough to encompass many definitions. 8-) -Jeff
Jeff Rush wrote:
Taking a cue from Laura's suggestion, I've reworked the Edu-SIG wiki page which actually didn't have much on it (as a group we could enhance this).
Pardon, I mispoke and mixed my URLs --- there *is* much wonderful Edu-SIG content under: http://www.python.org/community/sigs/current/edu-sig/ I was misled by the empty page at: http://wiki.python.org/moin/EduSig/ -Jeff
On 9/5/07, Jeff Rush <jeff@taupro.com> wrote:
Sounds more like something they'd try in Texas. ;-)
Hey, I'm no "King of the Hill" TV guy ;-) I picture this more like a barn
I enjoy that show when I tune it in. Mike Judge is a hero of mine.
raising in Texas - friends and helpful folk get together and pitch in where they can. Maybe at first it looks confusing, with lots of donated items
Sounds very Amish. As a Quaker, I can't recall ever raising a barn, but I bet it's fun. Lotsa potluck. Lotsa geodesic domes here in Oregon and I *have* participated in some of those going in (one in particular north of Fremont -- I should check Google Earth). All open source technology by the way.
heaped about but then a leader here or there looks it over, begins to see a pattern, and starts to organize the heap. Let's not turn away help even if we're not yet sure where each piece fits.
BTW, thanks everyone for the links posted to this list as data streams. All were very good reading, but the data streams I was thinking about was basically raw data on which instructors can build. Some of the links were standalone web-interactive experimentation areas and some were domain-specific teaching languages other than Python - all valuable in their own right and I've made a list to get them onto the wiki.
I think we should leave it to those with special expertise in various knowledge domains to decide what's OK to open source without exposing themselves in some game of cut throat competition we may know nothing about. Like, it's not for me to say what the mining unions want to release. If I'm teaching a Python sequence to a client organization, and wanted a list of every rotablator known to man, I'd probably roll my own, as I have access to that data. But when it comes to gold mining or oil drilling, I'm not any big authority, unlike some other Wanderers I know (wwwanderers.org), and unlike the folks at ConocoPhilips, who use Python in the data modeling of ongoing North Sea drilling operations etc. (more in my blog **). So why don't we just sit back and wait for the mining, oil and medical communities to figure it out? Not our problem, as python.org types to do all that work. I do that know many mines use Python internally. No doubt many other languages as well. The Rich Data Structures and Streams idea is basically a way to implement NALB (No Adult Left Behind). Grownups get tired of Spamalot jokes and endless "see spot run" data structure examples, the brain dead fluff of the pulp text book era. A pre-med kid might like all the bones in the body as an adjacency table (what connects to what i.e. dembones = Human.Skeleton()). The would-be chemist needs a handy dandy dict from whence to pluck those isotopes (caution, some are unstable). http://www.mathpuzzle.com/Periodic.htm http://www.ieer.org/fctsheet/uranium.html If some very good doobie on python.org wants to try linking to all this rich, usable, good-to-have data, wherever and whenever it emerges, I guess I'd say "be my guest and more power to ya!" -- but I don't think we should *count on* such saintly acts of scholarship from busy geeks with families to support, especially uncompensated. The FOSS around Linux was cliquey I'd say as in "who cares if it's open source, only the engineers we're collaborating with understand the code anyway -- but if we try to keep it secret, their lawyers will find a way to 'own' it all of a sudden, so let's just not go there."
Taking a cue from Laura's suggestion, I've reworked the Edu-SIG wiki page which actually didn't have much on it (as a group we could enhance this).
http://www.python.org/community/sigs/current/edu-sig/
I started a catalog of educational data resources underneath it at:
http://wiki.python.org/moin/EduSig/DataResources
and defined a wiki category for "PythonInEducation". Seems there was one for "PythonInBusiness" but not for education (or science - there is now).
I'll take a look at these sometime. Thanks again for all your hard work.
We're maybe just not so lazy in Portland?
I'm not sure you and I are using the same definition of the spirit of FOSS.
That's very possible.
;-) Mine is more about sharing with anyone who comes along, less about cliques, less about my city or state or country against another. And less
Right. Mine is definitely more cliquey. I've copped to that in many a posting. But it's not entirely either/or. Ask yourself: how would cliques use FOSS internally? There're some thoughtful answers to that question I'm sure. That being said, I love it how our shared Internet is becoming a shared stash pile of invaluable junk. If you know how to assemble stuff, you've got a gold mine in your back yard (snake infested, yay!).
about who gets credit - more about a private joy that something you've created is helping those who have no idea who you are. But FOSS I'd guess is broad enough to encompass many definitions. 8-)
-Jeff
Yes, I'd guess so too. 8-) Kirby ** http://controlroom.blogspot.com/2007/07/python-in-control-room.html
On 9/5/07, kirby urner <kirby.urner@gmail.com> wrote:
Lotsa geodesic domes here in Oregon and I *have* participated in some of those going in (one in particular north of Fremont -- I should check Google Earth).
OK, found it. Several years since I wandered the construction site, a VIP guest of Oregon Dome I think it was... <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> <Document> <name>KmlFile</name> <Style id="sn_ylw-pushpin"> <IconStyle> <scale>1.1</scale> <Icon> <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href> </Icon> <hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/> </IconStyle> </Style> <StyleMap id="msn_ylw-pushpin"> <Pair> <key>normal</key> <styleUrl>#sn_ylw-pushpin</styleUrl> </Pair> <Pair> <key>highlight</key> <styleUrl>#sh_ylw-pushpin</styleUrl> </Pair> </StyleMap> <Style id="sh_ylw-pushpin"> <IconStyle> <scale>1.3</scale> <Icon> <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href> </Icon> <hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/> </IconStyle> </Style> <Placemark> <name>Dome home north of Fremont</name> <LookAt> <longitude>-122.6165977730744</longitude> <latitude>45.55303985405295</latitude> <altitude>0</altitude> <range>57.67866164100011</range> <tilt>6.099569277838851e-010</tilt> <heading>0.04211520150509363</heading> </LookAt> <styleUrl>#msn_ylw-pushpin</styleUrl> <Point> <coordinates>-122.6166140657374,45.55303444513098,0</coordinates> </Point> </Placemark> </Document> </kml> Kirby
Here is a little summer project I'd like to share. This is simply a Python module that blends text and code. The idea is that a student can read the file just like any text file, but they can simultaneously interact with its code in the Shell. I think this is a very useful and simple format. The goal here is to create something that would be of value to both math and programming students. A math student wouldn't have to understand the code in order to use it. However, it's all there if they want to inspect it. Hopefully an interested reader would end up learning both some math and some programming. In the beginning I refer to using tuples to represent fractions and Cartesian points. That is because I had created some earlier lessons where I was trying to keep things minimal. However, in this lesson it makes a lot of sense to introduce a simple Rational class. I only implement __init__ and __repr__, making it kind of a fancy struct. With just that very simple class and a function to generate the mediant of two rationals, you can generate ALL non-negative rationals! It's really very interesting. If used in a programming class, we would of course then go back and fill in the Rational class with __add__, __mul__, etc. But in the context of a typical math class where many of the students aren't sure they even want to learn programming at all, I think this kind of an approach could be useful. They could use the code as is, and, who knows, they might even be intrigued to try to understand it? I've noticed that LOTS of students don't really have a good grasp of the rationals at all, and that's not good. It is only by means of the rational that you can articulate the irrational. I just recently discovered Farey sequences and Ford circles. These things have been around now for awhile, but I don't think I've ever seen them discussed in a high school math text! I appreciate any suggestions, especially along programming lines, that people may have. Thanks, - Michel Paul
On 8/23/07, Michel Paul <mpaul@bhusd.k12.ca.us> wrote:
Here is a little summer project I'd like to share.
This is simply a Python module that blends text and code.
Have you looked at Crunchy? (http://code.google.com/p/crunchy) Crunchy allows you to "blend" (to use your expression) html text and Python code. You can view the file in your browser and interact (execute the code) in it. Quoting from your file: === If you arrange this window and the Shell side by side, you will be able to easily test the code you are studying as you read through the lesson. === Crunchy makes the file much easier to read and interact with: you can have every thing in the same window. (no need for a separate editor and a separate shell) But, then again, perhaps I am a bit biased ;-) André Roberge The idea is that a student can read the file just like any text file, but they can simultaneously interact with its code in the Shell. I think this is a very useful and simple format.
The goal here is to create something that would be of value to both math and programming students. A math student wouldn't have to understand the code in order to use it. However, it's all there if they want to inspect it. Hopefully an interested reader would end up learning both some math and some programming.
In the beginning I refer to using tuples to represent fractions and Cartesian points. That is because I had created some earlier lessons where I was trying to keep things minimal. However, in this lesson it makes a lot of sense to introduce a simple Rational class. I only implement __init__ and __repr__, making it kind of a fancy struct. With just that very simple class and a function to generate the mediant of two rationals, you can generate ALL non-negative rationals! It's really very interesting.
If used in a programming class, we would of course then go back and fill in the Rational class with __add__, __mul__, etc. But in the context of a typical math class where many of the students aren't sure they even want to learn programming at all, I think this kind of an approach could be useful. They could use the code as is, and, who knows, they might even be intrigued to try to understand it?
I've noticed that LOTS of students don't really have a good grasp of the rationals at all, and that's not good. It is only by means of the rational that you can articulate the irrational. I just recently discovered Farey sequences and Ford circles. These things have been around now for awhile, but I don't think I've ever seen them discussed in a high school math text!
I appreciate any suggestions, especially along programming lines, that people may have.
Thanks,
- Michel Paul
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
On 8/23/07, Michel Paul <mpaul@bhusd.k12.ca.us> wrote:
I appreciate any suggestions, especially along programming lines, that people may have.
Thanks,
- Michel Paul
Make sure you check out The Book of Numbers by Conway and Guy, and Sloane's On-Line Encyclopedia of Integer Sequences for programming ideas. Absolutely right to focus on Rationals as a Python class, to reinforce student understanding (or to help nurture it in the first place). Using __add__ and __mul__ sets the stage for redefining these ops again and again, over different sets of elements (e.g. polynomials, complex numbers). If you write it so that numerators and denominators accept Rationals as input types, then you have the bases for Continuing Fractions, a deep and fun topic, especially when the drudgery has been taken out of it i.e. you have transparent open source algorithms *and* machine execution. A paradise, by yesteryear's standards. An unexplored junkyard by the standards of today. Here's a fun generator for phi, though inefficient: IDLE 1.2.1
def genphi(): result = 1.0 while True: yield result result = (1 + 1/result)
thegen = genphi() [thegen.next() for term in range(10)] [1.0, 2.0, 1.5, 1.6666666666666665, 1.6000000000000001, 1.625, 1.6153846153846154, 1.6190476190476191, 1.6176470588235294, 1.6181818181818182]
Kirby
On 8/23/07, kirby urner <kirby.urner@gmail.com> wrote:
If you write it so that numerators and denominators accept Rationals as input types, then you have the bases for Continuing Fractions,
More typically called Continued Fractions of course: http://archives.math.utk.edu/articles/atuyl/confrac/ More code right here in this archive (going back to CP4E days), or check my website e.g.: http://www.4dsolutions.net/ocn/numeracy0.html (scroll to bottom -- vintage turn of the millennium Pythonic stuff). [1] Kirby [1] Re "when did the millennium turn": http://members.aol.com/rotanasnem/poster.htm
Quoting Michel Paul <mpaul@bhusd.k12.ca.us>:
This is simply a Python module that blends text and code.
This is a good illustration that Python is a particularly suitable language for literate programming (http://en.wikipedia.org/wiki/Literate_programming).
The goal here is to create something that would be of value to both math and programming students.
Yes, indeed, this kind of texts can be beneficial for both math students and programming students. Returning back to my years as a *programming* student, I think I would have been excited about the potential of lazy evaluation (http://en.wikipedia.org/wiki/Lazy_evaluation) in Python. Years ago I implemented an implicit lazy evaluation interpreter for John Backus' FP language, but because it was the *only* evaluation mode for all sequences, it made the whole interpreter too slow. Python's lazy evaluation is explicit and hence employed only as needed, and obviously it does not impose unacceptable performance penalties. Returning back to my years as a *math* student, Michel's example would have helped me to understand the potential of Python as a tool for modeling of interesting math concepts (in contrast to the widespread view to programming languages as number-crunching tools). Great writing, Michel. I hope that you can post more like this. Atanas -- Atanas Radenski mailto:radenski@studypack.com http://studypack.com mailto:radenski@chapman.edu http://www1.chapman.edu/~radenski
participants (6)
-
Andre Roberge
-
Atanas Radenski
-
Dethe Elza
-
Jeff Rush
-
kirby urner
-
Michel Paul