From andre.roberge at gmail.com Mon Jan 4 23:00:52 2010 From: andre.roberge at gmail.com (Andre Roberge) Date: Mon, 4 Jan 2010 18:00:52 -0400 Subject: [Edu-sig] Rur-ple is no longer dormant! Message-ID: <7528bcdd1001041400g7f5e00ber2631398871a4b3ec@mail.gmail.com> Hi everyone, After a long period during which rur-ple was dormant, its development has restarted. For those that don't know about rur-ple, it was originally inspired by Guido van Robot (itself inspired by Richard Pattis' Karel the robot) and was my first Python project. Whereas Guido van Robot (GvR for short) uses a Python-like syntax, rur-ple uses true Python syntax. (In fact, rur-ple user programs are run by python via exec()). Rur-ple's development has moved to a new site ( http://code.google.com/p/rur-ple/) and it has a corresponding new discussion group (http://groups.google.com/group/rur-ple-discuss). Among the changes to note: 1) Whereas before only source files (.zip) were distributed, we now have packages (.exe, .deb, .rpm ... with .dmg planned for the near future) to make installation easier. 2) Lessons have been completely translated from English into German, Turkish, Chinese, and partly translated into Spanish. Other translations are in the works. -------------- next part -------------- An HTML attachment was scrubbed... URL: From kirby.urner at gmail.com Thu Jan 7 19:11:43 2010 From: kirby.urner at gmail.com (kirby urner) Date: Thu, 7 Jan 2010 10:11:43 -0800 Subject: [Edu-sig] Rur-ple is no longer dormant! In-Reply-To: <7528bcdd1001041400g7f5e00ber2631398871a4b3ec@mail.gmail.com> References: <7528bcdd1001041400g7f5e00ber2631398871a4b3ec@mail.gmail.com> Message-ID: On Mon, Jan 4, 2010 at 2:00 PM, Andre Roberge wrote: > Hi everyone, > > After a long period during which rur-ple was dormant, its development has > restarted.? For those that don't know about rur-ple, it was originally > inspired by Guido van Robot (itself inspired by Richard Pattis' Karel the > robot) and was my first Python project.? Whereas Guido van Robot (GvR for > short) uses a Python-like syntax, rur-ple uses true Python syntax.? (In > fact, rur-ple user programs are run by python via exec()). > > Rur-ple's development has moved to a new site > (http://code.google.com/p/rur-ple/) and it has a corresponding new > discussion group (http://groups.google.com/group/rur-ple-discuss). > I'm happy to see all this new activity. Andre, the following post to the Math Forum has some links to your curriculum writing re objects and dot notation (what this post is about): http://mathforum.org/kb/thread.jspa?threadID=2026679&tstart=0 Readers might note that I cite the Mathematics for the Digital Age book again, noting the 2nd edition is in Python 3.x. > Among the changes to note: > 1) Whereas before only source files (.zip) were distributed, we now have > packages (.exe, .deb, .rpm ... with .dmg planned for the near future) to > make installation easier. > 2) Lessons have been completely translated from English into German, > Turkish, Chinese, and partly translated into Spanish.? Other translations > are in the works. Impressive! Kirby -- >>> from mars import math http://www.wikieducator.org/Digital_Math From roberto03 at gmail.com Thu Jan 7 19:33:33 2010 From: roberto03 at gmail.com (roberto) Date: Thu, 7 Jan 2010 19:33:33 +0100 Subject: [Edu-sig] CS teaching approaches In-Reply-To: <4B2EB720.3000309@verizon.net> References: <4B2E67D2.6080508@verizon.net> <4B2EB720.3000309@verizon.net> Message-ID: <4bcde3e11001071033q3146b9efh3c1858474a183f31@mail.gmail.com> sorry for this very late reply to your posts, unfortunately, gmail didn't append your replies to my original mail On Mon, Dec 21, 2009 at 12:45 AM, Andy Judkis wrote: >> >> The How Things Work component is what's really important a lot of the >> time, and it's not just the personal computer on your desk that's >> important to comprehend. ?We need to explain about larger systems, >> institutions, in which computers play a role. ?This includes >> explaining about social networking software, not making kids simply >> guess or imagine what's going on behind the scenes. (+1) i think the approach H.T.W. is really good for all the reasons you've highlighted and beyond: are you aware of serious web resources with this way of learning in mind ? of course, especially tailored to math and/or CS >> > > Agreed. ?I think that familiarity with this stuff at some basic level is > important for all citizens, not just future tech geeks. > > Which kind of brings it back to Roberto's original post -- what should you > teach in a middle school CS class? ?I wouldn't focus on formal programming > at all -- at that age, I suspect that very few kids will find it compelling. > ?I'd point to http://csta.acm.org/Curriculum/sub/ACMK12CSModel.html and also > http://csunplugged.org/ for more ideas. > > Thanks, > Andy thank you very much again; i'd like to add here that my very first goal starting the thread was to know which approaches are currently in use to teach/learn CS, i.e. *how* to learn it more than *what* to learn, in the CS domain; with regard to this side of the topic, the first reply was perfectly on track, since i think the route Flowcharts pseudocode then actual programming: is one of the most diffused way of introducing CS, at least in high schools for sake of correctness, i must also say that it happens frequently that the *what* drives the *how-to*; thank you in advance if anyone has other ideas to share ps: i hope gmail will not mix the replies again :) -- roberto From kirby.urner at gmail.com Fri Jan 8 02:18:08 2010 From: kirby.urner at gmail.com (kirby urner) Date: Thu, 7 Jan 2010 17:18:08 -0800 Subject: [Edu-sig] Edu-sig page advice to teachers Message-ID: Current verbiage: """ As a result of the changes, programs written for Python 2 are likely to be incompatible with Python 3 (and vice-versa). Since both versions are going to co-exist for a while, a choice has to be made as to which one to use. As a very subjective opinion, we would like to offer the following: * Consider the possibility of teaching both Python 2 and 3. If you are teaching beginners, the only significant differences are the print statement/function and the integer division [and possibly the input()/raw_input() changes...] which you can point out as you go along. Of course, you will have to decide on a common version to install for everyone to use; to decide which one, or if you really want to focus on teaching only one version, we suggest that you consider the other two alternatives. * Teach Python 3 if you only plan to teach Python as an introductory language (say in a CS-1 course), making use only of modules included in the standard distribution. Alternatively, if you teach Python in languages other than English, where non-ascii characters could be put to good use in writing identifiers, then Python 3 should definitely be your choice. * Teach Python 2 if you think you might be using third-party modules not included in the standard Python distribution, or if you are not familiar with Python. You may want to consider teaching Python using the older version (2.6 is the most current release) until more third-party modules have been ported to the new Python version, and more tutorials for the new version are available. """ I'm wondering if this should be fine tuned to more explicitly encourage 2.6 and above if doing Python 2 (because of 3rd party dependencies), 3.x in all other cases. Why? Because in 2.6 (and 2.7) we've got the new core Python format specifiers (PEP 3101) plus have the potential to import the Python 3.x print function from __future__. Of course it's up to individual teachers to make their own determination. The edu-sig page is not about dictating anything, simply making recommendations. However, shouldn't the bias be to encourage using 3.x? Lots of tutorials out there by this time. 3.x also tends to return iterators in a lot of places where 2.x returned a list, e.g. in the case of zip, range etc. -- lots of subtle differences that are quite pervasive nonetheless. If you are "not familiar with Python" (bullet point 3), then isn't 3.x is your better bet? It's easier to think of strings as just unicode codepoints (u-this and u-that) with their byte encodings a separate data type. Having students get it about unicode is pretty important in this day and age, no? Anyway, just ruminating. People get their advice from a million sources. An appropriate topic for discussion though. What 3rd party libraries would break? I'm big into VPython, so right off the bat I'm facing such issues. Anyone else using that or am I the only one? Kirby -- >>> from mars import math http://www.wikieducator.org/Digital_Math From csev at umich.edu Sat Jan 9 17:43:40 2010 From: csev at umich.edu (csev) Date: Sat, 9 Jan 2010 11:43:40 -0500 Subject: [Edu-sig] Remixed Book: Python For Informatics - Exploring Information Message-ID: <397B259D-5EE2-48C0-8219-3CC40753F036@umich.edu> Hello all, I just wanted to let you know about a "new" book called "Python for Informatics - Exploring Information" and get it added to the edu-sig page. The book is a remixed version of the excellent "Think Python - How to Think like a Computer Scientist" book written by Allen B. Downey, Jeff Elkner, and others. "Python for Informatics" has a goal of making programming in Python accessible to all students - not just those intent on pursuing a career in Computer Science. As such the book focuses less on algorithms and numerical examples and much more on looking at data and information. This is part of my overall interest in the notion of "Informatics" (informatics.umich.edu) - which is a re-visioning of how technology fits folks who are pursuing non-technology careers. I am using the book in my "Technology Literacy" course at the University of Michigan (SI502) and expect to expand the book from 10 to 18 chapters over the next few months. Allen has graciously given me permission to change the copyright license in the book from the GFDL license to Creative Commons Attribution - Share Alike which is a more modern version of copyleft for written works (Wikipedia switched from GFDL to CC-BY-SA a while back). Here are a few pages: Python for Informatics: http://www.py4inf.com/ Blog Post - First Printing: http://www.dr-chuck.com/csev-blog/000690.html Think Python: http://www.greenteapress.com/thinkpython/ I welcome any and all comments on the book or the approach. Dr. Charles Severance University of Michigan School of Information www.dr-chuck.com From vceder at canterburyschool.org Mon Jan 11 14:42:13 2010 From: vceder at canterburyschool.org (Vern Ceder) Date: Mon, 11 Jan 2010 08:42:13 -0500 Subject: [Edu-sig] Edu-sig page advice to teachers In-Reply-To: References: Message-ID: <4B4B2AB5.30808@canterburyschool.org> kirby urner wrote: > I'm wondering if this should be fine tuned to more explicitly > encourage 2.6 and above if doing Python 2 (because of > 3rd party dependencies), 3.x in all other cases. +1 > An appropriate topic for discussion though. What 3rd > party libraries would break? I'm big into VPython, so right > off the bat I'm facing such issues. Anyone else using that > or am I the only one? Not using VPython much, other than for an occasional gee-whiz demo ;). Personally, the fact that PyGame's support is still incomplete might be a problem for my more advanced classes - I haven't checked to see if there's a big problem there. Thanks to the turtle library my low level kids would be fine. Of course the main thing that would break would be existing lessons and instructional handouts... Cheers, Vern -- This time for sure! -Bullwinkle J. Moose ----------------------------- Vern Ceder, Director of Technology Canterbury School, 3210 Smith Road, Ft Wayne, IN 46804 vceder at canterburyschool.org; 260-436-0746; FAX: 260-436-5137 From kirby.urner at gmail.com Tue Jan 12 00:12:35 2010 From: kirby.urner at gmail.com (kirby urner) Date: Mon, 11 Jan 2010 15:12:35 -0800 Subject: [Edu-sig] Edu-sig page advice to teachers In-Reply-To: <4B4B2AB5.30808@canterburyschool.org> References: <4B4B2AB5.30808@canterburyschool.org> Message-ID: On Mon, Jan 11, 2010 at 5:42 AM, Vern Ceder wrote: > kirby urner wrote: >> >> I'm wondering if this should be fine tuned to more explicitly >> encourage 2.6 and above if doing Python 2 (because of >> 3rd party dependencies), 3.x in all other cases. > > +1 > 2.6 has the new format specifiers. I think that's important. >> An appropriate topic for discussion though. ?What 3rd >> party libraries would break? ?I'm big into VPython, so right >> off the bat I'm facing such issues. ?Anyone else using that >> or am I the only one? > > Not using VPython much, other than for an occasional gee-whiz demo ;). > Personally, the fact that PyGame's support is still incomplete might be a > problem for my more advanced classes - I haven't checked to see if there's a > big problem there. Thanks to the turtle library my low level kids would be > fine. > VPython has moved to 2.6 on Windows, which is the platform I've used in the math labs at Portland State etc. "For Linux, simply use Boost 1.41 to build Visual." Heh, that makes it sound easy. Having haunted these various lists and conferences for awhile, it's my impression that VPython is still not on most radars. The scenario I've pushed (sometimes practice): spatial geometry in a Python-endowed math class, is still esoteric, avant-garde. Not sure anyone is doing it. > Of course the main thing that would break would be existing lessons and > instructional handouts... > > Cheers, > Vern > Yes, but that's always happening in our fast-moving technological world. Always gotta redo those handouts. A teacher's work is never done (think job security). If you come across a poster featuring VPython, maybe let us know? Always on the lookout. Turtle graphics, way cool too. Kirby > -- > This time for sure! > ? -Bullwinkle J. Moose > ----------------------------- > Vern Ceder, Director of Technology > Canterbury School, 3210 Smith Road, Ft Wayne, IN 46804 > vceder at canterburyschool.org; 260-436-0746; FAX: 260-436-5137 > -- >>> from mars import math http://www.wikieducator.org/Digital_Math From kirby.urner at gmail.com Wed Jan 13 04:59:56 2010 From: kirby.urner at gmail.com (kirby urner) Date: Tue, 12 Jan 2010 19:59:56 -0800 Subject: [Edu-sig] Edu-sig page advice to teachers In-Reply-To: References: <4B4B2AB5.30808@canterburyschool.org> Message-ID: [ thread moved to edu-sig ] > On Tue, Jan 12, 2010 at 4:37 AM, Maria Droujkova wrote: >> Some of my kids are about to start using Python for our Physics and >> Modeling, up from Scratch. I am scared to death and still have not selected >> a version for them. All of them run Windows and Mac OS. >> >> Cheers, >> Maria Droujkova >> http://www.naturalmath.com >> >> Make math your own, to make your own math. >> > > Hi Maria -- > > I am wondering what Physics and Modeling is like. ?From a programming > point of view, I imagine a clock or time increment is usually > involved, which means a loop of some kind. ?As time ticks by, this or > that happens to objects. > > Here's a somewhat generic way of thinking about "objects in time": > > http://www.4dsolutions.net/ocn/alien.html ?(meant to be user-friendly > and conversational, against the backdrop of ongoing arguments on a > math teacher list -- I think you know the one). > > As to which version of Python, a lot depends on if students want to > use something extra besides bare Python. ?If not, then 3.1 and above. > > Your students seem rather young in this picture, if just moving from Scratch? > > It would be interesting to get some more details if you have the time > to spare. ?And fear not, you will find much that is fun and rewarding > in this next chapter. > > Kirby > > PS: ?I notice Carl Trachte is beginning to explore the new format > specifiers in his first two blog posts of 2010: > http://pyright.blogspot.com/ > > Note that in 2.6 one has the ability to go: ?from __future__ import > print_function > > Plus it runs everything 2.5 and below. ?That's why I suggest the > edu-sig web page make 2.6 something like the earliest Python you'd > want to use for educational purposes. ?That'd be generic advice > suitable for Python.org web site. ?Of course teachers on the front > lines will have their own reasons for doing what they do. > >> >> >>> >>> The scenario I've pushed (sometimes practice): >>> spatial geometry in a Python-endowed math class, is >>> still esoteric, avant-garde. ?Not sure anyone is doing >>> it. >>> >> > From njruzycki at seattleschools.org Wed Jan 13 15:08:03 2010 From: njruzycki at seattleschools.org (Ruzycki, Nancy J) Date: Wed, 13 Jan 2010 06:08:03 -0800 Subject: [Edu-sig] Edu-sig page advice to teachers References: <4B4B2AB5.30808@canterburyschool.org> Message-ID: Kirby, and Maria- We use scratch and also python for physics programming, and the choice is based not on youth, but on ease of computing. In scratch, it is easier for the students to "see" the parts of the program they can use to create a program, whereas in python, a student has to have some programming background, or a good teaching template. In mu class, we only have about a week every 10 weeks or so to program. Scratch can be used to create some fairly complicated programs including kinematics (1D and 2D) and vector analysis. Examples of what we do are programming an object to accelerate and stamping as it goes to create a type of motion map, having objects fall with the correct acceleration of gravity. Throwing objects (up or down) and stamping realistic falls. Racing cars with different accelerations, etc. You can also do nice circular motion mapping. I tried to step up to python programming for 1-d motion and it was not as successful a visualization tool as in Scratch. Maybe using Turtle would have been better. The project becomes more about the programming than about the physics concepts. In scratch, owing to ease of use, the physics concepts are more easily visualized. If my class were more advanced computationally, or we had a course in mathematical programming, then I think the python would be really nice. My students are low income, urban public school students, and any exposure to programming including scratch is an epiphany for them. Nancy Ruzycki -----Original Message----- From: edu-sig-bounces+njruzycki=seattleschools.org at python.org on behalf of kirby urner Sent: Tue 1/12/2010 7:59 PM To: edu-sig at python.org Subject: Re: [Edu-sig] Edu-sig page advice to teachers [ thread moved to edu-sig ] > On Tue, Jan 12, 2010 at 4:37 AM, Maria Droujkova wrote: >> Some of my kids are about to start using Python for our Physics and >> Modeling, up from Scratch. I am scared to death and still have not selected >> a version for them. All of them run Windows and Mac OS. >> >> Cheers, >> Maria Droujkova >> http://www.naturalmath.com >> >> Make math your own, to make your own math. >> > > Hi Maria -- > > I am wondering what Physics and Modeling is like. ?From a programming > point of view, I imagine a clock or time increment is usually > involved, which means a loop of some kind. ?As time ticks by, this or > that happens to objects. > > Here's a somewhat generic way of thinking about "objects in time": > > http://www.4dsolutions.net/ocn/alien.html ?(meant to be user-friendly > and conversational, against the backdrop of ongoing arguments on a > math teacher list -- I think you know the one). > > As to which version of Python, a lot depends on if students want to > use something extra besides bare Python. ?If not, then 3.1 and above. > > Your students seem rather young in this picture, if just moving from Scratch? > > It would be interesting to get some more details if you have the time > to spare. ?And fear not, you will find much that is fun and rewarding > in this next chapter. > > Kirby > > PS: ?I notice Carl Trachte is beginning to explore the new format > specifiers in his first two blog posts of 2010: > http://pyright.blogspot.com/ > > Note that in 2.6 one has the ability to go: ?from __future__ import > print_function > > Plus it runs everything 2.5 and below. ?That's why I suggest the > edu-sig web page make 2.6 something like the earliest Python you'd > want to use for educational purposes. ?That'd be generic advice > suitable for Python.org web site. ?Of course teachers on the front > lines will have their own reasons for doing what they do. > >> >> >>> >>> The scenario I've pushed (sometimes practice): >>> spatial geometry in a Python-endowed math class, is >>> still esoteric, avant-garde. ?Not sure anyone is doing >>> it. >>> >> > _______________________________________________ Edu-sig mailing list Edu-sig at python.org http://mail.python.org/mailman/listinfo/edu-sig From echerlin at gmail.com Wed Jan 13 15:58:54 2010 From: echerlin at gmail.com (Edward Cherlin) Date: Wed, 13 Jan 2010 09:58:54 -0500 Subject: [Edu-sig] Edu-sig page advice to teachers In-Reply-To: References: <4B4B2AB5.30808@canterburyschool.org> Message-ID: On Mon, Jan 11, 2010 at 18:12, kirby urner wrote: > On Mon, Jan 11, 2010 at 5:42 AM, Vern Ceder wrote: >> Of course the main thing that would break would be existing lessons and >> instructional handouts... >> >> Cheers, >> Vern >> > > Yes, but that's always happening in our fast-moving > technological world. ?Always gotta redo those handouts. > A teacher's work is never done (think job security). How about assigning the handout updates as homework to the class above where students are supposed to know both versions? I'm in favor of giving students homework with real-world results, not just do, mark, throw away makework. > Kirby > >> -- >> This time for sure! >> ? -Bullwinkle J. Moose >> ----------------------------- >> Vern Ceder, Director of Technology >> Canterbury School, 3210 Smith Road, Ft Wayne, IN 46804 >> vceder at canterburyschool.org; 260-436-0746; FAX: 260-436-5137 > > -- >>>> from mars import math > http://www.wikieducator.org/Digital_Math > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig -- Edward Mokurai (??/???????????????/????????????? ?) Cherlin Silent Thunder is my name, and Children are my nation. The Cosmos is my dwelling place, the Truth my destination. http://www.earthtreasury.org/ From andre.roberge at gmail.com Thu Jan 14 00:03:26 2010 From: andre.roberge at gmail.com (Andre Roberge) Date: Wed, 13 Jan 2010 19:03:26 -0400 Subject: [Edu-sig] Edu-sig page advice to teachers In-Reply-To: <7528bcdd1001131502r438be91by638910d14a767d0a@mail.gmail.com> References: <7528bcdd1001131502r438be91by638910d14a767d0a@mail.gmail.com> Message-ID: <7528bcdd1001131503ve7760b1u48d2295393bb0d69@mail.gmail.com> Hi everyone, I have added links to Charles Severance's book and to Fotis Georgatos's MSc thesis on the edu-sig page. I have also tried to take into account the following comment (and ensuing discussion): On Thu, Jan 7, 2010 at 9:18 PM, kirby urner wrote: > Current verbiage: > > """ > As a result of the changes, programs written for Python 2 are likely > to be incompatible with Python 3 (and vice-versa). Since both versions > are going to co-exist for a while, a choice has to be made as to which > one to use. As a very subjective opinion, we would like to offer the > following: > > * Consider the possibility of teaching both Python 2 and 3. If you > are teaching beginners, the only significant differences are the print > statement/function and the integer division [and possibly the > input()/raw_input() changes...] which you can point out as you go > along. Of course, you will have to decide on a common version to > install for everyone to use; to decide which one, or if you really > want to focus on teaching only one version, we suggest that you > consider the other two alternatives. > * Teach Python 3 if you only plan to teach Python as an > introductory language (say in a CS-1 course), making use only of > modules included in the standard distribution. Alternatively, if you > teach Python in languages other than English, where non-ascii > characters could be put to good use in writing identifiers, then > Python 3 should definitely be your choice. > * Teach Python 2 if you think you might be using third-party > modules not included in the standard Python distribution, or if you > are not familiar with Python. You may want to consider teaching Python > using the older version (2.6 is the most current release) until more > third-party modules have been ported to the new Python version, and > more tutorials for the new version are available. > """ > > I'm wondering if this should be fine tuned to more explicitly > encourage 2.6 and above if doing Python 2 (because of > 3rd party dependencies), 3.x in all other cases. > > > [snip] Ok, here's the revised version (please feel free to suggest changes): As a result of the changes, programs written for Python 2 are likely to be incompatible with Python 3 (and vice-versa). Some of you may have not control over which Python version is made available to the students. If that is the case, you should not despair too much if you and your students do not have access to the best/latest version of Python: Python is a fantastic choice as a first language and the relatively minor changes between versions do not change this fact. *If* you have some control over which version of Python is made available to the students, then you have a choice to make. In this case, and as a *very subjective opinion*, we would like to offer the following: - Use Python 2, and more specifically version 2.6, if you think you might be using third-party modules not included in the standard Python distribution, or if you are not familiar with Python (in which case you may not yet realise that you might need some third-party modules.) - Use Python 3, and more specifically version 3.1, if you only plan to teach Python as an introductory language (say in a CS-1 course), making use *only* of modules included in the standard distribution. Alternatively, if you teach Python in languages other than English, where non-ascii characters could be put to good use in writing identifiers, then Python 3 should definitely be your choice. - Consider the possibility of teaching both Python 2 and 3. If you are teaching beginners, the only significant differences are the print statement/function, the integer division and possibly the input()/raw_input() changes... which you can point out as you go along. Of course, you will have to decide on a common version to install for everyone to use. > > An appropriate topic for discussion though. What 3rd > party libraries would break? wxPython is one of them. Since rur-ple uses it, I am keenly aware of that one. I understand that BeautifulSoup for Python 3.1 is (currently) not as "beautiful" (read: forgiving for poorly formed html) as the version available for Python 2.x. For those that would introduce Python in a math/natural science context, I believe that numpy has not been ported yet. etc.... Cheers, Andr? I'm big into VPython, so right > off the bat I'm facing such issues. Anyone else using that > or am I the only one? > > Kirby > > -- > >>> from mars import math > http://www.wikieducator.org/Digital_Math > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kirby.urner at gmail.com Thu Jan 14 05:35:18 2010 From: kirby.urner at gmail.com (kirby urner) Date: Wed, 13 Jan 2010 20:35:18 -0800 Subject: [Edu-sig] more technical writing re Pythonic math Message-ID: Some notes on: Mathematics for the Digital Age and Programming in Python, 2nd Edition by Maria Litvin and Gary Litvin === I just got my evaluation copy of the 2nd edition and I've been plowing through it eagerly. For those just joining, I've been somewhat zealously proposing we converge math and computer topics more successfully -- including pre-college. I've been internationally outspoken on this per 4dsolutions.net/presentations Now we finally have a slim, yet action-packed volume that's a pretty good proof of concept I think, plus it comes with a small test demographic @ Phillips / Andover, a world class school. I'll just enumerate some of features I've been hoping for, and am finding in this book: 0) a Rational number class w/ operator overloading 1) graphs (as in networks) relating to polyhedra 2) ASCII -> Unicode 3) a Madlib example 4) triangular numbers, link to OEIS ** 5) polynomials 6) fibonacci numbers, phi 7) RSA (public key crypto) Lots more is included of course, including a rather deep foray into computer hardware and low level language (8088 assembler), boolean truth tables, strategy games, matrix multiplication (exercise pg. 249). ** On-Line Encyclopedia of Integer Sequences This text is like a kernel or seed in that it plants all the "right stuff" for a larger tree of topics, branching off from the many covered. As a teacher, you're at liberty to expand coverage in any number of directions. Just to take one example: Let's go from triangular and square numbers, ala 'Gnomon' by Midhat Gazale, to polyhedral numbers ala 'The Book of Numbers' by Conway and Guy. The number sequence 1, 12, 42, 92, 162... is especially worthy (including of Python generator treatment). Type that into OEIS and we get the cuboctahedral numbers, aka icosahedral numbers: http://www.research.att.com/~njas/sequences/A005901 That these polyhedra go together is deep chemistry (literally), plus you'll find segues to architecture and virology. Scroll down to the links section and you'll find one to my site: K. Urner, Microarchitecture of the Virus Grunch.net/synergetics/virus.html See also: 4dsolutions.net/ocn/numeracy0.html (includes animated GIF showing the ball packing in question: http://4dsolutions.net/ocn/graphics/cubanim.gif ) The Python generator might be: def cubocta(): layer, total = 1, 1 n = 0 while True: yield (layer, total) n += 1 layer = 10 * n * n + 2 total += layer Where "layer" will be 1, 12, 42, 92... and "total" will be a running accumulation of that total number of balls packed out from a nucleus, 1, 13, 55, 147... See also: wikieducator.org/PYTHON_TUTORIALS#Generators (crystal ball sequence) When new x-ray diffraction techniques were disclosing the icosahedral shape of the virus, scientists contacted Buckminster Fuller, because he was Mr. Icosahedron in those days (the geodesic dome guy). He had this formula for 1, 12, 42, 92..., a mathematical result H.S.M. "King of Infinite Space" Coxeter thought was pretty brilliant (simple, elementary, easy to prove). "Coxeter told Fuller how impressed he was with his formula -- on the cubic close-packing of balls. And he later took pleasure in proving it, noting in his diary one day in September 1970: "I saw how to prove Bucky Fuller's formula," and publishing it in a paper, "Polyhedral Numbers." Of course more than anything, Coxeter fell in love with Fuller's geodesic domes." [from: Siobhan Roberts, King of Infinite Space (recent bio of H.S.M. Coxeter, to whom Fuller dedicated his magnum opus -- w/ permission -- citing pg. 71 of 'Regular Polytopes' deeper into his text) ] < technical > Here's my own proof, dunno how similar, and kinda dense (f is the number of intervals along an edge, so one less than the number of balls). http://mybizmo.blogspot.com/2007/01/gnu-math-memo.html Fuller's formula was published in the NY Herald Tribune in connection with a virology conference @ Cold Spring Harbor, but then a follow-up Scientific American article on the same topic dropped all mention of Fuller, ostensibly because Coxeter and others had by this time generalized the viral micro-architecture using the related mathematical work of Michael Goldberg. I know Fuller was distraught about being cut out of the narrative (I saw some of the archived correspondence), though he had his posthumous comeuppance I suppose, w/ the discovery of "buckminsterfullerene" (also icosahedral, in the sense of five-fold rotationally symmetric). "They show the same kind of structure as the domes of Buckminster Fuller" Dr. [Robert] Horne, who took the first photos, explained, "We went along working out the mathematics of the viruses when somebody told us about Fuller's book . . . We opened it and there it was all worked out. It seems that both Fuller and nature have picked out the most rigid geometry they can find." "Virus - A Triumph and a Photograph" New York Herald Tribune. February 6, 1962. (cited in B.G. DeVarco, Invisible Architecture: The Nanoworld of Buckminster Fuller, 1997) Per my workshop @ Pycon / Chicago, I go with these two axes: technical content vs. lore. A curve of finite / constant bandwidth, like the opportunity cost curve in economics, suggests we need to vary the mix, going more for the lore in some contexts. Dry-as-bones technical stuff is just as necessary though, so we oscillate, go back and forth. Kirby From kirby.urner at gmail.com Thu Jan 14 08:46:05 2010 From: kirby.urner at gmail.com (kirby urner) Date: Wed, 13 Jan 2010 23:46:05 -0800 Subject: [Edu-sig] Edu-sig page advice to teachers In-Reply-To: <7528bcdd1001131503ve7760b1u48d2295393bb0d69@mail.gmail.com> References: <7528bcdd1001131502r438be91by638910d14a767d0a@mail.gmail.com> <7528bcdd1001131503ve7760b1u48d2295393bb0d69@mail.gmail.com> Message-ID: On Wed, Jan 13, 2010 at 3:03 PM, Andre Roberge wrote: > > Ok, here's the revised version? (please feel free to suggest changes): > I think your new verbiage is well crafted. I understand what you mean about why people unfamiliar with Python might want to start with 2.6 / 2.x, because they're more likely to not know what dependencies they might get into, and currently, in 2010, more of the add-ons are using 2.x syntax. Actually I don't have any hard numbers, just having that sense. Visual Python (Vpython), which I often talk about, is 2.6. Pygame is what again? Can't find the server right now. Please accept my personal thanks for your taking some time to work on this page. I expect it will need additional fine tuning with the passage of time, simply because the migration from 2.x to 3.x will have progressed to such a point, that our advice will be different. However, your suggestion that learning them both, having a sense of the differences, could be an option, is quite insightful. Why I would be especially a fan of your idea (to teach both) is that it accesses the "lore" dimension, meaning we get to tell the history. This is important because Pythons in particular shed skin. Going from 2.x to 3.x was proof of Python's true snakishness. More to the point, in learning about "how print became a function" or how "the division model changed" or "more returns were iterables" one becomes more aware of language features. You need contrast to learn anything. Comparing across languages is the usual thing, but going back to 2.x in Python's case is not a bad idea either. Kirby > As a result of the changes, programs written for Python 2 are likely to be > incompatible with Python 3 (and vice-versa). Some of you may have not > control over which Python version is made available to the students. If that > is the case, you should not despair too much if you and your students do not > have access to the best/latest version of Python: Python is a fantastic > choice as a first language and the relatively minor changes between versions > do not change this fact. > > If you have some control over which version of Python is made available to > the students, then you have a choice to make. In this case, and as a very > subjective opinion, we would like to offer the following: > > Use Python 2, and more specifically version 2.6, if you think you might be > using third-party modules not included in the standard Python distribution, > or if you are not familiar with Python (in which case you may not yet > realise that you might need some third-party modules.) > Use Python 3, and more specifically version 3.1, if you only plan to teach > Python as an introductory language (say in a CS-1 course), making use only > of modules included in the standard distribution. Alternatively, if you > teach Python in languages other than English, where non-ascii characters > could be put to good use in writing identifiers, then Python 3 should > definitely be your choice. > Consider the possibility of teaching both Python 2 and 3. If you are > teaching beginners, the only significant differences are the print > statement/function, the integer division and possibly the > input()/raw_input() changes... which you can point out as you go along. Of > course, you will have to decide on a common version to install for everyone > to use. From kirby.urner at gmail.com Sun Jan 17 07:30:17 2010 From: kirby.urner at gmail.com (kirby urner) Date: Sat, 16 Jan 2010 22:30:17 -0800 Subject: [Edu-sig] parked lesson plans Message-ID: Greetings edu-sig peers. Kirby from Portland, Oregon (MLK Weedend, 2010) FYI here's me posting in a recent thread, Philippines user group: http://groups.google.com/group/pinoy-python-users/browse_thread/thread/ad517401b06d7100?hl=en Parking some pointers, recycling some good stuff: Pythonic Math Lesson Plan: Simple Groups A simple and gentle introduction to group theory, well trammeled in the literature, uses modulo arithmetic on tiny finite sets. Python's operator overloading puts adding modulo N within reach of any snake wrangler. Concepts: GCD, totatives, relatively prime http://mathworld.wolfram.com/RelativelyPrime.html Pythonic Math Lesson Plan: A Game of Life Creatures move around a virtual chess board according to various rules. A time loop keeps computing successive frames. http://4dsolutions.net/ocn/python/jungle.py Pythonic Math Lesson Plan: T-Mod with a Turtle Trace the plane net for 1/120th of a Rhombic Triacontahedron. Use the Standard Library turtle module, print to paper, cut and fold, 60 left handed, 60 right handed. Example implementation: http://mail.python.org/pipermail/edu-sig/2009-December/009683.html Related lessons: trace A, B modules, same volume as T modules From aharrin at luc.edu Sun Jan 24 05:20:02 2010 From: aharrin at luc.edu (Andrew Harrington) Date: Sat, 23 Jan 2010 22:20:02 -0600 Subject: [Edu-sig] no public link to a BoF Wiki Message-ID: Am I missing something? I remember always at least having a link on the Open Space page to a BoF *wiki* page that is freely editable so a public link can be made to new individual Bof's like edu-sig. The instructions mention you can make a wiki page, but not on a page that is publicly modifiable, and there is no suggestion how to link your new page to anything public. I created a http://us.pycon.org/2010/openspace/edu-sig/ starting the same sort of information we had last year, though I am not local to make a dinner reservation. Has someone done something like this with a different invisible name earlier? -- Andrew N. Harrington Director of Academic Programs Computer Science Department Loyola University Chicago 512B Lewis Towers (office) Snail mail to Lewis Towers 416 820 North Michigan Avenue Chicago, Illinois 60611 http://www.cs.luc.edu/~anh Phone: 312-915-7982 Fax: 312-915-7998 gpd at cs.luc.edu for graduate administration upd at cs.luc.edu for undergrad administration aharrin at luc.edu as professor -------------- next part -------------- An HTML attachment was scrubbed... URL: From aharrin at luc.edu Sun Jan 24 05:33:28 2010 From: aharrin at luc.edu (Andrew Harrington) Date: Sat, 23 Jan 2010 22:33:28 -0600 Subject: [Edu-sig] no public link to a BoF Wiki In-Reply-To: References: Message-ID: OK, not the same as last year, and what happens when you add a page is not documented, but now I see that my new wiki page automatically appears under the Events link on the top of the Open Space page, so you do not have to remember the URL. Neater than last year, if it were just documented. Andy On Sat, Jan 23, 2010 at 10:20 PM, Andrew Harrington wrote: > Am I missing something? > > I remember always at least having a link on the Open Space page to a BoF > *wiki* page that is freely editable so a public link can be made to new > individual Bof's like edu-sig. > > The instructions mention you can make a wiki page, but not on a page that > is publicly modifiable, and there is no suggestion how to link your new page > to anything public. > > I created a > http://us.pycon.org/2010/openspace/edu-sig/ > > starting the same sort of information we had last year, though I am not > local to make a dinner reservation. > > Has someone done something like this with a different invisible name > earlier? > > -- > Andrew N. Harrington > Director of Academic Programs > Computer Science Department > Loyola University Chicago > 512B Lewis Towers (office) > Snail mail to Lewis Towers 416 > 820 North Michigan Avenue > Chicago, Illinois 60611 > > http://www.cs.luc.edu/~anh > Phone: 312-915-7982 > Fax: 312-915-7998 > gpd at cs.luc.edu for graduate administration > upd at cs.luc.edu for undergrad administration > aharrin at luc.edu as professor > -- Andrew N. Harrington Director of Academic Programs Computer Science Department Loyola University Chicago 512B Lewis Towers (office) Snail mail to Lewis Towers 416 820 North Michigan Avenue Chicago, Illinois 60611 http://www.cs.luc.edu/~anh Phone: 312-915-7982 Fax: 312-915-7998 gpd at cs.luc.edu for graduate administration upd at cs.luc.edu for undergrad administration aharrin at luc.edu as professor -------------- next part -------------- An HTML attachment was scrubbed... URL: From kirby.urner at gmail.com Sun Jan 24 10:12:33 2010 From: kirby.urner at gmail.com (kirby urner) Date: Sun, 24 Jan 2010 01:12:33 -0800 Subject: [Edu-sig] Math + Python: reviewing some themes (long) Message-ID: Greetings edu-sig folks: I've got a somewhat long one here. I encourage any responders not to quote the whole thing, just go for the gusto and quote the one thing you wanna do a thread on? I welcome changes to the subject line. One of my bad habits is to introduce new topics in response to a pre-existing thread. 1. PYCON ========= An entreaty that usa.pycon 2010 education track events get some chronicling here, by those lucky enough to attend. I'll be following remotely. 2. OSCON ========= I've just submitted a proposal to OSCON for an education track talk in that Portland venue this summer. I'll let you know how that goes. There's no explicit education track in that conference I'm pretty sure. 3. MFTDA ========= More thoughts on 'Mathematics for the Digital Age' (MFTDA): This could obviously be used at the college level as a discrete math course offering. The introduction clearly links it to 'Concrete Mathematics' which we used to discuss on this list. Tim Peters first brought it to my attention as I recall, whereas most other subscribers likely already knew of it. CM is used at Stanford (even today?) as a kind of on-ramp to TAOCP by Knuth. In fact, Knuth is a co-author of CM -- not news to many subscribers here I'm guessing. What I'd forgetten entirely, and what the MFTDA introduction reminds me of, is that 'Concrete Mathematics' is an amalgam of "CONtinuous" and "disCRETE" -- hence CONCRETE. 3.a: DISCRETE AND/OR DIGITAL? ============================ In my thread with Gary Litvin, this was one of my chief concerns: are we boxing ourselves in, by calling it discrete math? In taking Python (or any computer language) into the math classroom, we're *not* wanting to exclude topics simply because they're not traditionally considered "discrete math" topics, right? Consider calculators. They're digital devices just as surely as computers are, and they permeate the math curriculum at all levels. Teachers use those TIs and Casios to study continuous curves in one or more variables, to explore calculus concepts. Consider Mathematica, likewise digital.... Some of us have been hoping to interest local community colleges in serving as venues for these teacher training programs that in some cases equip math teachers already in the field with some of these new skills. The idea, as I've posted about already, was laid out during a workshop last summer: lets add a new high school course that satisfies a math requirement, isn't an elective. As such, this course wouldn't be on the CS AP track. Trying to prepare students to pass some AP CS test would just take too much time away from the math we want to study. Or could there be a new test, call it AP something else? I doubt ETS has much interest in new categories of AP (not that all of us care that much about US tracks in the first place). http://apcentral.collegeboard.com/apc/public/courses/teachers_corner/index.html I've been hyping "digital mathematics" as a kind of niche marketing term, as distinct from "discrete" but is this wise? Per math-thinking-l (another list), I'd say I'm in the distinct minority in thinking "digital math" is a good term. It's unexplored, not conservative, whereas discrete math is already accepted and entrenched. To try going in with some "digital math" is just stacking the deck against one's own efforts, increasing the odds against success. Still, we need to call it something. Computer Math? Computational Math? Discrete Math? 3.b WHAT LEVEL OF DIFFICULTY? ============================= Back to the Litvin text, which has a lot going for it, I think it might be too difficult for some of the students we're hoping to reach. Phillips Academy is one of the most prestigious, reminiscent of Catlin Gabel or Oregon Episcopal in our neck of the woods (I could rattle off a few more). The text comes across as "early college" i.e. college level for high schoolers, or at least as a kind of advanced Algebra 2 (thinking of the chapter on polynomials in particular). It goes all the way through RSA (public key crypto) as I've typically advocated we do. The good news is MFTDA (Math for the Digital Age) could be like TAOCP or SICP by Abelson, Sussman & Sussman, by forming the nucleus of a genre. In additional to full blown texts, we'll perhaps see a growing inventory of cyberspace assets contributed directly by teachers and students? That's hardly a hypothetical question actually, as those materials already exist in abundance (including as Youtubes in some cases), just need to be organized, glued together, and connected into curricula more successfully. For example, I often circle 'Warriors of the Net' as a great little cartoon about TCP/IP. But then do we want to get into those guts? MFTDA takes the more traditional route in diving into CPU / registers / memory, offers 8088 assembler, relates these to byte codes running on a VM ala Java and Python, other so-called interpreted languages. It's not either / or though: dig down to the chip on the one hand, dig down to bits over the wire on the other. The way I heard some of the teachers talk at our workshop on Aug 7, was more in terms of serving a refugee population feeling burned out on more traditional fare. They do Algebra 1, Geometry... and then decide against Algebra 2. These first two courses haven't been all that successful necessarily, meaning the motivation to continue along the pre-calc/ calculus track may not be present, and yet a 3rd year of math is required for that high school diploma. A computer science elective wouldn't satisfy that requirement. A discrete math offering would. So.... where do we go with this? What topics? In what depth? What solutions are already out there? 3.c WHAT KILLED CODING? ==================== http://www.salon.com/tech/feature/2006/09/14/basic/ (related reading) Some of the advice I get from math teachers on math-teach (a list at the Math Forum) is to just forget about using a computer language. That was trendy in the 1980s maybe, but went out of fashion for a reason. I'm not clear on exactly those reasons were myself. In the 1980s, I was working in computer literacy for McGraw-Hill and it looked like Logo and BASIC would be moving in big time. A typical linear algebra text of that era, Wayne Bishop a co-author (one of the math-teach mainstays), had these BASIC programs in the back for multiplying and reducing matrices. That seemed the wave of the future back then, but then subsequent editions of that book have dropped the software component. http://www.amazon.com/Elementary-Linear-Algebra-S-Venit/dp/0871500949/ref=tmm_hrd_title_2 Here's what I think might have happened: the shift to the object oriented paradigm left a lot of math teachers feeling programming was going off in some new direction and it'd be hopeless to try to keep up. Computer programming needed to go its own way (or so its seemed) and be strictly its own discipline, leaving mathematics students free to practice their own ways, minus this alien content. But then OO ala Smalltalk was actually supposed to make programming easier, the theory being we already think in terms of objects, of nouns, named things, with attributes and behaviors. This wasn't about inventing an entirely new paradigm for computer programming, it was about finding ways to express an existing paradigm (that of objects in the world) in computer languages. 3.d OBJECTS FIRST? ==================== Sorry this is being so long. Let me just end with another take on the "objects first" approach. In order to make Python more accessible and the mathematics correspondingly easier, we begin with very simple classes based around animals (e.g. the Turtle class). We encourage thinking about animals, their attributes and behaviors. Only later on will we try our had at more generic "math objects" such as Rational Numbers. MFTDA actually includes a Rational number class, but doesn't give it much focus. It seems to be the only class definition in the entire text. I think this maybe mirrors an attitude among CS professors that classes and objects are an advanced 2nd year topic. My own view is somewhere in between: I think a full blown treatment of OO, including abstract classes, metaclasses, multiple inheritance, is indeed advanced and probably not suitable for a one year or half year high school math course. Or, if suitable, then mostly in the form a really primitive examples of the Foo and Bar class variety, more to communicate the generic design patterns and concepts than to develop full blown computer programs such as one might use in production environments. What examples do teachers wish to contribute? What would be a good introductory example of multiple inheritance I wonder? I recall David MacQuigg sharing some examples where __mro__ (method resolution order) made an appearance. http://wikieducator.org/User:Macquigg (I recommend reading Dr. Macquigg's excellent testimonial here, with a link to his PyWhip). So yes, the CS professors are right. A full blown intro to classes is too much to start off with. On the other hand, a few simple classes such as Rational Number, Integer Modulo N, Polynomial, Vector, Edge, Polyhedron, could take their place alongside String, List, Set, other primitives. Note: Rational Number is now a primitive in the Standard Library, thanks to the fractions.Fraction class. >>> from fractions import Fraction >>> a = Fraction(1, 4) >>> b = Fraction(2, 5) >>> c = Fraction(2, 10) >>> a Fraction(1, 4) >>> b Fraction(2, 5) >>> c Fraction(1, 5) >>> a + b + c Fraction(17, 20) >>> a * b * c Fraction(1, 50) >>> a ** 2 + b ** 3 - c ** 4 Fraction(1249, 10000) The idea, then, is to build some awareness of classes and objects using familiar analogies relating to every day life. A class definition is a blueprint (one needs to explain "blueprint" -- design, plan) whereas an instance of the class has it's own place in memory, its own "self" as it were (intro to Python "self" syntax). Do some animal classes. Then note how dot notation is what's used to access the attributes and behaviors of a user-defined object. Then note how Python's primitive objects are likewise instances of various classes (e.g. the List class). It's dot notation itself that we're hoping to make second nature (familiar, not too arcane). 3.e THE TIME DIMENSION ==================== That's the breakthrough in understanding we're seeking: brief anatomy lessons with user-defined classes provide enough background to anchor an understanding of built-in classes and objects. It's really "dot notation" itself that we're seeking to anchor here. noun.verb(args) and noun.adjective provide a primitive grammar or logic. We also think in terms of a "life cycle" for objects, from birth to garbage collection once no-longer named. Asking whether two objects are contemporaneous or "partially overlapping" should be a sensible question. Mathematics tends to be sequential, in terms of definitions and theorems, building on itself, but with no explicit reference to a time dimension. Focusing on "objects in memory" brings more of a temporal dimension into focus, allowing us to talk about local vs. global, about scope. MFTDA looks at scope quite a bit, as one needs to in programming. What do others think? Does adding programming put more emphasis on "time" than we're used to? Having examined a turtle, snake, monkey and dog class in some detail, we're ready to appreciate that lists, dictionaries and strings are likewise instances of classes, as are numbers themselves. Yes, we've already used primitive data structures to define our Dog and Turtle. That's OK. Now we're ready to zoom in on the "guts" of a Snake to see how the stomach (a list) is likewise an object, just like the snake itself. http://wikieducator.org/PYTHON_TUTORIALS#Classes This is a great segue to the turtle of Standard Library fame. We're now ready to think in terms of instantiating a turtle object and controlling it using dot notation. We've kept the essence of Logo, while creating an "explicit receiver" (to use Smalltalk jargon). Then perhaps we go along our merry way, like in MFTDA, focusing primarily on functions for awhile (maybe generators), taking our time getting back to user-defined classes. On this second pass, we'll get more into "math objects" such as Polyhedra (my favorite) but we'll still be less advanced than in a true CS course treatment. This is a proposal only, a reiteration of my earlier posts in many ways. What I'm supposing would work best is if a training team set up these possibilities, but then left it to individual teachers or faculty teams which way to go. Having some standards in the picture needn't squeeze every degree of freedom out of the picture. A teacher preferring an "objects first" approach would be free to explore that, whereas a different teacher might consider this way too difficult and inappropriate for his or her students. Not every teacher wants to use VPython for example, cool though that package may be. Especially when working towards a few pilots, I think it's important to not intimidate, not scare away, by suggesting TOOWTDI ("there's only one way to do it"). 3.f MY ROLE ==================== Any reader making it this far might be asking whether I have any authority or standing to be suggesting any of this. Who am I to be setting education policy, in the State of Oregon or anywhere else? The answer is I'm no one in particular, and I'm not in a position to tell others how to play their hands. My own approach was to open source most of my materials. I have not written a text book. I am not an appointed education czar. My model is one of democratic participation and wanting to foster lots of discussion. Minus much participation or activism, I don't think there's much chance of much of anything happening, in terms of getting some of these new kinds of math classes going. The status quo seems the most comfortable option until one day people wake up to the fact they're way behind the curve in some ways. At that point, the future shock may be severe and result not in creative action, but semi-paralysis. That seems closer to what's happening in so many communities: future shock + semi-paralysis. Intel and the Gates Foundation will continue to earmark millions if not billions for education, but none of those funds will go towards beefing up math classes with some industrial grade computer language unless we take a more activist approach. The opportunity to better integrate topics around computers will simply fall by the wayside, as it has since the 1980s in most cases (with some happy exceptions). Let's get creative then? Innovate? I'm hoping the Atlanta conference will help move us along in some promising new directions. I will be monitoring this list. Know of good blogs? Post some links? Kirby -------------- next part -------------- An HTML attachment was scrubbed... URL: From bblais at bryant.edu Sun Jan 24 16:29:20 2010 From: bblais at bryant.edu (Brian Blais) Date: Sun, 24 Jan 2010 10:29:20 -0500 Subject: [Edu-sig] some turtle questions Message-ID: <8F7BCECA-CD55-425D-A173-94D7F30DFB53@bryant.edu> Hello, I am trying to think of things to do with the turtle module with my students, and I have some ideas where I am not sure whether the turtle module can do it. 1) is there a way to determine the current screen pixel color? I am thinking about having the turtle go forward until it reaches an object, say a red circle. I can probably do this by making circle objects (drawn with turtles themselves) which know their own position, and check against this info. But I thought it might be useful also for the turtle to know. 2) is there a way to put a limit on the extent the turtle can travel? it seems I can keep moving off of the screen. Is there a way to make it so that a forward(50) command, at the edge, either raises an exception (at the wall) or simply doesn't move the turtle because of the limit? thanks! bb -- Brian Blais bblais at bryant.edu http://web.bryant.edu/~bblais http://bblais.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From lognaturel at gmail.com Sun Jan 24 18:35:42 2010 From: lognaturel at gmail.com (Helene Martin) Date: Sun, 24 Jan 2010 09:35:42 -0800 Subject: [Edu-sig] some turtle questions In-Reply-To: <8F7BCECA-CD55-425D-A173-94D7F30DFB53@bryant.edu> References: <8F7BCECA-CD55-425D-A173-94D7F30DFB53@bryant.edu> Message-ID: I'm almost sure that there's no way for a turtle to know anything about the background. That's an unfortunate limitation! As for putting a limit on a turtle's travel, you need to write an appropriate conditional. For example, if you want your turtle to stay within a 200x200 square centered around the origin and stop if it gets out, do something roughly like: while(math.abs(t.xcor()) < 100 and math.abs(t.ycor()) < 100): move turtle Of course, you could instead use if statements and simulate bouncing (if my turtle's x coordinate is beyond my bounding box, subtract from its x coordinate). Best, H?l?ne. Computer Science Teacher Garfield High School http://garfieldcs.com On Sun, Jan 24, 2010 at 7:29 AM, Brian Blais wrote: > Hello, > I am trying to think of things to do with the turtle module with my > students, and I have some ideas where I am not sure whether the turtle > module can do it. > 1) is there a way to determine the current screen pixel color? ?I am > thinking about having the turtle go forward until it reaches an object, say > a red circle. ?I can probably do this by making circle objects (drawn with > turtles themselves) which know their own position, and check against this > info. ?But I thought it might be useful also for the turtle to know. > 2) is there a way to put a limit on the extent the turtle can travel? ?it > seems I can keep moving off of the screen. ?Is there a way to make it so > that a forward(50) command, at the edge, either raises an exception (at the > wall) or simply doesn't move the turtle because of the limit? > > thanks! > > bb > > -- > Brian Blais > bblais at bryant.edu > http://web.bryant.edu/~bblais > http://bblais.blogspot.com/ > > > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > > From litvin at skylit.com Mon Jan 25 03:40:44 2010 From: litvin at skylit.com (Litvin) Date: Sun, 24 Jan 2010 21:40:44 -0500 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: References: Message-ID: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> At 04:12 AM 1/24/2010, kirby urner wrote: >Some of us have been hoping to interest local community colleges in >serving as venues for these teacher training programs that in some >cases equip math teachers already in the field with some of these >new skills. The idea, as I've posted about already, was laid out >during a workshop last summer: lets add a new high school course >that satisfies a math requirement, isn't an elective. > >As such, this course wouldn't be on the CS AP track. Trying to >prepare students to pass some AP CS test would just take too much >time away from the math we want to study. > >Or could there be a new test, call it AP something else? Several years ago, Maria (Litvin) asked a high-ranking College Board person whether AP Discrete Mathematics was a possibility. The answer was absolutely no. The main reason was that the College Board was looking for ways to reduce gender imbalance and minorities participation, and another math course wouldn't help. Hence AP Human Geography... When the College Board abruptly cancelled the AP CS AB exam, part of the rationale given, again, was that cancelling this exam wouldn't hurt the gender balance and minorities participation. What they meant was they could afford to cancel this small and unprofitable exam. (They also cancelled AP Italian -- no gender imbalance there). Interestingly, recently the College Board has established a commission to explore a new AP CS course. Its name, I hope tentative, is "AP Computer Science - Principles" -- see http://docs.google.com/present/view?id=dffps2vw_167hdvspwfc. Apparently, the current CS exam doesn't test any principles. What might this new exam be like? CS with no programming and no math? We'll see. My guess is, if it eventually comes about, it will be a no-specific-programming-language exam, which will simply replace the current AP CS exam in Java. I believe two AP CS exams will be untenable. Gary Litvin www.skylit.com From litvin at skylit.com Mon Jan 25 03:59:44 2010 From: litvin at skylit.com (Litvin) Date: Sun, 24 Jan 2010 21:59:44 -0500 Subject: [Edu-sig] Math and Python: level of difficulty In-Reply-To: References: Message-ID: <7.0.1.0.2.20100124214050.03f95180@skylit.com> At 04:12 AM 1/24/2010, kirby urner wrote: >Back to the Litvin text, which has a lot going for it, I think it >might be too difficult for some of the students we're hoping to reach. > >Phillips Academy is one of the most prestigious, reminiscent of >Catlin Gabel or Oregon Episcopal in our neck of the woods (I could >rattle off a few more). The text comes across as "early college" >i.e. college level for high schoolers, or at least as a kind of >advanced Algebra 2 (thinking of the chapter on polynomials in particular). > >It goes all the way through RSA (public key crypto) as I've >typically advocated we do. > >The good news is MFTDA (Math for the Digital Age) could be like >TAOCP or SICP by Abelson, Sussman & Sussman, by forming the nucleus >of a genre. In additional to full blown texts, we'll perhaps see a >growing inventory of cyberspace assets contributed directly by >teachers and students? First, let me say I am honored to have our book mentioned in the same paragraph with Knuth and Abelson, Sussman & Sussman. :) Kirby is right: our book is suitable for students in a typical first-year discrete math college course. That doesn't mean, though, that a bright middle schooler or an open-minded 9th- or 10th-grader can't handle it. Unfortunately there is virtually nothing in the standard K-12 math that prepares students for this kind of math, Phillips Academy or not. If anything, younger students are more enthusiastic and open to actually solving problems. Maria (Litvin) recently asked her students Question 2 from Section 1.2: How many subsets does a set of 3 elements have, including the empty set and the set itself? Her students understood what a subset is, but only one from the whole class could answer the question. The others had no clue how to approach a problem -- any problem! Most of these kids are currently enrolled in AP Calculus or a more advanced math course, such as linear algebra... I suspect if you explain to an interested and reasonably bright 10-year-old what a subset is and ask the same question, chances are he/she will quickly list all the subsets and give you the right answer within a couple of minutes. It is true, of course, that the last two chapters, the one on map coloring and the one on number theory and cryptology, are quite technical. Only very bright students -- high school or college -- will be able to handle them. But we need to somehow keep these kids busy, too, don't we? Gary Litvin www.skylit.com From droujkova at gmail.com Mon Jan 25 13:08:38 2010 From: droujkova at gmail.com (Maria Droujkova) Date: Mon, 25 Jan 2010 07:08:38 -0500 Subject: [Edu-sig] Math and Python: level of difficulty In-Reply-To: <7.0.1.0.2.20100124214050.03f95180@skylit.com> References: <7.0.1.0.2.20100124214050.03f95180@skylit.com> Message-ID: I would very much like to see this efforts expanded to earlier ages and stages in math development. I work with kids as young as three and on, using Scratch with them. They learn so much from programming, from coordinate thinking to increments and "gentle calculus" (e.g. that you program speed as the change in distance). Functions, grid reasoning, co-variation, equations and variables are just a few examples of Early Algebra topics that lend themselves extremely well to the programming approach, and become accessible to five-ten year olds who program. If any of you are interested in under-ten Math Club crowd (meaning middle and high school "everybody"), please let me know so we can join efforts. It would be nice to write it all up as a coherent resource. Cheers, Maria Droujkova http://www.naturalmath.com Make math your own, to make your own math. On Sun, Jan 24, 2010 at 9:59 PM, Litvin wrote: > At 04:12 AM 1/24/2010, kirby urner wrote: > >> Back to the Litvin text, which has a lot going for it, I think it might be >> too difficult for some of the students we're hoping to reach. >> >> Phillips Academy is one of the most prestigious, reminiscent of Catlin >> Gabel or Oregon Episcopal in our neck of the woods (I could rattle off a few >> more). The text comes across as "early college" i.e. college level for high >> schoolers, or at least as a kind of advanced Algebra 2 (thinking of the >> chapter on polynomials in particular). >> >> It goes all the way through RSA (public key crypto) as I've typically >> advocated we do. >> >> The good news is MFTDA (Math for the Digital Age) could be like TAOCP or >> SICP by Abelson, Sussman & Sussman, by forming the nucleus of a genre. In >> additional to full blown texts, we'll perhaps see a growing inventory of >> cyberspace assets contributed directly by teachers and students? >> > > First, let me say I am honored to have our book mentioned in the same > paragraph with Knuth and Abelson, Sussman & Sussman. :) > > Kirby is right: our book is suitable for students in a typical first-year > discrete math college course. That doesn't mean, though, that a bright > middle schooler or an open-minded 9th- or 10th-grader can't handle it. > Unfortunately there is virtually nothing in the standard K-12 math that > prepares students for this kind of math, Phillips Academy or not. If > anything, younger students are more enthusiastic and open to actually > solving problems. Maria (Litvin) recently asked her students Question 2 > from Section 1.2: How many subsets does a set of 3 elements have, including > the empty set and the set itself? Her students understood what a subset is, > but only one from the whole class could answer the question. The others had > no clue how to approach a problem -- any problem! Most of these kids are > currently enrolled in AP Calculus or a more advanced math course, such as > linear algebra... I suspect if you explain to an interested and reasonably > bright 10-year-old what a subset is and ask the same question, chances are > he/she will quickly list all the subsets and give you the right answer > within a couple of minutes. It is true, of course, that the last two > chapters, the one on map coloring and the one on number theory and > cryptology, are quite technical. Only very bright students -- high school > or college -- will be able to handle them. But we need to somehow keep > these kids busy, too, don't we? > > Gary Litvin > www.skylit.com > > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > -------------- next part -------------- An HTML attachment was scrubbed... URL: From macquigg at ece.arizona.edu Mon Jan 25 15:36:07 2010 From: macquigg at ece.arizona.edu (David MacQuigg) Date: Mon, 25 Jan 2010 07:36:07 -0700 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> Message-ID: <4B5DAC57.6020902@ece.arizona.edu> Litvin wrote: > What might this new exam be like? CS with no programming and no > math? We'll see. My guess is, if it eventually comes about, it will > be a no-specific-programming-language exam, which will simply replace > the current AP CS exam in Java. I believe two AP CS exams will be > untenable. I can't imagine teaching or testing CS without an actual language. A much better alternative would be to have the same test in multiple languages (perhaps with a "handicap" factor for the students choosing Python, so they don't have an embarrassing advantage :>). If you find a problem that is not easily translated to another language, that is a clue that the problem is about cruft, not fundamentals. I would volunteer to do the Java to Python translations. -- Dave ************************************************************ * * David MacQuigg, PhD email: macquigg at ece.arizona.edu * * * Research Associate phone: USA 520-721-4583 * * * * ECE Department, University of Arizona * * * * 9320 East Mikelyn Lane * * * * http://purl.net/macquigg Tucson, Arizona 85710 * ************************************************************ * From aharrin at luc.edu Mon Jan 25 15:55:48 2010 From: aharrin at luc.edu (Andrew Harrington) Date: Mon, 25 Jan 2010 08:55:48 -0600 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <4B5DAC57.6020902@ece.arizona.edu> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> Message-ID: Sounds good to me, David. Good luck putting it over. Maybe after we get 10 million hits on PyWhip? Andy On Mon, Jan 25, 2010 at 8:36 AM, David MacQuigg wrote: > Litvin wrote: > > What might this new exam be like? CS with no programming and no math? >> We'll see. My guess is, if it eventually comes about, it will be a >> no-specific-programming-language exam, which will simply replace the current >> AP CS exam in Java. I believe two AP CS exams will be untenable. >> > > I can't imagine teaching or testing CS without an actual language. A much > better alternative would be to have the same test in multiple languages > (perhaps with a "handicap" factor for the students choosing Python, so they > don't have an embarrassing advantage :>). If you find a problem that is not > easily translated to another language, that is a clue that the problem is > about cruft, not fundamentals. I would volunteer to do the Java to Python > translations. > > -- Dave > > ************************************************************ * > * David MacQuigg, PhD email: macquigg at ece.arizona.edu * * > * Research Associate phone: USA 520-721-4583 * * * > * ECE Department, University of Arizona * * * > * 9320 East Mikelyn Lane * * * > * http://purl.net/macquigg Tucson, Arizona 85710 * > ************************************************************ * > > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > -- Andrew N. Harrington Director of Academic Programs Computer Science Department Loyola University Chicago 512B Lewis Towers (office) Snail mail to Lewis Towers 416 820 North Michigan Avenue Chicago, Illinois 60611 http://www.cs.luc.edu/~anh Phone: 312-915-7982 Fax: 312-915-7998 gpd at cs.luc.edu for graduate administration upd at cs.luc.edu for undergrad administration aharrin at luc.edu as professor -------------- next part -------------- An HTML attachment was scrubbed... URL: From litvin at skylit.com Mon Jan 25 16:22:27 2010 From: litvin at skylit.com (Litvin) Date: Mon, 25 Jan 2010 10:22:27 -0500 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <4B5DAC57.6020902@ece.arizona.edu> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> Message-ID: <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> At 09:36 AM 1/25/2010, David MacQuigg wrote: >I can't imagine teaching or testing CS without an actual >language. A much better alternative would be to have the same test >in multiple languages (perhaps with a "handicap" factor for the >students choosing Python, so they don't have an embarrassing advantage :>). Sure, for teaching you can use a particular language (or two). Testing is another matter. Currently AP free-response questions are not just "program this" or "program that" -- they are stated in a particular language, e.g., here is a class, implement this particular method. They also have a "case study," now in Java, and ask questions about it, e.g., to write a new method or to implement a new derived class. The questions never ask students to write a complete program. Then ETS brings together 80 or so teachers and college profs for a week each June to grade AP CS free-response questions. These readers would have to be polyglots. They use an elaborate rubric to grade a question, with partial credit given for every little bit remotely related to the right answer. Supporting multiple languages would cost the College Board and ETS a lot of money, and this is a relatively small exam (about 20,000 students). There are many programming competitions, of course, where they care only about the program's correct result, such as ACSL -- http://www.acsl.org/. That's where Python programmers have a great advantage. Unfortunately, few contestants use it now, because it is not widely taught in schools yet. Does a contest specifically for Python programmers exist? Is it feasible? Gary Litvin www.skylit.com From aharrin at luc.edu Mon Jan 25 16:42:04 2010 From: aharrin at luc.edu (Andrew Harrington) Date: Mon, 25 Jan 2010 09:42:04 -0600 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> Message-ID: Gary, Interesting site, ACSL. Curious, there is no mention of specific languages or freedom of language the I find quickly on their site. The only hint is the list of languages given where solutions are given, Is that the actual list of restrictions? On Mon, Jan 25, 2010 at 9:22 AM, Litvin wrote: > At 09:36 AM 1/25/2010, David MacQuigg wrote: > >> I can't imagine teaching or testing CS without an actual language. A much >> better alternative would be to have the same test in multiple languages >> (perhaps with a "handicap" factor for the students choosing Python, so they >> don't have an embarrassing advantage :>). >> > > Sure, for teaching you can use a particular language (or two). Testing is > another matter. Currently AP free-response questions are not just "program > this" or "program that" -- they are stated in a particular language, e.g., > here is a class, implement this particular method. They also have a "case > study," now in Java, and ask questions about it, e.g., to write a new method > or to implement a new derived class. The questions never ask students to > write a complete program. Then ETS brings together 80 or so teachers and > college profs for a week each June to grade AP CS free-response questions. > These readers would have to be polyglots. They use an elaborate rubric to > grade a question, with partial credit given for every little bit remotely > related to the right answer. Supporting multiple languages would cost the > College Board and ETS a lot of money, and this is a relatively small exam > (about 20,000 students). > > There are many programming competitions, of course, where they care only > about the program's correct result, such as ACSL -- http://www.acsl.org/. > That's where Python programmers have a great advantage. Unfortunately, few > contestants use it now, because it is not widely taught in schools yet. > Does a contest specifically for Python programmers exist? Is it feasible? > > > Gary Litvin > www.skylit.com > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > -- Andrew N. Harrington Director of Academic Programs Computer Science Department Loyola University Chicago 512B Lewis Towers (office) Snail mail to Lewis Towers 416 820 North Michigan Avenue Chicago, Illinois 60611 http://www.cs.luc.edu/~anh Phone: 312-915-7982 Fax: 312-915-7998 gpd at cs.luc.edu for graduate administration upd at cs.luc.edu for undergrad administration aharrin at luc.edu as professor -------------- next part -------------- An HTML attachment was scrubbed... URL: From macquigg at ece.arizona.edu Mon Jan 25 17:39:41 2010 From: macquigg at ece.arizona.edu (David MacQuigg) Date: Mon, 25 Jan 2010 09:39:41 -0700 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> Message-ID: <4B5DC94D.6050707@ece.arizona.edu> Litvin wrote: > At 09:36 AM 1/25/2010, David MacQuigg wrote: >> I can't imagine teaching or testing CS without an actual language. A >> much better alternative would be to have the same test in multiple >> languages (perhaps with a "handicap" factor for the students choosing >> Python, so they don't have an embarrassing advantage :>). > > Sure, for teaching you can use a particular language (or two). > Testing is another matter. Currently AP free-response questions are > not just "program this" or "program that" -- they are stated in a > particular language, e.g., here is a class, implement this particular > method. They also have a "case study," now in Java, and ask questions > about it, e.g., to write a new method or to implement a new derived > class. The questions never ask students to write a complete program. > Then ETS brings together 80 or so teachers and college profs for a > week each June to grade AP CS free-response questions. These readers > would have to be polyglots. They use an elaborate rubric to grade a > question, with partial credit given for every little bit remotely > related to the right answer. Supporting multiple languages would cost > the College Board and ETS a lot of money, and this is a relatively > small exam (about 20,000 students). Is there anything in the current AP test that can't be translated to Python? I don't mean a word-for-word translation, but rather, re-state the same fundamental problem in Python. As for grading the free-response questions, if 20% of the tests are done in Python, surely ETS can hire 20% of the graders in that category. In fact, I think it would be *easier* to hire the Python graders, since a larger percentage of Python teachers will be "enthusiasts", not just doing it for the money. Nobody is expected to be a polyglot. In fact, I would require they state a preference to minimize the bias for or against any language. Each grader should grade tests only in his/her preferred language. Comparing the raw scores might lead to a real awakening. Bruce Eckel (Thinking in Java) says he is five times more productive in Python than in Java. I hesitate to use that number, because people will think I am crazy. I am comfortable saying a factor of two, however. -- Dave From kirby.urner at gmail.com Mon Jan 25 18:03:18 2010 From: kirby.urner at gmail.com (kirby urner) Date: Mon, 25 Jan 2010 09:03:18 -0800 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> Message-ID: On Sun, Jan 24, 2010 at 6:40 PM, Litvin wrote: > What might this new exam be like? CS with no programming and no math? > We'll see. My guess is, if it eventually comes about, it will be a > no-specific-programming-language exam, which will simply replace the current > AP CS exam in Java. I believe two AP CS exams will be untenable. > > Gary Litvin > www.skylit.com > > In the interim, I think we should use the breathing room. Here's an opportunity for a local community to synthesize a new mix, without getting into lockstep. Innovation, not conformity, is what we're needing right now. Let's imagine a math class, one that satisfies a year requirement, that is not AP anything. Think of Trig or Statistics, or even Algebra 2. I like that MFTDA starts right off the bat with the traditional Algebra topic of functions as mappings, goes over the concepts of domain, range, co-domain, inverse function, many to one. Clearly this is mathematics. But then, because of our commitment to teaching "how things work", we don't stay in the clouds. We start answering the question "what's this good for?" right away. We talk about reverse lookup phone books, mapping human languages with Unicode, storing and retrieving data in tables (one-to-many, many-to-one, many-to-many). We make our topic real, concrete, applicable. We write little functions in Python, we talk about Python dictionaries as mappings. If only our everyday Algebra course were a lot more like this one... that's what we're after in many cases: a more fulfulling way to approach a lot of the same topics we already cover, but in ways that haven't been updated in decades. Kirby -------------- next part -------------- An HTML attachment was scrubbed... URL: From litvin at skylit.com Mon Jan 25 18:32:51 2010 From: litvin at skylit.com (Litvin) Date: Mon, 25 Jan 2010 12:32:51 -0500 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <4B5DC94D.6050707@ece.arizona.edu> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> <4B5DC94D.6050707@ece.arizona.edu> Message-ID: <7.0.1.0.2.20100125120747.03f95180@skylit.com> At 11:39 AM 1/25/2010, David MacQuigg wrote: >Is there anything in the current AP test that can't be translated to Python? Of course not. But AP is driven by colleges. The AP exam used to be in C++ until 2003. The current exam has heavy emphasis on OOP. It took a tremendous effort to retrain HS teachers from C++ to Java/OOP... If the college board decided that Python is used at most colleges in intro CS courses, they would eventually move. This is very unlikely, though. College courses are getting more and more fragmented in terms of the languages used, so it might be easier for the college board to move to a language-less exam. The current exam is too Java specific. >Comparing the raw scores might lead to a real awakening. Scores depend a lot on a particular teacher and textbook, not so much on the language. The remaining AP CS exam is not very demanding, anyway, in terms of writing code that works. >Bruce Eckel (Thinking in Java) says he is five times more productive >in Python than in Java. I hesitate to use that number, because >people will think I am crazy. I am comfortable saying a factor of >two, however. Me too -- by a factor of two. At least. So what? First language discussions flare up regularly on the ap-compsci listserve. In this forum, Python would win, of course. :) I am all for Python, but I don't believe in the "objects first" approach. The College Board's CS Development Committee seems to be gradually moving away from heavy duty OOP back to algorithms. Gary Litvin www.skylit.com From kirby.urner at gmail.com Mon Jan 25 21:52:51 2010 From: kirby.urner at gmail.com (kirby urner) Date: Mon, 25 Jan 2010 12:52:51 -0800 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <7.0.1.0.2.20100125120747.03f95180@skylit.com> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> <4B5DC94D.6050707@ece.arizona.edu> <7.0.1.0.2.20100125120747.03f95180@skylit.com> Message-ID: On Mon, Jan 25, 2010 at 9:32 AM, Litvin wrote: > > > Me too -- by a factor of two. ?At least. ?So what? ?First language discussions flare up regularly on the ap-compsci listserve. ?In this forum, Python would win, of course. :) ?I am all for Python, but I don't believe in the "objects first" approach. ?The College Board's CS Development Committee seems to be gradually moving away from heavy duty OOP back to algorithms. > > Gary Litvin > www.skylit.com > "Heavy duty OOP" sounds somewhat extraneous to Algebra 2, I agree. However, if you show the 2 + 2 is adding two objects (2 .__add__(2) the same thing), is that "objects first"? Teacher projecting: >>> dir (2) # saying: "2 has internals, is an object with methods" So many gradations. Ideally, we start earlier with the computers and then have more than just the one high school math course in which to develop this thinking. MFTDA looks like a compressed version of what we could easily spread out across a wider time span. Could be a whole series, more like Saxon. Kirby From litvin at skylit.com Mon Jan 25 23:23:34 2010 From: litvin at skylit.com (Litvin) Date: Mon, 25 Jan 2010 17:23:34 -0500 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> <4B5DC94D.6050707@ece.arizona.edu> <7.0.1.0.2.20100125120747.03f95180@skylit.com> Message-ID: <7.0.1.0.2.20100125172310.03fdafa8@skylit.com> At 03:52 PM 1/25/2010, kirby urner wrote: >However, if you show the 2 + 2 is adding two objects (2 .__add__(2) >the same thing), is that "objects first"? Yes. From kirby.urner at gmail.com Tue Jan 26 00:13:09 2010 From: kirby.urner at gmail.com (kirby urner) Date: Mon, 25 Jan 2010 15:13:09 -0800 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <7.0.1.0.2.20100125172310.03fdafa8@skylit.com> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> <4B5DC94D.6050707@ece.arizona.edu> <7.0.1.0.2.20100125120747.03f95180@skylit.com> <7.0.1.0.2.20100125172310.03fdafa8@skylit.com> Message-ID: On Mon, Jan 25, 2010 at 2:23 PM, Litvin wrote: > At 03:52 PM 1/25/2010, kirby urner wrote: >> >> However, if you show the 2 + 2 is adding two objects (2 .__add__(2) >> the same thing), is that "objects first"? > > Yes. > OK, I agree. 2 .__add__(2) is pretty esoteric, as is dir (2). Not everyone does that, or talks about __ribs__. How about if the teacher says: """ 1.0 and 1 are two different types of number, floating point and integer. "A" is a type as well, a string type. All of these types are types of object. <--- more generic than number. """ But we might get to that only after using Python as a calculator for awhile, getting used to **, assignment operator, parentheses. Should feel like old hat as I bet a lot of these students were already used a TI before. So this'd be "objects second" perhaps? Other approaches: objects after awhile; objects last; objects never. Kirby From macquigg at ece.arizona.edu Tue Jan 26 05:50:15 2010 From: macquigg at ece.arizona.edu (David MacQuigg) Date: Mon, 25 Jan 2010 21:50:15 -0700 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <7.0.1.0.2.20100125120747.03f95180@skylit.com> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> <4B5DC94D.6050707@ece.arizona.edu> <7.0.1.0.2.20100125120747.03f95180@skylit.com> Message-ID: <4B5E7487.60607@ece.arizona.edu> Litvin wrote: > AP is driven by colleges. The AP exam used to be in C++ until 2003. > The current exam has heavy emphasis on OOP. It took a tremendous > effort to retrain HS teachers from C++ to Java/OOP... If the college > board decided that Python is used at most colleges in intro CS > courses, they would eventually move. Why does the AP test have to be offered in just one language? Why do we need to make a "tremendous effort" to move teachers from one language to another? Couldn't every school-district make it's own choice of language? Do colleges really expect specific training in a particular language? If a student has a thorough understanding of OOP in Python, then enrolls in a college that teaches in Java, we could have a one-credit, self-study course, with the final exam being the AP test in Java. Students could even take this transition course over the summer between high school and college. Goldwasser's text has an excellent transition to Java. I expect we will have a section of PyWhip for this purpose also. I participated in a team-programming project in our junior-level class in OOP. The class was taught in Java, but the project was done in Python. The students participating in the project were wary at first, insisting that they be able to write in Java, and I agreed to do the translations to Python. I didn't have to do any translations at all. These Java students picked up on Python right away, and got a A on their project. Moving the other direction - from Python to Java, might be more difficult (adding cruft instead of removing it), but certainly do-able for a student who really understands the fundamental concepts. Teaching these concepts using the best tools available should be our focus in high school. Learning the specifics of whatever language they need later should be "on the job" training. Whatever language we choose for teaching, we have to assume students will need something else after graduation. The cruft will change. Fundamentals stay the same. > This is very unlikely, though. College courses are getting more and > more fragmented in terms of the languages used, so it might be easier > for the college board to move to a language-less exam. The current > exam is too Java specific. Beyond college the world is even more fragmented. At Cadence, our main language was SKILL (a proprietary variant of LISP). I've now forgotten SKILL. Currently, I need to be familiar, but not proficient in Java and C. Soon I may have to learn Perl. Python will always be my core language, however. C also has some nice "down to the metal" fundamentals you don't get anywhere else. I don't understand how you get into any depth in CS without a programming language in which to communicate the fundamental ideas. Do you have an example of a "language-less exam" that might sufficiently test a student's knowledge of CS? >> Comparing the raw scores might lead to a real awakening. > > Scores depend a lot on a particular teacher and textbook, not so much > on the language. The remaining AP CS exam is not very demanding, > anyway, in terms of writing code that works. The comparison I would really love to see is an average of the Java scores vs an average of the Python scores. These would be averages over all teachers and all textbooks. Assuming the choice of problems is really our best consensus on what is important, this could be a good measure of which language is more "productive". -- Dave From kirby.urner at gmail.com Tue Jan 26 07:10:32 2010 From: kirby.urner at gmail.com (kirby urner) Date: Mon, 25 Jan 2010 22:10:32 -0800 Subject: [Edu-sig] some turtle questions In-Reply-To: <8F7BCECA-CD55-425D-A173-94D7F30DFB53@bryant.edu> References: <8F7BCECA-CD55-425D-A173-94D7F30DFB53@bryant.edu> Message-ID: Hi Brian -- If you wanna go to a lot of work, but not a huge amount, write wrapper class for the Standard Library turtle that intercepts its commands and updates an on-board data structure, representing pixels x pixels, specifying self position, keep color info stashed per each one. That's a lot of data, depending on screen resolution. Consider a thick line option if you have one, make your turtle "wide body". Or stay with thin. So then if you go turtle.forward(10) you will send it to your self-made forward method. Stop and smell the pixels, see what color was stashed there, either by another turtle (! -- shared data structure) or by this turtle, or maybe it's still the default untrammeled color. You can add new methods, like "glide" or "explode" that translate to the underlying turtle somehow -- use your imagination. Kirby On Sun, Jan 24, 2010 at 7:29 AM, Brian Blais wrote: > Hello, > > I am trying to think of things to do with the turtle module with my > students, and I have some ideas where I am not sure whether the turtle > module can do it. > > 1) is there a way to determine the current screen pixel color? I am > thinking about having the turtle go forward until it reaches an object, say > a red circle. I can probably do this by making circle objects (drawn with > turtles themselves) which know their own position, and check against this > info. But I thought it might be useful also for the turtle to know. > > 2) is there a way to put a limit on the extent the turtle can travel? it > seems I can keep moving off of the screen. Is there a way to make it so > that a forward(50) command, at the edge, either raises an exception (at the > wall) or simply doesn't move the turtle because of the limit? > > > thanks! > > > bb > > -- > Brian Blais > bblais at bryant.edu > http://web.bryant.edu/~bblais > http://bblais.blogspot.com/ > > > > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From macquigg at ece.arizona.edu Tue Jan 26 11:53:58 2010 From: macquigg at ece.arizona.edu (David MacQuigg) Date: Tue, 26 Jan 2010 03:53:58 -0700 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: References: Message-ID: <4B5EC9C6.5040301@ece.arizona.edu> kirby urner wrote: > I've been hyping "digital mathematics" as a kind of niche marketing > term, as distinct from "discrete" but is this wise? > > Per math-thinking-l (another list), I'd say I'm in the distinct > minority in thinking "digital math" is a good term. It's unexplored, > not conservative, whereas discrete math is already accepted and > entrenched. > > To try going in with some "digital math" is just stacking the deck > against one's own efforts, increasing the odds against success. > Still, we need to call it something. Computer Math? Computational > Math? Discrete Math? I would call it "Computational Thinking". There have been a series of articles on revising CS curricula in recent issues of Communications of the ACM. I recommend the articles by Chris Stephenson and Peter Denning (December 2009). > 3.d OBJECTS FIRST? > ==================== > > Sorry this is being so long. Let me just end with another take on the > "objects first" approach. > > In order to make Python more accessible and the mathematics > correspondingly easier, we begin with very simple classes based around > animals (e.g. the Turtle class). We encourage thinking about animals, > their attributes and behaviors. Only later on will we try our had at > more generic "math objects" such as Rational Numbers. > > MFTDA actually includes a Rational number class, but doesn't give it > much focus. It seems to be the only class definition in the entire > text. I think this maybe mirrors an attitude among CS professors that > classes and objects are an advanced 2nd year topic. > > My own view is somewhere in between: I think a full blown treatment > of OO, including abstract classes, metaclasses, multiple inheritance, > is indeed advanced and probably not suitable for a one year or half > year high school math course. > > Or, if suitable, then mostly in the form a really primitive examples > of the Foo and Bar class variety, more to communicate the generic > design patterns and concepts than to develop full blown computer > programs such as one might use in production environments. > > What examples do teachers wish to contribute? What would be a good > introductory example of multiple inheritance I wonder? I recall David > MacQuigg sharing some examples where __mro__ (method resolution order) > made an appearance. MRO was an advanced topic in an advanced chapter on OOP, not anything I would include in an introductory course. In fact, I wouldn't even make OOP a special topic. It's just the most natural way to solve a lot of problems. Students should be *using* objects (lists, etc.) from day 1. Then, if there is time later in the course, I would show how to *design* objects. Even then, you really don't have to say much about inheritance, polymorphism, abstract classes, MRO, and all the stuff that professional programmers will get in later courses. The thing you want to avoid is having students think "What is this crap?" That's sometimes necessary in math. You can't appreciate the utility of eigenvectors until you understand them. It's totally unnecessary in programming. Let real-world examples lead the way. If you can't start with a simple example where multiple inheritance is needed, don't even introduce the topic. > http://wikieducator.org/User:Macquigg (I recommend reading Dr. > Macquigg's excellent testimonial here, with a link to his PyWhip). PyWhip is the tool that is needed by math and science teachers who want to use computation in their classes, but feel uncomfortable trying to teach programming. It will include problems in chemistry, physics, calculus, whatever someone wants to contribute. All a teacher has to do is stay one step ahead of the students. Anyone capable of teaching science or math can do that. Unfortunately, our grand plans have been stalled for lack of a volunteer web programmer who can finish the hardest part of the job - the last 10%. We are considering applying for a grant, so we can hire a professional. I wish I had more time. Google App Engine, Django, Web2py... it all looks very interesting. > So yes, the CS professors are right. A full blown intro to classes is > too much to start off with. Actually, CS professors, as a group, are more likely to want "full blown" tailored to the needs of future programmers. Us industry types are more likely to say "Screw this. I can write all the programs I need in BASIC and C." That was my attitude from when I first learned about OOP (1992) until discovering Python (2002). This was not for lack of trying. I read a book on C++, and concluded that a better name would have been C--. > The idea, then, is to build some awareness of classes and objects > using familiar analogies relating to every day life. A class > definition is a blueprint (one needs to explain "blueprint" -- design, > plan) whereas an instance of the class has it's own place in memory, > its own "self" as it were (intro to Python "self" syntax). > > Do some animal classes. Then note how dot notation is what's used to > access the attributes and behaviors of a user-defined object. > > Then note how Python's primitive objects are likewise instances of > various classes (e.g. the List class). > > It's dot notation itself that we're hoping to make second nature > (familiar, not too arcane). > > 3.e THE TIME DIMENSION > ==================== > > That's the breakthrough in understanding we're seeking: brief anatomy > lessons with user-defined classes provide enough background to anchor > an understanding of built-in classes and objects. It's really "dot > notation" itself that we're seeking to anchor here. noun.verb(args) > and noun.adjective provide a primitive grammar or logic. I would use built-in objects first, then user-defined. Students should be very comfortable with dot notation before we even suggest that you can do more than just use the built in objects in Python. To introduce dot notation, I would just show examples. It's kind of like learning to have a simple conversation in Spanish ("Hola, Isabel. Como esta!!) before studying the grammar, or even learning the vocabulary. See the section "Elegant Python" in http://pywhip.appspot.com/static/help/Using_Python.htm. A student's first encounter with dot notation will be the line: workset.append(n) # append n to the workset Other than that comment, and a prior statement: "... see if you can understand how this function works. Practice using the dir() and help() functions on list objects and their methods.", there is no explanation of this grammar. It's just a convenient way to say something Later, in http://pywhip.appspot.com/static/help/Strings.txt we talk a little more about the grammar, and the equivalence of two different notations: >>> len('abcde') # same as 'abcde'.__len__() Putting too much emphasis on a topic can actually make it harder to understand. I remember struggling with lambda functions for quite a while, even wasting time in a discussion of lambda calculus, then realizing it was nothing but a trivial bit of syntax, and I really wasn't missing something important. Gary has a good point that we may be still putting too much emphasis on "objects first". It's got me thinking whether I need to rewrite that section in Using_Python where I show that 2 is an object. The fundamental point of this section is Python's unique relationship between variables and objects. The rest is anecdotal. Anecdotal information can distract from the main point. PyWhip will have the ability for a teacher customize everything - problem sets, help files, whatever is needed for a particular group of students. When a student logs in, he will see exactly what his teacher intends him to see. The help files referenced above may be too brief for high school students. My target audience is technical professionals who already know how to write a program, perhaps in BASIC. I encourage others to submit alternatives better suited to whatever background your students may have. -- Dave From droujkova at gmail.com Tue Jan 26 13:46:16 2010 From: droujkova at gmail.com (Maria Droujkova) Date: Tue, 26 Jan 2010 07:46:16 -0500 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <4B5E7487.60607@ece.arizona.edu> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> <4B5DC94D.6050707@ece.arizona.edu> <7.0.1.0.2.20100125120747.03f95180@skylit.com> <4B5E7487.60607@ece.arizona.edu> Message-ID: On Mon, Jan 25, 2010 at 11:50 PM, David MacQuigg wrote: > Litvin wrote: > >> AP is driven by colleges. The AP exam used to be in C++ until 2003. The >> current exam has heavy emphasis on OOP. It took a tremendous effort to >> retrain HS teachers from C++ to Java/OOP... If the college board decided >> that Python is used at most colleges in intro CS courses, they would >> eventually move. >> > > Why does the AP test have to be offered in just one language? Why do we > need to make a "tremendous effort" to move teachers from one language to > another? Couldn't every school-district make it's own choice of language? > The goal of the whole standardized testing movement is to compare people from different educational backgrounds on the basis of some universal standards. The way this fascinating and potentially creative problem is currently approached mathematically is to create not just universal STANDARDS for the content, but universal CONTENT. This makes it easy to show that the comparison formulas and norms work. For example, in this thread people said Python is two to five times more effective for them than Java. Well, the ancient test-norming math won't have any of that, and to the best of my knowledge, people have not done any concerted theoretical development in that area for the last fifty years at the very least. Why work on that complex task, when the same content for everybody can be mandated through test monopolies, trivializing the norming problem? Standardized tests as we know them aren't suited for any pluralism within one area, by their very design. Multisubculturalism has happened too recently to be taking seriously, I guess. At the other end of the spectrum, we have extremely open-ended interviews a-la, "Why are manholes round?" http://en.wikipedia.org/wiki/Manhole_cover#Circular_shape What we seem to want is something in-between. I hope my note shows some of the conceptual and administrative challenges involved in this, much-needed, change. Cheers, Maria Droujkova http://www.naturalmath.com Make math your own, to make your own math. -------------- next part -------------- An HTML attachment was scrubbed... URL: From litvin at skylit.com Tue Jan 26 22:18:12 2010 From: litvin at skylit.com (Litvin) Date: Tue, 26 Jan 2010 16:18:12 -0500 Subject: [Edu-sig] Could there be a new test, call it AP something else? In-Reply-To: <4B5E7487.60607@ece.arizona.edu> References: <7.0.1.0.2.20100124212334.03feaba0@skylit.com> <4B5DAC57.6020902@ece.arizona.edu> <7.0.1.0.2.20100125095455.03fea4d0@skylit.com> <4B5DC94D.6050707@ece.arizona.edu> <7.0.1.0.2.20100125120747.03f95180@skylit.com> <4B5E7487.60607@ece.arizona.edu> Message-ID: <7.0.1.0.2.20100126153305.03f905c0@skylit.com> At 11:50 PM 1/25/2010, David MacQuigg wrote: >Why does the AP test have to be offered in just one language? Why >do we need to make a "tremendous effort" to move teachers from one >language to another? Couldn't every school-district make it's own >choice of language? Do colleges really expect specific training in >a particular language? Dave, The College Board is a huge bureaucracy and operates as such. I am not associated with them in any way but I do follow closely what they do in CS. My intention was not to defend their policies or procedures, but simply to state some facts of life. My wife (and co-author) is a College Board "consultant" for New England, which means she conducts workshops and summer institutes for teachers -- she's taught hundreds of teachers. She has been grading AP exams for 13 years, and was on the College Board's "ad hoc committee for teacher professional development in Java." The fact that such a committee was set up speaks for itself. High school CS teachers -- and I've met many of them, personally and via email -- are not professional programmers. They don't spend their days studying new languages or programming tools. Some have experience working in the industry; most have no CS degree and are self-trained. Many also teach math. Some take a week-long summer course and that's their whole preparation from scratch for teaching an AP CS class in September. It is not easy for an average teacher to quickly learn a new programming language or methodology. The following quote from today's ap-compsci listserv gives a little history: The first APCS exam was in 1984; Pascal was the language used. In 1999 the language was switched to C++; in 2004, the language was switched to Java. My impression is that AP doesn't contemplate language switches lightly; as you can see, Pascal was the language of use for fifteen years. The process to switch over from Pascal to C++ took a full five years, when you look at the development of the exam, instructional materials and training for teachers, case study, and so on. In one of those weird little quirks of history, Java blossomed onto the scene in the middle of that transition ... my sense from what I've heard is that APCS would've moved straight to Java if it could have, but the move to C++ was underway too far to attempt to redirect that change. Gratefully, the transition from C++ to Java wasn't nearly as difficult, with both languages being object-oriented and sharing common syntax. Jim Huggins, Kettering University, Flint MI Gary Litvin www.skylit.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From kirby.urner at gmail.com Wed Jan 27 02:08:55 2010 From: kirby.urner at gmail.com (kirby urner) Date: Tue, 26 Jan 2010 17:08:55 -0800 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: References: <4B5EC9C6.5040301@ece.arizona.edu> Message-ID: On Tue, Jan 26, 2010 at 3:20 PM, kirby urner wrote: > > In sum, I think the best way to teach OO is not make it *not* a strictly > computer science topic, but just a science topic more generally. > > Messed that one up eh? Make it *not* a strictly computer science topic... So you've all heard this joke.... Professor: interestingly, a double negative constitutes a logical positive, as in "not no" or "not not", however we have no expression in English where a double positive denotes a negative. Student in the back, sarcastically: Yeah, right. Kirby PS: I'm a huge fan of Java by the way, in the hands of a skilled coder such as Gerald de Jong: http://www.darwinathome.org/blog/2010/01/26/Tensegrity-Sphere-Movie.html -------------- next part -------------- An HTML attachment was scrubbed... URL: From droujkova at gmail.com Wed Jan 27 17:02:51 2010 From: droujkova at gmail.com (Maria Droujkova) Date: Wed, 27 Jan 2010 11:02:51 -0500 Subject: [Edu-sig] Math 2.0 Interest Group: January 27th at 9:30ET and weekly Message-ID: Hello, The Math 2.0 Interest Group has been meeting in the Fall 2009 on Wednesday evenings or Saturday early afternoons, Eastern US time, connecting individuals and projects involved in computer and online mathematics education. After a holiday break, the meetings resume tonight, Wednesday January 27th, at 9:30pm, in LearnCentral's Elluminate webinar room: https://sas.elluminate.com/d.jnlp?sid=lcevents&password=Webinar_Guest >From the Event description page at the group's wiki: http://mathfuture.wikispaces.com/events Bora Zivkovic will tell us the glorious story of organizing Science Online unConference , and will answer our questions about putting together, organizing, running and sustaining such events. [image: external image wiki_logo.jpg]This active three-day event explored science on the Web brought together scientists, physicians, patients, educators, students, publishers, editors, bloggers, journalists, essay writers, web developers, programmers and others to discuss, demonstrate and debate online strategies and tools for doing science, publishing science, teaching science, and promoting the public understanding of science. Check out the blog and media coverage of the 2007 conference here. See what we did at the 2008 conference hereand check the blog and media coverage of the 2008 conference here. Look around the ScienceOnline?09 wiki here and the blog and media coverage of the 2009 meeting hereInterviews with a number of participants at the 2008 conference are here and with participants of the 2009 conference here . Here are the plans for the next few events: - February 17th, 2010. *Event track *. Collaborative Math Fairs brainstorm. Host: TBA - February 10th, 2010. *Help a Teacher track *. CEET and other teacher projects. Host: Sue Hellman - February 6th, 2010. *Projects and Executable Math tracks *. Straightedge and compass constructions with Geogebra. Host: Linda Stojanovska See you soon! Cheers, Maria Droujkova http://www.naturalmath.com Make math your own, to make your own math. -------------- next part -------------- An HTML attachment was scrubbed... URL: From da.ajoy at gmail.com Wed Jan 27 21:36:52 2010 From: da.ajoy at gmail.com (Daniel Ajoy) Date: Wed, 27 Jan 2010 15:36:52 -0500 Subject: [Edu-sig] some turtle questions In-Reply-To: References: Message-ID: On Mon, 25 Jan 2010 06:00:01 -0500, wrote: > I'm almost sure that there's no way for a turtle to know anything > about the background. That's an unfortunate limitation! In FMSLogo: PIXEL Description Outputs a three element list of numbers that represent the red, green, and blue intensity of the pixel currently under the turtle. > As for putting a limit on a turtle's travel, you need to write an > appropriate conditional. For example, if you want your turtle to stay > within a 200x200 square centered around the origin and stop if it gets > out, do something roughly like: > > while(math.abs(t.xcor()) < 100 and math.abs(t.ycor()) < 100): > move turtle > > Of course, you could instead use if statements and simulate bouncing > (if my turtle's x coordinate is beyond my bounding box, subtract from > its x coordinate). In FMSLogo: WINDOW Description Tells the turtle to enter "window" mode. From now on, if the turtle is asked to move past the boundary of the graphics window, it will move off screen. The visible graphics window is considered as just part of an infinite graphics plane; the turtle can be anywhere on the plane. WRAP Description Tells the turtle to enter "wrap" mode. From now on, if the turtle is asked to move past the boundary of the graphics window, it will "wrap around" and reappear at the opposite edge of the window. The top edge wraps to the bottom edge, while the left edge wraps to the right edge. (So the window is topologically equivalent to a torus.) This is the turtle's initial mode. FENCE Description Tells the turtle to enter "fence" mode. From now on, if the turtle is asked to move past the boundary of the graphics window, it will move as far as it can and then stop at the edge with an "out of bounds" error message. Daniel http://sourceforge.net/projects/fmslogo/files/ From daniele.gianni at gmail.com Wed Jan 27 22:02:24 2010 From: daniele.gianni at gmail.com (Daniele Gianni) Date: Wed, 27 Jan 2010 22:02:24 +0100 Subject: [Edu-sig] CfP: Workshop on Collaborative Modeling and Simulation (CoMetS) In-Reply-To: References: Message-ID: <7fc6c6431001271302q14a130a3x38a512f8e9700b49@mail.gmail.com> ################################################################# IEEE WETICE 2010 1st International Workshop on Collaborative Modeling and Simulation CALL FOR PAPERS ################################################################# June 28 - June 30, 2010, Larissa (Greece) http://www.sel.uniroma2.it/CoMetS10 ################################################################# # Papers Due: *** March 2, 2010 *** # Accepted papers will be published in the conference proceedings # by the IEEE Computer Society Press and indexed by EI. ################################################################# Modeling and Simulation (M&S) is increasingly becoming a central activity in the design of new systems and in the analysis of existing systems because it enables designers and researchers to investigate systems behavior through virtual representations. For this reason, M&S is gaining a primary role in many industrial and research fields, such as space, critical infrastructures, manufacturing, emergency management, biomedical systems and sustainable future. However, as the complexity of the investigated systems increases and the types of investigations widens, the cost of M&S activities increases because of the more complex models and of the communications among a wider number and variety of M&S stakeholders (e.g., sub-domain experts, simulator users, simulator engineers, and final system users). To address the increasing costs of M&S activities, collaborative technologies must be introduced to support these activities by fostering the sharing and reuse of models, by facilitating the communications among M&S stakeholders, and more generally by integrating processes, tools and platforms. Aside from seeking applications of collaborative technologies to M&S activities, the workshop seeks innovative contributions that deal with the application of M&S practices to the design of collaborative environments. These environments are continuously becoming more complex and therefore their design requires systematic approaches to meet the required quality of collaboration. This is important for two reasons: to reduce rework activities on the actual collaborative environment, and to maximize the productivity and the quality of the process the collaborative environment supports. M&S offers the methodologies and tools for such investigations and therefore it can be used to improve the quality of collaborative environments. A non-exhaustive list of hi-level topics includes: * collaborative environments for M&S * agent-based M&S * collaborative distributed simulation * net-centric M&S * web-based M&S * model sharing and reuse * model building and evaluation * modeling and simulation of business processes * modeling for collaboration * simulation-based performance evaluation of collaborative networks * model-driven simulation engineering * domain specific languages for the simulation of collaborative environments * domain specific languages for collaborative M&S To stimulate creativity, however, the workshop maintains a wider scope and invites interested researchers to present contributions that offer original perspectives on collaboration and M&S. +++++++++++++++++++++++++++++++++++ On-Line Submissions and Publication +++++++++++++++++++++++++++++++++++ CoMetS'10 intends to bring together researchers and practitioners to discuss key issues, approaches, open problems, innovative applications and trends in the workshop research area. Papers should contain original contributions not published or submitted elsewhere. Papers up to six pages (including figures, tables and references) can be submitted. Papers should follow the IEEE format, which is single spaced, two columns, 10 pt Times/Roman font. All submissions should be electronic (in PDF) and will be peer-reviewed by at least three program committee members. Full papers accepted for the workshop will be included in the proceedings, published by the IEEE Computer Society Press (IEEE approval pending). Note that at least one author from each accepted paper should register to attend WETICE 2010 to get the paper published in the proceedings. Authors may contact the organizers for expression of interests and content appropriateness at any time. Papers can be submitted in PDF format at the submission site (http://www.easychair.org/conferences/?conf=comets10), which is supported by the EasyChair conference management system. Please contact the workshop chairs (comets10 at easychair.org) if you experience problems with the EasyChair Web site. +++++++++++++++ Important Dates +++++++++++++++ * Submission Deadline: March 2, 2010 * Decision to paper authors: April 2, 2010 * Final version of accepted papers due to IEEE: April 14, 2010 * Conference dates: June 28 - June 30, 2010 ++++++++++++++++++++ Organizing Committee ++++++++++++++++++++ * Andrea D'Ambrogio, University of Roma TorVergata, Italy * Daniele Gianni, European Space Agency, Netherlands * Joachim Fuchs, European Space Agency, Netherlands * Giuseppe Iazeolla, University of Roma TorVergata, Italy +++++++++++++++++ Program Committee +++++++++++++++++ * Michele Angelaccio, University of Roma TorVergata, Italy * Olivier Dalle, University of Nice Sophia Antipolis, CNRS & INRIA, France * Steve McKeever, University of Oxford, UK * Alessandra Pieroni, University of Roma TorVergata, Italy * Andrew Rice, University of Cambridge, UK * Jos? L. Risco-Martin, Universidad Complutense de Madrid, Spain * Helena Szczerbicka, University of Hannover, Germany * Hans Vangheluwe, McGill University, Canada * Gabriel Wainer, Carleton University, Canada * J.Chris White, ViaSim Solutions, USA * Quirien Wijnands, European Space Agency, Netherlands * Heming Zhang, Tsinghua University, China *** Contact Information *** Andrea D'Ambrogio (workshop co-chair) Email: dambro at info.uniroma2.it -------------- next part -------------- An HTML attachment was scrubbed... URL: From droujkova at gmail.com Wed Jan 27 22:27:12 2010 From: droujkova at gmail.com (Maria Droujkova) Date: Wed, 27 Jan 2010 16:27:12 -0500 Subject: [Edu-sig] Math 2.0 Interest Group: January 27th at 9:30ET and weekly In-Reply-To: References: Message-ID: Correction: the webinar link is https://sas.elluminate.com/m.jnlp?sid=2008350&password=M.D5176DFCA66A74E3F55867FA87018F Cheers, Maria Droujkova http://www.naturalmath.com Make math your own, to make your own math. On Wed, Jan 27, 2010 at 11:02 AM, Maria Droujkova wrote: > Hello, > > The Math 2.0 Interest Group has been meeting in the Fall 2009 on Wednesday > evenings or Saturday early afternoons, Eastern US time, connecting > individuals and projects involved in computer and online mathematics > education. After a holiday break, the meetings resume tonight, Wednesday > January 27th, at 9:30pm, in LearnCentral's Elluminate webinar room: > https://sas.elluminate.com/d.jnlp?sid=lcevents&password=Webinar_Guest > > From the Event description page at the group's wiki: > http://mathfuture.wikispaces.com/events > > Bora Zivkovic will tell us the glorious story of organizing Science Online > unConference , and will > answer our questions about putting together, organizing, running and > sustaining such events. > [image: external image wiki_logo.jpg]This > active three-day event explored science on the Web brought together > scientists, physicians, patients, educators, students, publishers, editors, > bloggers, journalists, essay writers, web developers, programmers and > others to discuss, demonstrate and debate online strategies and tools for > doing science, publishing science, teaching science, and promoting the > public understanding of science. > Check out the blog and media coverage of the 2007 conference here. > See what we did at the 2008 conference hereand check the blog and media coverage of the 2008 conference > here. Look around the ScienceOnline?09 wiki > here and the blog and > media coverage of the 2009 meeting hereInterviews with a number of participants at the 2008 conference are > here and with > participants of the 2009 conference here > . > > > Here are the plans for the next few events: > > > - February 17th, 2010. *Event track > *. Collaborative Math Fairs brainstorm. Host: TBA > - February 10th, 2010. *Help a Teacher track > *. CEET and other teacher projects. > Host: Sue Hellman > - February 6th, 2010. *Projects and Executable Math tracks > *. Straightedge and compass constructions with Geogebra. > Host: Linda Stojanovska > > See you soon! > > > Cheers, > Maria Droujkova > http://www.naturalmath.com > > Make math your own, to make your own math. > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kirby.urner at gmail.com Thu Jan 28 06:05:20 2010 From: kirby.urner at gmail.com (kirby urner) Date: Wed, 27 Jan 2010 21:05:20 -0800 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: References: <4B5EC9C6.5040301@ece.arizona.edu> Message-ID: From: kirby urner Date: Tue, Jan 26, 2010 at 3:20 PM Subject: Re: [Edu-sig] Math + Python: reviewing some themes (long) To: edu-sig at python.org On Tue, Jan 26, 2010 at 2:53 AM, David MacQuigg wrote: > kirby urner wrote: >> >> I've been hyping "digital mathematics" as a kind of niche marketing term, >> as distinct from "discrete" but is this wise? ??Per math-thinking-l (another >> list), I'd say I'm in the distinct minority in thinking "digital math" is a >> good term. ?It's unexplored, not conservative, whereas discrete math is >> already accepted and entrenched. ... > > I would call it "Computational Thinking". ?There have been a series of > articles on revising CS curricula in recent issues of Communications of the > ACM. ?I recommend the articles by Chris Stephenson and Peter Denning > (December 2009). > Thx for the pointer! INTERNATIONALIZATION =================== Singapore Math, popular among home schoolers / scholars, has been explicitly IT-friendly for a long time and I'm wondering if something more like MFTDA will be issuing forth from that corner.? Wouldn't surprise me. A Japanese equivalent might base itself around Ruby for coding but otherwise seem somewhat similar. Phillips Academy is a pace-setter, not unlike West Point, so I'm sure this curriculum is getting eyeballed by education experts overseas (if they're doing their jobs). I've been sharing it around the Portland for sure, and we're quite the cosmopolitan hub, news spreads... I just think "digital math" (whatever we call it) is hovering in the global Zeitgeist these days, MFTDA another harbinger, a positive sign on the horizon. Over on math-teach today, we're getting links like this one: http://www.dougengelbart.org/home-page/welcome-to-the-bootstrap-alliance.html It's not like Seymour Papert or Doug Engelbart wree born yesterday or anything.? It's just that NCTM is finally taking more interest in Web 2.0 and such topics. http://nctmconference.blogspot.com/2009/04/blogs-tweets-and-web-20.html http://www.slideshare.net/mcleme4419/eclips-nctm-boston-secondary etc. >> 3.d OBJECTS FIRST? >> ==================== .... >> ?What examples do teachers wish to contribute? ?What would be a good >> introductory example of multiple inheritance I wonder? ?I recall David >> MacQuigg sharing some examples where __mro__ (method resolution order) made >> an appearance. > > MRO was an advanced topic in an advanced chapter on OOP, not anything I > would include in an introductory course. ?In fact, I wouldn't even make OOP > a special topic. ?It's just the most natural way to solve a lot of problems. In my view, the promise of OO, starting with Smalltalk, was to mirror a way we already think. The word "object" does not belong to computer science originally, but to ordinary language. Dot notation is supposed to be expressive because we're *not* trying to inculcate some inner circle knowledge of computer internals, memory management, garbage collection. We're just leveraging what's already a feature of ordinary thought patterns. Lesson plan: === Student A comes to the front of the room, writes a few commands on the white board she is willing to obey.... >>> carla.walk(10) >>> carla.say("Hello") >>> carla.dance_move(1) Student B holds a pointer, and in response to requests (raise hands, polling), points to a requested action.? Student A carries out the requested behavior. Kids who've played Sims already know the drill.? We're talking about puppets.? There's no computer anywhere in this picture, just dot notation and a way of triggering behaviors. Followup: Get volunteers A, B, C in front of the room and have a wadded up piece of paper as an argument.? Call that a "message object" and have commands for passing it: >>> carla.has_message True >>> carla.pass_message(jim) >>> carla.has_message False >>> jim.has_message True etc. === BIOLOGY FIRST ================ > ?Students should be *using* objects (lists, etc.) from day 1. ?Then, if > there is time later in the course, I would show how to *design* objects. > ?Even then, you really don't have to say much about inheritance, > polymorphism, abstract classes, MRO, and all the stuff that professional > programmers will get in later courses. > My preferred technique, described over the years as "cave painting" involves putting something rather simple on the screen.? Walk through a Dog and Monkey class, then show how you might move the digestive tract methods, eat and poop (stomach a list) to the Mammal class and inherit. This is just a language game and doesn't have to be that intimidating. Biology is already cram packed with this inheritance metaphor, is where I'd argue CS got it in the first place. If the objective is to teach STEM subjects (the buzz word), then we might as well appeal directly to the biology teachers at this point, suggest they leverage the Python knowledge students are getting down the hall, in their math classes, to reinforce the idea of genetic inheritance and species differentiation. In sum, I think the best way to teach OO is not make it *not* a strictly computer science topic, but just a science topic more generally. Something like full blown UML would be overkill, but if your job is to design an airport, or manage one, it makes perfect sense to ask "what are the objects I need to be dealing with, and what are their attributes and behaviors." Runways, airplanes, control tower, concourse, baggage carousels, parking garage, fuel tanks, snack and gift shops.... we don't have to spend a lot of time on any one institution, and we don't have to write even a single line of code if that's not what we're into. The idea is to have students look at a knowledge domain and start analyzing it in terms of objects, as a prelude to problem solving. Don't need a computer. > The thing you want to avoid is having students think "What is this crap?" > ?That's sometimes necessary in math. ?You can't appreciate the utility of > eigenvectors until you understand them. ?It's totally unnecessary in > programming. ? Let real-world examples lead the way. ?If you can't start > with a simple example where multiple inheritance is needed, don't even > introduce the topic. Yes, let real-world examples lead the way, I fully agree. Back to "cave paintings" -- you get something simple projected, like 20 lines of Python to implement Dog and Monkey as inheriting from Mammal, and then you talk in a more story-like mode about how today's programming languages come pre-equipped with these "foundation classes" or "libraries" that mirror biological ecosystems.? They're huge and offer vast resources, if you know how to tap them. You have all these lineages, tree structures, where objects inherit the capabilities of ancestor objects, sometimes more than one. AROUND THE CAMPFIRE MATH ========================= Why story-like mode hardly happens in math class today is students get all fidgety if they think this will be on the test.? And if it's not going to be on the test, then why listen? This idea of "around the campfire" storytelling, where you're simply explaining how things work, giving as spell-binding an account as possible, maybe showing a movie (like 'Warriors of the Net' re tcp/ip) is just not a feature of most math classes today. That's part of what's broken about our K-12 pipeline.? The dry technicalities have taken over at the cost of not teaching anything much about the real world. The "stories", insofar as we have any, feature in "story problems" and are typically empty of real content by design. This was one of my topics at us.pycon 2009, co-presented with Steve Holden (PSF chairmain). In the vocabulary of mathematics, a "cave painting" is a homomorphism more than an isomorphism (a fancy way of saying it's a structure-preserving analogy that drops a lotta details, but suggests them) > >> http://wikieducator.org/User:Macquigg ?(I recommend reading Dr. Macquigg's >> excellent testimonial here, with a link to his PyWhip). > > PyWhip is the tool that is needed by math and science teachers who want to > use computation in their classes, but feel uncomfortable trying to teach > programming. ?It will include problems in chemistry, physics, calculus, > whatever someone wants to contribute. ?All a teacher has to do is stay one > step ahead of the students. ?Anyone capable of teaching science or math can > do that. This is a grand vision, grander than I'd realized. Crunchy is in the same genre perhaps? A lot depends on what's in the repository.? Some projects separate framework from content, so you could get help with the framework as open source, yet still have content behind a course-related repository that requires student login? PyWhip installations could spread all over the place, but we'd only see the public ones unless we enrolled in the right courses (same model as Python itself -- a lot of it we just don't hear about, because it's too busy making a profitable contribution to some secret government project or some Hollywood movie). > > Unfortunately, our grand plans have been stalled for lack of a volunteer web > programmer who can finish the hardest part of the job - the last 10%. ?We > are considering applying for a grant, so we can hire a professional. ?I wish > I had more time. ?Google App Engine, Django, Web2py... it all looks very > interesting. You've considered making it an open source project?? Or is it already? > >> So yes, the CS professors are right. ?A full blown intro to classes is too >> much to start off with. > > Actually, CS professors, as a group, are more likely to want "full blown" > tailored to the needs of future programmers. ?Us industry types are more > likely to say "Screw this. ?I can write all the programs I need in BASIC and > C." ?That was my attitude from when I first learned about OOP (1992) until > discovering Python (2002). ?This was not for lack of trying. ?I read a book > on C++, and concluded that a better name would have been C--. MORE AUTOBIO ============== Yeah.? My trajectory was as an xBase programmer, writing code for a multi-warehouse food bank, keeping various membership-based nonprofits happy (my specialty was nonprofits and local government). Then Microsoft bought FoxPro to compete with Borland, which bought dBase.? MSFT migrated xBase to Windows, then converted it to an object-oriented language, quite a bit better than Visual Basic IMO.? I ended up in the cardiac operating room about then, coding for heart surgeons. Some "object oriented" languages give you dot notation and ways to use objects, but precious little syntax for rolling your own. xBase, in the form of Visual FoxPro, had inheritance and all the rest of it. When I got to Python by way of Java, I was already an experienced OO guy in a practical sense, though Java / Python helped catch me up on the theory (I read a lot of Bruce Eckel's stuff). > I would use built-in objects first, then user-defined. ?Students should be > very comfortable with dot notation before we even suggest that you can do > more than just use the built in objects in Python. ?To introduce dot > notation, I would just show examples. ?It's kind of like learning to have a > simple conversation in Spanish ("Hola, Isabel. ?Como esta!!) before studying > the grammar, or even learning the vocabulary. TEACHER-DEVELOPED CURRICULA =============================== Yes, back to my demo in front of the room. Hard to think of a much better intro to dot notation that simply using a turtle. In the original Logo, you didn't have a receiver i.e. FORWARD 10 was about "the turtle" and there was only one.? In fact, the very first turtle was an actual robot, more like Lego Mindstorms CRX brick, or whatever they're calling it today. Today though, our turtles are explicit, easy to have more than one. OO includes the concepts of birth and death i.e. an object has a life span.? Temporality is important. In the brainstorming I'm doing, we actually attempt to avoid dictating the best pedagogy. Our attitude is teachers know their own students best, and plus won't want to teach what they don't comprehend.? So the teacher trainers run through all these techniques, including Objects First, but then they don't say "you must do this".? It's more like "here's a practice, a style, which some are using, up to you if you wanna."? Teachers actually appreciate getting to make a final judgment for themselves. Maria Droujkova and Anna Roys have helped me become more attuned to the emerging subcultures of collaboration among teachers.? Once you get cyberspace into the picture, it changes not only course content, but how teachers want to develop that content. They chafe and complain if you insist they use just these or those resources. Innovating new content becomes part of their responsibility, in collaboration with peers, including internationally.? Like I'm working with this guy in Indonesia... > > See the section "Elegant Python" in > http://pywhip.appspot.com/static/help/Using_Python.htm. ?A student's first > encounter with dot notation will be the line: > > ? workset.append(n) ? ?# append n to the workset > > Other than that comment, and a prior statement: ?"... see if you can > understand how this function works. ?Practice using the dir() and help() > functions on list objects and their methods.", there is no explanation of > this grammar. ?It's just a convenient way to say something ?Later, in > http://pywhip.appspot.com/static/help/Strings.txt we talk a little more > about the grammar, and the equivalence of two different notations: > > ? ?>>> len('abcde') ? ? # same as 'abcde'.__len__() > > Putting too much emphasis on a topic can actually make it harder to > understand. ?I remember struggling with lambda functions for quite a while, > even wasting time in a discussion of lambda calculus, then realizing it was > nothing but a trivial bit of syntax, and I really wasn't missing something > important. Yes, good point. We want OO to be intuitive, non-intimidating. Starting with some "unplugged" approach (per New Zealand), doing OO and dot notation externally to any computer language, might be the way to go in some lesson plans (per above examples, many others we could brainstorm). Exercise:? script out your day so far, since getting up, in terms of dot notation: Example: >>> alarm_clock.ring() >>> carla.awake True >>> carla.needs_coffee True >>> coffee_maker.add("grounds") >>> coffee_maker.add("water") >>> coffee_maker.start() >>> coffee_maker.done False >>> carla.brush_teeth() >>> carla.get_dressed() >>> coffee_maker.done True >>> carla.drink("coffee") .... OK to be loose with the syntax, just getting ideas across.? Looks like Python but there's no computer turned on. > > Gary has a good point that we may be still putting too much emphasis on > "objects first". ?It's got me thinking whether I need to rewrite that > section in Using_Python where I show that 2 is an object. ?The fundamental > point of this section is Python's unique relationship between variables and > objects. ?The rest is anecdotal. ?Anecdotal information can distract from > the main point. > My attitude in presenting an "objects first" option (note *option*) would be to emphasize how we already know how to think in terms of objects, including the inheritance part, and we don't want any silly computer language to get in our way, obscuring what we already know. Computer languages should be expressive in helping us think more like we do already.? They're here to serve us, not the other way around. Back to storytelling mode:? no problemo talking about these "different paradigms" and how computer languages have evolved.? If students think they're allowed to just listen to stories, like on Discovery Channel, they'll relax and do so. But the climate today (in many schools) is too high anxiety because either (a) what the teacher is saying is going to be on the next test, or (b) there's no point listening. That's a killer.? Subcultures that box themselves in this way are not likely to have much of a half life. Without shared lore, shared stories, there's no glue and no culture. When I start teaching Python to a new group, I start talking about PEPs, about how the language evolves, about the subculture.? I want them to have this notion of geeks around the world all collaborating, working together. Like I go to that Wiki page Carl has been working on and show how we're starting to see code that's very "not Latin-1" in appearance. There's a cosmopolitan flavor, right from the start. If they haven't seen one Chinese character by the end of the first week, I've done something wrong (by my own lights -- YMMV). > PyWhip will have the ability for a teacher customize everything - problem > sets, help files, whatever is needed for a particular group of students. > ?When a student logs in, he will see exactly what his teacher intends him to > see. ?The help files referenced above may be too brief for high school > students. ?My target audience is technical professionals who already know > how to write a program, perhaps in BASIC. ?I encourage others to submit > alternatives better suited to whatever background your students may have. > > -- Dave > Noted. I hope we don't get too hung up on Objects First versus Objects Later, as I think the situation on the ground is always going to be somewhat diverse. For example, it's easy for me to imagine MFTDA getting used as a 2nd year course on our Oregon DM track (discrete math track), once we've successfully piloted a course that has no AP objectives, isn't considered early college.? Prep for the new math course might use MFTDA in teacher trainings though, i.e. as the math teacher, you want that on your shelf (along with Zelle's, a few others). We have many high caliber schools that could go the MFTDA right away, too (it's not either/or).? Just saying:? if DM is about bridging the digital divide, then it has to meet student needs at various levels. That's the challenge in a nutshell.? We want to rescue something broken. Math content in Oregon is 10-20 years behind the times and we need to administer "future shock therapy" in ways that don't simply exacerbate the currently untenable situation. That's a focus around here, even as we're talking Python for a language.? We're catering to "math refugees" who are seriously considering dropping out of high school completely. My work with the Hillsboro Police Department, which had Linux labs for immigrant children, was along these lines. According to one scenario, students taking the next course in sequence and using the Litvins' text, will already have at least of semester of Python behind them, maybe more. This will change the character of the presentation, but not that drastically, as we're already used to a lot of repetition in mathematics i.e. each successive year goes back over some of the fundamentals. So we might do more with operator overloading then? MFTDA is purposely light on that topic, whereas I'm into __ribs__ galore (a veritable snake BBQ seems like). I like to rush into operator overloading because I want students to start generalizing about addition and multiplication, and what better way than to have these different objects doing those things in their own special ways -- but with commonalities. You get a more "abstract algebra" sensibility that way.? We do more with group, ring and field, simply because Python makes everything so concrete, so hands-on. "Group theory for children" was a movement in the 1960s I think it was.? Perhaps it's time to resurrect that?? We shall see. One of Maria's from last year: http://www.mail-archive.com/edu-sig at python.org/msg05186.html Kirby From macquigg at ece.arizona.edu Fri Jan 29 19:49:47 2010 From: macquigg at ece.arizona.edu (David MacQuigg) Date: Fri, 29 Jan 2010 11:49:47 -0700 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: References: <4B5EC9C6.5040301@ece.arizona.edu> Message-ID: <4B632DCB.3010900@ece.arizona.edu> kirby urner wrote: >> Unfortunately, our grand plans have been stalled for lack of a volunteer web >> programmer who can finish the hardest part of the job - the last 10%. We >> are considering applying for a grant, so we can hire a professional. I wish >> I had more time. Google App Engine, Django, Web2py... it all looks very >> interesting. >> > > You've considered making it an open source project? Or is it already? > It is open source, and the problem we are facing is precisely because it is open source (i.e. unpaid). With rare exceptions, open-source project involving more than one developer don't get finished. The fun parts get done, but not the tedious parts. We've tried to give our volunteer web programmers a "starring role" on our about page, but actually it's the teachers who will get most of the credit and who will make the key decisions on content. It's hard to motivate a volunteer web programmer in this situation. Hence, we are considering a departure from the open-source ideal, and just paying someone to get the job done. >> PyWhip will have the ability for a teacher customize everything - problem >> sets, help files, whatever is needed for a particular group of students. >> When a student logs in, he will see exactly what his teacher intends him to >> see. The help files referenced above may be too brief for high school >> students. My target audience is technical professionals who already know >> how to write a program, perhaps in BASIC. I encourage others to submit >> alternatives better suited to whatever background your students may have. >> > > Noted. > > I hope we don't get too hung up on Objects First versus Objects Later, > as I think the situation on the ground is always going to be somewhat > diverse. > From the examples you have given, I think there is not much difference between us. Its just that our terminology is confusing. I may have contributed to that confusion in our earlier discussion of OOP. I felt I had to jump in on this thread when it looked like you thought I was suggesting MRO would be a good topic in an introductory course. When I hear Objects First, I think of an over-reaction which occurred because we had to break some old habits and force students to do something that was initially difficult. Now that we have languages that allow an easy and natural approach to objects, we need no special emphasis on Objects First. We don't need Objects Only languages to force students to use objects. When I hear Object Oriented Programming, I think of something much more difficult than the examples you have shown, something that might even get into the intricacies of MRO, something that is normally taught to CS majors in a full semester in the third year of college. If it is just *using* objects in a natural way, I think everyone agrees that is a fine way to introduce programming. If it is a little more than that (as I think you intend) that is OK also, even if it not what I would do. When students log on to pywhip.org/~urner, they will see exactly what you want them to see. -- Dave From kirby.urner at gmail.com Sat Jan 30 00:30:44 2010 From: kirby.urner at gmail.com (kirby urner) Date: Fri, 29 Jan 2010 15:30:44 -0800 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: <4B632DCB.3010900@ece.arizona.edu> References: <4B5EC9C6.5040301@ece.arizona.edu> <4B632DCB.3010900@ece.arizona.edu> Message-ID: On Fri, Jan 29, 2010 at 10:49 AM, David MacQuigg wrote: << >> > > When I hear Object Oriented Programming, I think of something much more > difficult than the examples you have shown, something that might even get > into the intricacies of MRO, something that is normally taught to CS majors > in a full semester in the third year of college. ?If it is just *using* > objects in a natural way, I think everyone agrees that is a fine way to > introduce programming. ?If it is a little more than that (as I think you > intend) that is OK also, even if it not what I would do. ?When students log > on to pywhip.org/~urner, they will see exactly what you want them to see. > > -- Dave > > Good summary and yes, our positions are not so far apart. The little bit more that I add takes advantage of this thinking in terms of objects, not just a computer thing, and turns that into "math objects" such as polynomials, rationals, polyhedra, integers modulo n, matrices -- things we might model as types and therefore classes (in Python's namespace anyway). There's a unifying heuristic not out of line with inherited mathematics i.e. we already believe in types e.g. N, Z, Q, R, C (natural, integer, rational, real, complex..) and so on, so pretty seamless. So that means we're actually getting to user defined classes and taking advantage of operator overloading in the guise of wanting a stronger understanding of math concepts, but not because we're all planning to become professional computer programmers. So we stop short of MRO, maybe never need multiple inheritance, might not use properties, decorators -- I'm not the one to decide for each teacher, just saying I find it easy to envision a productive math course (such as we've sampled many times on edu-sig) that doesn't go into all that, or leaves it more up to individual students how much they want to dabble on the side, in which case we have resources available. So yeah, those kinds of more advanced computer science courses are available, sure. David MacQuigg might be one of your teachers? I'm more interested in spinning an icosahedron object, a subclass of Polyhedron, and calling it a day. I'm more like a high school geometry teacher, not some geek with a talk on the latest design pattern. I'm mostly doing stuff the ancient greeks would have followed, had they a One Laptop Per Child program. Kirby From mpaul213 at gmail.com Sat Jan 30 03:40:23 2010 From: mpaul213 at gmail.com (michel paul) Date: Fri, 29 Jan 2010 18:40:23 -0800 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: References: <4B5EC9C6.5040301@ece.arizona.edu> <4B632DCB.3010900@ece.arizona.edu> Message-ID: <40ea4eb01001291840w7c57a492o2fe17c5416ab6a31@mail.gmail.com> On Fri, Jan 29, 2010 at 3:30 PM, kirby urner wrote: > > >There's a unifying heuristic not out of line with inherited > >mathematics i.e. we already believe in types e.g. N, Z, Q, R, C > >(natural, integer, rational, real, complex..) and so on, so pretty > >seamless. > Actually, things are not so seamless in the secondary curriculum! : ) Just this week I had a fascinating experience exposing a seam in the current secondary understanding of naturals. There was a question on our Analysis final asking kids to find {whole numbers} [image: \bigcap] {natural numbers}. That question really bothered me for two reasons: at the beginning of the year I made it a big point to emphasize to the kids that the typical schoolish distinction of the naturals as {1, 2, 3, ...} and the 'wholes' as {0, 1, 2, 3, ...} is fuzzy. Back in the 19th century set theorists, logicians, and number theorists were advocating a definition of the naturals as {0, 1, 2, 3, ...}. Today we would include computer scientists as advocating that definition. I asked them, "How many of you have been marked wrong on a math test because you said zero was a natural number?" So, wow, the universe operates in amazing ways for that very question to then show up on the final! And that was the second reason I was bothered. I should have been included in the final proofreading! The version I saw did not have this question! Although, I was not really that bothered. I was actually delighted, because it provided very good reason for having a pointed discussion. My colleagues were clearly baffled to find out that something that has always been accepted as so fundamental in high school math has actually had two interpretations since the 19th century! So when we start second semester we're going to have another class discussion on this! I'm going to ask them if they remember my emphasizing this, and if they recalled this when they took the final. I think this very issue is important in emphasizing what we would mean by a 'computational' math curriculum. It's not just about the machine. It's not just about 'using technology' to help us solve math problems. It's about a new way of thinking. And in this new way of thinking there are a whole lot of good reasons for teaching kids to think of zero as a natural number. There's really no need served by including a 'seam' between the 'wholes' and the 'naturals'. I think emphasizing that kind of distinction as early as our curriculum does causes all kinds of fundamental confusion. Recently I've found Sage invaluable for the purpose of getting computational thinking into the math curriculum. I've spent the last year figuring out how to harness Sage in class, and it is paying off. The difficulty with a pure Python approach has been that it seems so foreign to everyone from kids through administrators, it doesn't look like anything that gets tested on state standards, and it seems like 'hard work' when we already have these nifty hand-helds that graph any function you want. However, the power of Sage blows any graphing calculator, even the new Inspires, out of the water. Simultaneously, you can program in pure bare-bones Python within Sage. So I have found it invaluable to capitalize on the power of Sage to serve as a way to introduce into math classes the value of the ability to think in pure Python. Regarding the whole 'hand-held' selling point, these days this is a meaningless point. You can access your Sage notebook worksheets using a smart phone! Instead of 'hand-held' I've been advocating 'mind-held'. A language is mind-held. Pretty cool. I've been using Sage as my blackboard in my Analysis classes, and I've even been able to start showing my FST kids (Functions, Statistics, Trig) pure bare-bones Python. They're supposedly the mathematically weaker, so I have more wiggle room in the curriculum. I asked them at mid-semester if they would be interested in learning pure bare-bones Python, and they said "Yes!" I was delighted. I did a lot of list-comprehensions with them. Throw out a function and a domain. Exercise: define a list of ordered pairs using list comprehension. They really could do it. Especially one kid who has always hated math. He said this really made sense. I also had them do some turtle stuff and some Visual Python stuff. Just simple things. Like one day using Visual in the lab we made 3-D parabolas out of spheres hanging in space. Way different than your typical graph. The kids really liked being able to zoom in and around the sphere, and I was thrilled that they were getting list comprehensions. A lot of them are still operating at the level of 'tell me what to do', but there are also others that are exploring. One of the really valuable features in Sage notebook is @interact. With it you can create interactive graphics for any function you want. Specify a function parameter, say x = (-10..10), and presto! When you evaluate the cell, that parameter gets represented as a slider from -10 to 10! Very cool, and very easy. I finally feel like I'm getting some traction on implementing a computational mathematics course. I came really, really close last year, but lack of action (due to a conflict of interests) smashed it. I was devastated, but I warned my department chair - "I'm not going to shut up about this!" it's been really, really hard, but I finally feel that useful discussion is happening. The counselors have requested a course description that they can hand out to students and their parents. I'm delighted that they're doing this. I'll append it below. Sort of an updated Manifesto! : ) Oh, but first - if this course does happen I'll be using the Litvins' Math for the Digital Age. I love that book. I told my prinicipal, "You usually don't say of a text that 'It's beautiful', but this one is. This is a beautiful text." *M A C H Math Analysis Computational Honors* *What does ?Computational? mean?* "It is said that a concept is demonstrated to have been learned the best when one explains that concept to others. Programming is precisely that - an expressive language, used to unambiguously describe all the steps involved in problem solving of a certain type." - Tony Targonski *Computational Thinking* is a new way of thinking that will become just as important to a well-educated person in the 21st century as reading and writing is today. It has resulted in new inter-disciplinary majors such as Computational Linguistics, Computational Biology, Computational Physics, and Computational Mathematics, among others. Generally speaking, computational thinking is the art of reducing complexity to a set of primitive operations. This way of thinking blends perfectly with the kind of thinking that Math Analysis is supposed to be about. *Students taking this course should not worry if they have never* *programmed before.* This course will introduce a complete beginner to contemporary programming in a way that will enable them to efficiently articulate mathematical concepts. *The point of this course is* *not learning to program, but programming to learn.* We will be using a very easy to learn language called *Python*. *What is *Python?** Python is a general purpose programming language that has developed a large following over the last ten years or so. It is one of the top languages used at Google and is also used at NASA, JPL, and YouTube and is continuing to gain significant attention. It is an extremely easy and fun language to learn. You can immediately begin to use it just like a calculator. It is free to everyone and runs on all platforms. It is also an excellent language for expressing mathematical ideas, and that is why many mathematicians and scientists gravitate towards it. It is just as easy to learn as high school Algebra, and learning it will help you better understand Algebra. After you have learned some Python you will be ready to use Sage. *What is *SAGE?** SAGE is a set of mathematical libraries built on top of Python creating a free and open source state of the art CAS, Computer Algebra System, used by professional mathematicians, university math departments, and even some high school math departments. SAGE offers Mathematica-like abilities, such as detailed 3D color graphing. Cutting edge research is being done with it, but it is also quite usable by high school students. Anyone who knows a little Python can immediately begin to use SAGE. You can actually use many of the features in SAGE without knowing any Python, but you will be able to use it much more effectively if you also know how to think in terms of simple Python programs. What you will learn in this course is how to *computationally analyze* some fundamental ideas of mathematics. Your ability to computationally analyze will provide you a good foundation for many important kinds of study and career. A student working through this class will be well prepared both for further study of computer science and mathematics. "Computer science is the new mathematics." -- Dr. Christos Papadimitriou -------------- next part -------------- An HTML attachment was scrubbed... URL: From kirby.urner at gmail.com Sat Jan 30 04:53:45 2010 From: kirby.urner at gmail.com (kirby urner) Date: Fri, 29 Jan 2010 19:53:45 -0800 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: <40ea4eb01001291840w7c57a492o2fe17c5416ab6a31@mail.gmail.com> References: <4B5EC9C6.5040301@ece.arizona.edu> <4B632DCB.3010900@ece.arizona.edu> <40ea4eb01001291840w7c57a492o2fe17c5416ab6a31@mail.gmail.com> Message-ID: On Fri, Jan 29, 2010 at 6:40 PM, michel paul wrote: << SNIP >> A truly excellent write-up Michel. I'm glad you're reminding us about Sage. Your use of "Computational Thinking" (CT) mirrors Maria's suggestion for what a course of this nature might be called. "Computational Analysis" (CA) sounds like another option? FYI, we've continued debating nomenclature (what to call these classes) on math-teach: http://mathforum.org/kb/thread.jspa?threadID=2032769&tstart=0 For those of you wishing to join some on-line digital math discussions this weekend, Maria has this information: http://mathforum.org/kb/message.jspa?messageID=6961142&tstart=0 Kirby > > Oh, but first - if this course does happen I'll be using the Litvins' Math > for the Digital Age. I love that book. I told my prinicipal, "You usually > don't say of a text that 'It's beautiful', but this one is. This is a > beautiful text." > > *M A C H Math Analysis Computational Honors* > > *What does ?Computational? mean?* > > "It is said that a concept is demonstrated to have been learned the best > when one explains that concept to others. Programming is precisely that - > an expressive language, used to unambiguously describe all the steps > involved in problem solving of a certain type." > > - Tony Targonski > > *Computational Thinking* is a new way of thinking that will become just as > important to a well-educated person in the 21st century as reading and > writing is today. It has resulted in new inter-disciplinary majors such as > Computational Linguistics, Computational Biology, Computational Physics, and > Computational Mathematics, among others. Generally speaking, computational > thinking is the art of reducing complexity to a set of primitive > operations. This way of thinking blends perfectly with the kind of thinking > that Math Analysis is supposed to be about. > > *Students taking this course should not worry if they have never* *programmed > before.* This course will introduce a complete beginner to contemporary > programming in a way that will enable them to efficiently articulate > mathematical concepts. *The point of this course is* *not learning to > program, but programming to learn.* We will be using a very easy to learn > language called *Python*. > > *What is *Python?** > > Python is a general purpose programming language that has developed a large > following over the last ten years or so. It is one of the top languages used > at Google and is also used at NASA, JPL, and YouTube and is continuing to > gain significant attention. It is an extremely easy and fun language to > learn. You can immediately begin to use it just like a calculator. It is > free to everyone and runs on all platforms. It is also an excellent language > for expressing mathematical ideas, and that is why many mathematicians and > scientists gravitate towards it. It is just as easy to learn as high school > Algebra, and learning it will help you better understand Algebra. After you > have learned some Python you will be ready to use Sage. > > *What is *SAGE?** > > SAGE is a set of mathematical libraries built on top of Python creating a > free and open source state of the art CAS, Computer Algebra System, used by > professional mathematicians, university math departments, and even some high > school math departments. SAGE offers Mathematica-like abilities, such as > detailed 3D color graphing. Cutting edge research is being done with it, but > it is also quite usable by high school students. Anyone who knows a little > Python can immediately begin to use SAGE. You can actually use many of the > features in SAGE without knowing any Python, but you will be able to use it > much more effectively if you also know how to think in terms of simple > Python programs. > > What you will learn in this course is how to *computationally analyze* some > fundamental ideas of mathematics. Your ability to computationally analyze > will provide you a good foundation for many important kinds of study and > career. A student working through this class will be well prepared both for > further study of computer science and mathematics. > > > "Computer science is the new mathematics." > -- Dr. Christos Papadimitriou > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kirby.urner at gmail.com Sat Jan 30 18:23:59 2010 From: kirby.urner at gmail.com (kirby urner) Date: Sat, 30 Jan 2010 09:23:59 -0800 Subject: [Edu-sig] Pascal's Triangle (in 2.6) Message-ID: """ Rows of Pascal's Triangle See: http://en.wikipedia.org/wiki/Pascal%27s_triangle "Calculating an individual row" Consider a row starting as follows: 1, 12... Initialize to [1] and multiply by (row_num/1) to get the next term, row[1]. Then decrement and increment again, getting (11 / 2), (10 / 3), (9 / 4) and so forth, and multiply by the last term so far. Stop when the numerator is 0. 1 * (12/1) = 12 12 * (11 / 2) = 66 66 * (10 / 3) = 220 220 * (9 / 4) = 495 etc. This is another way of computing successive values of C(n, k) without using a factorial function and dividing. Independently discovered by David Koski, implemented in Python by Kirby Urner """ def pascal_row(row_num): numer = row_num denom = 1 # initialize row of Pascal's Triangle row = [1] while numer > 0: row.append((row[-1] * numer/denom)) numer -= 1 # decrement numerator denom += 1 # increment denominator return row def pascal_mod2(row_num = 0): """ row integers mod 2, give a binary string which corresponds to Rule 60 in the Wolfram categorization scheme for cellular automata http://www.research.att.com/~njas/sequences/A001317 """ while True: therow = pascal_row(row_num) binary = "".join(str(i % 2) for i in therow) yield [int(binary,2), binary] row_num += 1 """ traditional generator for successive rows, included for completeness """ def pascal_gen(): row = [1] while True: yield row row = [i + j for i,j in zip(row + [0], [0] + row)] From echerlin at gmail.com Sat Jan 30 20:21:46 2010 From: echerlin at gmail.com (Edward Cherlin) Date: Sat, 30 Jan 2010 14:21:46 -0500 Subject: [Edu-sig] Pascal's Triangle (in 2.6) In-Reply-To: References: Message-ID: Pascal's Triangle mod 2 is also a Sierpinski gasket fractal. This is one of the Python examples in Pippy in the Sugar education software. # Sierpinski triangles import sys size = 3 modulus = 2 lines = modulus**size vector = [1] for i in range(1,lines+1): vector.insert(0,0) vector.append(0) for i in range(0,lines): newvector = vector[:] for j in range(0,len(vector)-1): if (newvector[j] == 0): print " ", else: remainder = newvector[j] % modulus if (remainder == 0): print "O", else: print ".", newvector[j] = vector[j-1] + vector[j+1] print vector = newvector[:] On Sat, Jan 30, 2010 at 12:23, kirby urner wrote: This process below is how I learned Pascal's Triangle from my mother when I was 11. > """ > Rows of Pascal's Triangle > > See: > http://en.wikipedia.org/wiki/Pascal%27s_triangle > "Calculating an individual row" > > Consider a row starting as follows: > 1, 12... > > Initialize to [1] and multiply by (row_num/1) > to get the next term, row[1]. > > Then decrement and increment again, getting > (11 / 2), (10 / 3), (9 / 4) and so forth, and multiply > by the last term so far. ?Stop when the numerator > is 0. > > 1 * (12/1) = 12 > 12 * (11 / 2) = 66 > 66 * (10 / 3) = 220 > 220 * (9 / 4) = 495 > > etc. > > This is another way of computing successive values > of C(n, k) without using a factorial function and > dividing. > > Independently discovered by David Koski, > implemented in Python by Kirby Urner > > """ > > def pascal_row(row_num): > ? ?numer = row_num > ? ?denom = 1 > ? ?# initialize row of Pascal's Triangle > ? ?row = [1] > ? ?while numer > 0: > ? ? ? ?row.append((row[-1] * numer/denom)) > ? ? ? ?numer -= 1 ?# decrement numerator > ? ? ? ?denom += 1 ?# increment denominator > ? ?return row > > def pascal_mod2(row_num = 0): > ? ?""" > ? ?row integers mod 2, give a binary string which > ? ?corresponds to Rule 60 in the Wolfram categorization > ? ?scheme for cellular automata > > ? ?http://www.research.att.com/~njas/sequences/A001317 > ? ?""" > ? ?while True: > ? ? ? ?therow = pascal_row(row_num) > ? ? ? ?binary = "".join(str(i % 2) for i in therow) > ? ? ? ?yield [int(binary,2), binary] > ? ? ? ?row_num += 1 > > """ > traditional generator for successive rows, included > for completeness > """ > > def pascal_gen(): > ? ?row = [1] > ? ?while True: > ? ? ? ?yield row > ? ? ? ?row = [i + j for i,j in zip(row + [0], [0] + row)] > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > -- Edward Mokurai (??/???????????????/????????????? ?) Cherlin Silent Thunder is my name, and Children are my nation. The Cosmos is my dwelling place, the Truth my destination. http://www.earthtreasury.org/ From kirby.urner at gmail.com Sat Jan 30 21:26:47 2010 From: kirby.urner at gmail.com (kirby urner) Date: Sat, 30 Jan 2010 12:26:47 -0800 Subject: [Edu-sig] Pascal's Triangle (in 2.6) In-Reply-To: References: Message-ID: On Sat, Jan 30, 2010 at 11:21 AM, Edward Cherlin wrote: > Pascal's Triangle mod 2 is also a Sierpinski gasket fractal. This is > one of the Python examples in Pippy in the Sugar education software. > Glad to see OLPC is getting the right stuff here. Your technique of backing everything with a rectangular array of 'O's, to be replaced by " ", "." or left alone, is a great way of formatting. You use "print comma" (print ,) to keep going on the line, no newline character before we're done in that loop. The same matting technique could be used for any rule-based row-by-row generating scheme, ala the Wolfram numbering using a bit pattern to encode the next permutation. I've done some work in this area in collaboration with other contributors to this archive (John Zelle, Gregor Lingl). 4dsolutions.net/ocn/python/nks.py http://4dsolutions.net/ocn/python/canvas3.py (note our back ending into PIL, Zelle's graphics.py or Gregor's wrapper for TkCanvas). Your use of a matte also mirrors my recent suggestion regarding building a "color sniffing" turtle that stores a shared "canvas" object in some array, perhaps of just integers, or RGB 3-tuples, if that's the only data we care about (in addition to geographic position). Turtles all read and write to the same matte through a handle (easy in Python as the default is to not copy). I did run it with gusto. Might've been a dot missing lower right? >>> . . . . O . . . . . . O O O . . . O O . . . O . O . O . . . . . . . . . >>> Great work. Kirby PS: Pascal's is coming up in my research because I'm trying to do some technical writing about one David Koski's studies. He builds hexahedra (zonohedral rhomb-faced) from great circle networks, packs them out to the first spherical polyhedron, is finding some pattern in Pascal's that predicts how many. Example, when you use 10 mid-face axials of the icosahedron as a set of spokes from the origin, illuminate any three not at 180 degrees, you get successive corners of hexahedra, I think he said only 10 possible? You get a rhombic dodecahedron inside the enneacontahedron that way (as one of the zonohedra). You get cubes inside the great rhombicosadodecahedron. Hope I got that right, will double check with DAve. The resulting spherical polyhedra may not have all rhombic faces however as "zero volume" flattened hexahedra, predicted by Pascal's, come together in the form of other polygons. Here are a couple examples: http://www.flickr.com/photos/17157315 at N00/4279038891/in/set-72157622797118549/ (132 sides) http://www.flickr.com/photos/17157315 at N00/4311083958/in/set-72157622797118549/ (600 sides) http://mybizmo.blogspot.com/2008/11/enneacontahedron.html (older study) > # Sierpinski triangles > import sys > size = 3 > modulus = 2 > > lines = modulus**size > > vector = [1] > for i in range(1,lines+1): > ?vector.insert(0,0) > ?vector.append(0) > > for i in range(0,lines): > ?newvector = vector[:] > ?for j in range(0,len(vector)-1): > ? ?if (newvector[j] == 0): > ? ? ?print " ", > ? ?else: > ? ? ?remainder = newvector[j] % modulus > ? ? ?if (remainder == 0): > ? ? ? ?print "O", > ? ? ?else: > ? ? ? ?print ".", > ? ?newvector[j] = vector[j-1] + vector[j+1] > ?print > ?vector = newvector[:] > > On Sat, Jan 30, 2010 at 12:23, kirby urner wrote: > > This process below is how I learned Pascal's Triangle from my mother > when I was 11. > << SNIP >> > -- > Edward Mokurai (??/???????????????/????????????? ?) Cherlin > Silent Thunder is my name, and Children are my nation. > The Cosmos is my dwelling place, the Truth my destination. > http://www.earthtreasury.org/ > From macquigg at ece.arizona.edu Sun Jan 31 04:32:53 2010 From: macquigg at ece.arizona.edu (David MacQuigg) Date: Sat, 30 Jan 2010 20:32:53 -0700 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: <40ea4eb01001291840w7c57a492o2fe17c5416ab6a31@mail.gmail.com> References: <4B5EC9C6.5040301@ece.arizona.edu> <4B632DCB.3010900@ece.arizona.edu> <40ea4eb01001291840w7c57a492o2fe17c5416ab6a31@mail.gmail.com> Message-ID: <4B64F9E5.4080604@ece.arizona.edu> michel paul wrote: > Recently I've found Sage invaluable for the > purpose of getting computational thinking into the math curriculum. > I've spent the last year figuring out how to harness Sage in class, > and it is paying off. The difficulty with a pure Python approach has > been that it seems so foreign to everyone from kids through > administrators, it doesn't look like anything that gets tested on > state standards, and it seems like 'hard work' when we already have > these nifty hand-helds that graph any function you want. However, the > power of Sage blows any graphing calculator, even the new Inspires, > out of the water. Simultaneously, you can program in pure bare-bones > Python within Sage. So I have found it invaluable to capitalize on > the power of Sage to serve as a way to introduce into math classes the > value of the ability to think in pure Python. Nice graphics is definitely a key requirement for any tool I would consider in an introductory course. I'm not familiar with Sage, but I wonder if adding a few packages to "pure Python" would do the same. I'm looking now at NumPy and MatPlotLib in a proposal for "Introduction to Scientific Computing", currently taught using C with some addons for plotting. The class is a joint effort between our Astronomy and Physics departments. The advantage of Python/Numpy/MatPlotLib is that what students learn of Python will be useful beyond just math and science. I think of Sage as just a replacement for MatLab, not something I would use in programming my mail server. Anyone with experience using these tools? -- Dave From mpaul213 at gmail.com Sun Jan 31 19:05:16 2010 From: mpaul213 at gmail.com (michel paul) Date: Sun, 31 Jan 2010 10:05:16 -0800 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: <4B64F9E5.4080604@ece.arizona.edu> References: <4B5EC9C6.5040301@ece.arizona.edu> <4B632DCB.3010900@ece.arizona.edu> <40ea4eb01001291840w7c57a492o2fe17c5416ab6a31@mail.gmail.com> <4B64F9E5.4080604@ece.arizona.edu> Message-ID: <40ea4eb01001311005y3c66da77ybf6c0949250dd389@mail.gmail.com> On Sat, Jan 30, 2010 at 7:32 PM, David MacQuigg wrote: > I'm not familiar with Sage, but I wonder if adding a few packages to "pure > Python" would do the same. Well, it would have to be WAY more than a 'few' packages! : ) Sage is immense. It even has the statistical language R built in. It also has NumPy and MatPlotLib already included. Name some high quality open source math library, and it's probably already in Sage! > I think of Sage as just a replacement for MatLab, not something I would use > in programming my mail server. > Yeah, Sage would definitely be a more than adequate replacement for MatLab. The goal of Sage is to be a viable open source alternative to Mathematica. And I think it's very close to achieving that goal. I know there are still things at the moment that Mathematica can do better than Sage, but there's an army of grad students (and others) all over the world constantly updating it. The really cool thing about Sage is that you can use it in a variety of ways. If you install it locally, you can use it in a REPL style, just like IDLE. You simply have 'Sage:' instead of '>>>' as a prompt. But you can also run it in Notebook form through your browser. It's really well thought out. Then, if you don't want to have to install such an immense package on your individual machine, you can use it in Notebook form purely online. A Notebook account is free, and all your work is stored in the cloud. Now that I've become familiar enough with it, I absolutely love it. For purposes of integrating Python and mathematics, Sage is pure genius. Would you program a mail server with it? Probably not, but that's why Python is general purpose. Again, one of the things I truly love about Sage is that at its core, it is pure Python. I was delighted with something one of my FST students said. I had been using Sage as my blackboard in class, and then I started showing them pure Python. My student said that he liked having to think things through in pure Python better than using Sage directly, because Sage seemed so overwhelming. When I had them restricted to just the Python shell, he liked having to reason with just a small set of constructs. I was glad to hear him say that, as it showed he was really getting the message about what I was saying 'computational thinking' was all about. - Michel -- "Computer science is the new mathematics." -- Dr. Christos Papadimitriou -------------- next part -------------- An HTML attachment was scrubbed... URL: From wdjoyner at gmail.com Sun Jan 31 19:29:53 2010 From: wdjoyner at gmail.com (David Joyner) Date: Sun, 31 Jan 2010 13:29:53 -0500 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: <4B64F9E5.4080604@ece.arizona.edu> References: <4B5EC9C6.5040301@ece.arizona.edu> <4B632DCB.3010900@ece.arizona.edu> <40ea4eb01001291840w7c57a492o2fe17c5416ab6a31@mail.gmail.com> <4B64F9E5.4080604@ece.arizona.edu> Message-ID: <8cf963451001311029y10c89ec0la99bb0dcf5d61189@mail.gmail.com> On Sat, Jan 30, 2010 at 10:32 PM, David MacQuigg wrote: > michel paul wrote: >> >> Recently I've found Sage invaluable for the purpose >> of getting computational thinking into the math curriculum. ?I've spent the >> last year figuring out how to harness Sage in class, and it is paying off. >> ?The difficulty with a pure Python approach has been that it seems so >> foreign to everyone from kids through administrators, it doesn't look like >> anything that gets tested on state standards, and it seems like 'hard work' >> when we already have these nifty hand-helds that graph any function you >> want. ?However, the power of Sage blows any graphing calculator, even the >> new Inspires, out of the water. ?Simultaneously, you can program in pure >> bare-bones Python within Sage. ?So I have found it invaluable to capitalize >> on the power of Sage to serve as a way to introduce into math classes the >> value of the ability to think in pure Python. > > Nice graphics is definitely a key requirement for any tool I would consider > in an introductory course. > > I'm not familiar with Sage, but I wonder if adding a few packages to "pure > Python" would do the same. ?I'm looking now at NumPy and MatPlotLib in a > proposal for "Introduction to Scientific Computing", currently taught using > C with some addons for plotting. ?The class is a joint effort between our > Astronomy and Physics departments. > > The advantage of Python/Numpy/MatPlotLib is that what students learn of > Python will be useful beyond just math and science. ?I think of Sage as just > a replacement for MatLab, not something I would use in programming my mail > server. > > Anyone with experience using these tools? Yes, I have used Sage a lot and agree with what Michel Paul has said about it. > > -- Dave > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > From kirby.urner at gmail.com Sun Jan 31 23:28:29 2010 From: kirby.urner at gmail.com (kirby urner) Date: Sun, 31 Jan 2010 14:28:29 -0800 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: <40ea4eb01001311005y3c66da77ybf6c0949250dd389@mail.gmail.com> References: <4B5EC9C6.5040301@ece.arizona.edu> <4B632DCB.3010900@ece.arizona.edu> <40ea4eb01001291840w7c57a492o2fe17c5416ab6a31@mail.gmail.com> <4B64F9E5.4080604@ece.arizona.edu> <40ea4eb01001311005y3c66da77ybf6c0949250dd389@mail.gmail.com> Message-ID: On Sun, Jan 31, 2010 at 10:05 AM, michel paul wrote: << SNIP >> > Again, one of the things I truly love about Sage is that at its core, it is > pure Python.? I was delighted with something one of my FST students said.? I > had been using Sage as my blackboard in class, and then I started showing > them pure Python.? My student said that he liked having to think things > through in pure Python better than using Sage directly, because Sage seemed > so overwhelming.? When I had them restricted to just the Python shell, he > liked having to reason with just a small set of constructs.? I was glad to > hear him say that, as it showed he was really getting the message about what > I was saying 'computational thinking' was all about. > > - Michel Thank you for sharing more about Sage, the above remark especially. Yes, like Mathematica, Sage may seem overwhelming given how the math concepts come flooding in on top of Python. If Python is unfamiliar to begin with, then the learning curve may seem vertical. If you read through parts of the tutorial below (as I've been doing), you'll see that the introductory chapters read a lot like a standard Python tutorial. This book is written (per introduction) for Sage users who have been exposed to a computer language before, just maybe not Python.... http://sage.math.washington.edu/home/tkosan/newbies_book/sage_for_newbies_v1.23.pdf Here's a direct quote from the above work: """ In a computer, a value is a pattern of bits in one or more memory locations that mean something when interpreted using a given context. In SAGE, patterns of bits in memory that have meaning are called objects. SAGE itself is built with objects and the data that SAGE programs process are also represented as objects. Objects are explained in more depth in Chapter 4. In the above expressions, 2, 3, 5, 6, 21, and 18 are objects that are interpreted using a context called the sage.rings.integer.Integer context. Contexts that can be associated with objects are called types and an object that is of type sage.rings.integer.Integer is used to represent integers. There is a command in SAGE called type() which will return the type of any object that is passed to it. Lets have the type() command tell us what the type of the objects 3 and 21 are by executing the following code: (Note: from this point forward, the source code that is to be entered into a cell, and any results that need to be displayed, will be given without using a graphic worksheet screen capture.) type(3) """ TECHNICAL NOTE APPENDED re "context". [1] What I'm getting from this is we have a stronger case than ever for wanting to just cover some basic Python ahead of time, in a math-learning context. A student already practiced with a text such as Mathematics for the Digital Age will have a much easier time picking up those parts of Sage most relevant to whatever math domain currently under discussion. Might well be calculus (many examples of taking integrals and derivatives in the docs, also solving differential equations). Per earlier remarks in this thread, it seems an uphill battle to have school administrators accept coding in Python as having anything to do with a math course. It doesn't look like textbook math. The notation is not traditional. Where are all those greek letters? Science and engineering maybe, but surely not math! With Sage, I think we get more of a foot in the door, for those lucky schools with faculty wishing to innovate in this direction. Point an administrator to the above tutorial and explain how how mathematics has been greatly affected by computer technology and confining student experience to templates of the recent past is actually quite a risky strategy, perhaps even unconscionable given the software is free? That argument depends on the district -- in some corners, hardware is not really a bottleneck either, as companies and government agencies are keen to cast off fairly decent equipment for a tax write-off... the only real shortage in this picture is trained personnel, which is where teacher training comes in. On the bright side, many high school math teachers are seeking ways to make their subject area more illuminating and relevant. Students would exit in droves were it not for these being required subjects (at least for some years). The political rhetoric and climate is conducive to taking bold action, as there's widespread agreement that the K-12 "pipeline" (some object to that term) is broken, dysfunctional, losing too many students. Adding an industrial grade professional computer language to the mix (not necessarily Python, though we know that's a good one) would come across as reassuring to students. They feel that same pressure to keep up, know their peers in some other states ("states" broadly interpreted, could mean nation, district or zip code area) are already getting these advantages. Just knowing one's school has the *option* of a digital math class (or whatever we call it) would seem like proof that we're really getting somewhere, that all this talk of upgrading is not mere lip service and hand waving (easy to get cynical when all these press reports, e.g. of Intel offering millions, leads to nothing different on the ground [2]). Back to the above paragraph, you see how it becomes necessary right from the top to start talking about objects and their types. Yes, we may still argue about whether whole numbers deserve their own type simply because we've added zero to the "natural numbers" starting with 1 (i.e. W = N + {0}). But the mere fact of these arguments serves to reinforce the core ideas: (a) that mathematics has types and (b) we may refer to these as "types of object" or even "math objects" for short. This way of thinking does not depend on knowing a lot about computers or computer memory. The "grammar of objects" is already embedded in human language, with the original aim of Smalltalk being to more closely mirror how people already think in their respective knowledge domains, mathematics no exception. That we should be giving math teachers opportunities to move their skills in this direction seems prudent and conservative to me, not like some radical "out there" suggestion. Clinging to the status quo, in contrast, seems like pure denial that any kind of future is happening. Holding on to the way things were, paying no attention to trends, would seem the radical / risky position to me. The bias we need to overcome, in my view, is that computer programming is really hard, and that by adding some coding language to the math curriculum is just making a difficult subject more difficult. That point of view pushes Computational Thinking into the "honors elective" category. Don't get me wrong: I think there's plenty of room for honors electives in this picture, steep learning curves, lots of challenges. But I'm quite aware of administrator concerns about inequity, funneling resources to those labeled talented and gifted, whereas so often it's a mere lack of opportunity that keeps this "digital divide" so divisive. The pilot programs we need to be reading about should not all be based in these exclusive private schools, lest we send the wrong message. One Laptop per Child is a source of counter-spin, plus various foundations we could name have diversity and broad spectrum outreach among their core values. When it comes to getting support for these teacher training programs, one needs to make sure we're getting through to those big public high schools, including in rural areas. Anyway, I'm straying into politics here (again).[3] To some extent, I think it's up to the various open source communities to keep reminding the public of the opportunities here. GNU and its expanded legacy is one of the more hope-inspiring achievements of recent generations, evidence that humans will indeed collaborate cross-culturally, on a global basis, once provided with the infrastructure to do so. Open source is an integral part of world affairs at this point, and deserves to be taught as such. If your high school offers a current events class, yet there's no mention of the free software movement, then how is this really an intelligent overview? Are librarians the most up to date these days, given libraries are where students go for help with all these new tools? Maybe so. http://www.techlearning.com/article/23558 More preaching to the choir here I realize... Kirby [1] The Sage docs use "context" as a substitute for "namespace" pretty much, as types of object do have their associated namespaces. One way to introduce "dot notation" to those unfamiliar with this syntax is to point out its role in "disambiguation" (a big word, but as much a term in language arts as computer science), a thing we do on Wikipedia for example, when the same term points to more than one entry. When Java simply inverted the domain name to make that a prefix to unique packages, we were seeing disambiguation taken to a new level. [2] thread on math-teach about the Intel announcement: http://www.rdmag.com/News/Feeds/2010/01/information-tech-intel-commits-200-million-for-math-and-science-ed/ (is it really feasible to accomplish all the necessary training based on distance education and Web 2.0 technologies? I'd say one still needs a mix of distance and in-person, so I'm skeptical of any funding proposals that just focus on the Internet as the only curriculum delivery vehicle -- we need to recruit a large army of volunteers willing to take some paid time to do actual field work, no? Where is that Intel-sponsored facility in Portland where teachers might actually show up and compare notes? If it's all burning the midnight oil in some self-study atmosphere, even with shared whiteboards etc., then that'll invite a backlash). Note: my preferred solution, based in historical precedent, was to actually field a fleet of specialized vans, send them around in a kind of circus mode to take trainings directly to schools, get the ball rolling, a kind of recruitment drive, in the sense of getting people signed up for whatever distance learning follow-ups, hands-on classes. Proud sponsors would have their logos emblazoned on these "bookmobile" like vehicles and the very fact of their existence would galvanize the teaching world, make innovation in education a cause celeb, something to publish fun stories about. I haven't given up on this vision, but after so many years of promulgating the possibility, I realize I'm somewhat alone in sharing science fiction of this genre. If it's just me that's interested, it obviously ain't gonna happen. [3] My personal experience is colored by stint with a local police department right in the heart of the Silicon Forest, a stone's throw from Intel. The neighborhoods have many recent immigrant families seeking opportunity and some training in computer technology would help with that. The police department was actually putting some computer labs and browser access points in various housing projects, wanting to jump start more of a learning experience. The chief (a son of Chinese immigrants himself) set up a Linux lab right in West Precinct, and invited kids to come for lessons in open source technologies (I was one of the co-teachers). (When I say "stint with" I don't mean I was ever on payroll with the police. They hired Saturday Academy, a local nonprofit, to supply the teachers and curriculum). What impressed me about all this was the police were doing all this out of a sense of survival and wanting to keep their future from being too nightmarish. If these students had no hope, if opportunities were all closed to them, then that would just mean more despair, more crime, more pressure on police to manage an unworkable situation. How much better it would be if some real and relevant education were happening! I thought their thinking process was rational, bold and worthy of respect in this instance. I had no problem getting on board. So what were the schools doing? They mostly wanted the police to come in and give scary talks about how software piracy was bad, downloading music evil, etc. etc. These were the early days of Napster. Was there any mention of open source, of subcultures that actively encouraged sharing, legally and ethically? Precious little, actually next to nothing back then. We've come a long way in the meantime, but maybe not far enough. Resistance to necessary innovation, right in the heart of the Silicon Forest, is still a major fact of life. Educating administrators about introducing a new kind of math class is an uphill battle even here. I'm seeing the community colleges as potential allies. Anyone else want to chime in? > > -- > "Computer science is the new mathematics." > > -- Dr. Christos Papadimitriou > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > > From kirby.urner at gmail.com Wed Jan 27 00:20:46 2010 From: kirby.urner at gmail.com (kirby urner) Date: Tue, 26 Jan 2010 23:20:46 -0000 Subject: [Edu-sig] Math + Python: reviewing some themes (long) In-Reply-To: <4B5EC9C6.5040301@ece.arizona.edu> References: <4B5EC9C6.5040301@ece.arizona.edu> Message-ID: On Tue, Jan 26, 2010 at 2:53 AM, David MacQuigg wrote: > kirby urner wrote: >> >> I've been hyping "digital mathematics" as a kind of niche marketing term, >> as distinct from "discrete" but is this wise? Per math-thinking-l (another >> list), I'd say I'm in the distinct minority in thinking "digital math" is a >> good term. It's unexplored, not conservative, whereas discrete math is >> already accepted and entrenched. ... > > I would call it "Computational Thinking". There have been a series of > articles on revising CS curricula in recent issues of Communications of the > ACM. I recommend the articles by Chris Stephenson and Peter Denning > (December 2009). > Thx for the pointer! INTERNATIONALIZATION =================== Singapore Math, popular among home schoolers / scholars, has been explicitly IT-friendly for a long time and I'm wondering if something more like MFTDA will be issuing forth from that corner. Wouldn't surprise me. A Japanese equivalent might base itself around Ruby for coding but otherwise seem somewhat similar. Phillips Academy is a pace-setter, not unlike West Point, so I'm sure this curriculum is getting eyeballed by education experts overseas (if they're doing their jobs). I've been sharing it around the Portland for sure, and we're quite the cosmopolitan hub, news spreads... I just think "digital math" (whatever we call it) is hovering in the global Zeitgeist these days, MFTDA another harbinger, a positive sign on the horizon. Over on math-teach today, we're getting links like this one: http://www.dougengelbart.org/home-page/welcome-to-the-bootstrap-alliance.html It's not like Seymour Papert or Doug Engelbart wree born yesterday or anything. It's just that NCTM is finally taking more interest in Web 2.0 and such topics. http://nctmconference.blogspot.com/2009/04/blogs-tweets-and-web-20.html http://www.slideshare.net/mcleme4419/eclips-nctm-boston-secondary etc. >> 3.d OBJECTS FIRST? >> ==================== .... >> What examples do teachers wish to contribute? What would be a good >> introductory example of multiple inheritance I wonder? I recall David >> MacQuigg sharing some examples where __mro__ (method resolution order) made >> an appearance. > > MRO was an advanced topic in an advanced chapter on OOP, not anything I > would include in an introductory course. In fact, I wouldn't even make OOP > a special topic. It's just the most natural way to solve a lot of problems. In my view, the promise of OO, starting with Smalltalk, was to mirror a way we already think. The word "object" does not belong to computer science originally, but to ordinary language. Dot notation is supposed to be expressive because we're *not* trying to inculcate some inner circle knowledge of computer internals, memory management, garbage collection. We're just leveraging what's already a feature of ordinary thought patterns. Lesson plan: === Student A comes to the front of the room, writes a few commands on the white board she is willing to obey.... >>> carla.walk(10) >>> carla.say("Hello") >>> carla.dance_move(1) Student B holds a pointer, and in response to requests (raise hands, polling), points to a requested action. Student A carries out the requested behavior. Kids who've played Sims already know the drill. We're talking about puppets. There's no computer anywhere in this picture, just dot notation and a way of triggering behaviors. Followup: Get volunteers A, B, C in front of the room and have a wadded up piece of paper as an argument. Call that a "message object" and have commands for passing it: >>> carla.has_message True >>> carla.pass_message(jim) >>> carla.has_message False >>> jim.has_message True etc. === BIOLOGY FIRST ================ > Students should be *using* objects (lists, etc.) from day 1. Then, if > there is time later in the course, I would show how to *design* objects. > Even then, you really don't have to say much about inheritance, > polymorphism, abstract classes, MRO, and all the stuff that professional > programmers will get in later courses. > My preferred technique, described over the years as "cave painting" involves putting something rather simple on the screen. Walk through a Dog and Monkey class, then show how you might move the digestive tract methods, eat and poop (stomach a list) to the Mammal class and inherit. This is just a language game and doesn't have to be that intimidating. Biology is already cram packed with this inheritance metaphor, is where I'd argue CS got it in the first place. If the objective is to teach STEM subjects (the buzz word), then we might as well appeal directly to the biology teachers at this point, suggest they leverage the Python knowledge students are getting down the hall, in their math classes, to reinforce the idea of genetic inheritance and species differentiation. In sum, I think the best way to teach OO is not make it *not* a strictly computer science topic, but just a science topic more generally. Something like full blown UML would be overkill, but if your job is to design an airport, or manage one, it makes perfect sense to ask "what are the objects I need to be dealing with, and what are their attributes and behaviors." Runways, airplanes, control tower, concourse, baggage carousels, parking garage, fuel tanks, snack and gift shops.... we don't have to spend a lot of time on any one institution, and we don't have to write even a single line of code if that's not what we're into. The idea is to have students look at a knowledge domain and start analyzing it in terms of objects, as a prelude to problem solving. Don't need a computer. > The thing you want to avoid is having students think "What is this crap?" > That's sometimes necessary in math. You can't appreciate the utility of > eigenvectors until you understand them. It's totally unnecessary in > programming. Let real-world examples lead the way. If you can't start > with a simple example where multiple inheritance is needed, don't even > introduce the topic. Yes, let real-world examples lead the way, I fully agree. Back to "cave paintings" -- you get something simple projected, like 20 lines of Python to implement Dog and Monkey as inheriting from Mammal, and then you talk in a more story-like mode about how today's programming languages come pre-equipped with these "foundation classes" or "libraries" that mirror biological ecosystems. They're huge and offer vast resources, if you know how to tap them. You have all these lineages, tree structures, where objects inherit the capabilities of ancestor objects, sometimes more than one. AROUND THE CAMPFIRE MATH ========================= Why story-like mode hardly happens in math class today is students get all fidgety if they think this will be on the test. And if it's not going to be on the test, then why listen? This idea of "around the campfire" storytelling, where you're simply explaining how things work, giving as spell-binding an account as possible, maybe showing a movie (like 'Warriors of the Net' re tcp/ip) is just not a feature of most math classes today. That's part of what's broken about our K-12 pipeline. The dry technicalities have taken over at the cost of not teaching anything much about the real world. The "stories", insofar as we have any, feature in "story problems" and are typically empty of real content by design. This was one of my topics at us.pycon 2009, co-presented with Steve Holden (PSF chairmain). In the vocabulary of mathematics, a "cave painting" is a homomorphism more than an isomorphism (a fancy way of saying it's a structure-preserving analogy that drops a lotta details, but suggests them) > >> http://wikieducator.org/User:Macquigg (I recommend reading Dr. Macquigg's >> excellent testimonial here, with a link to his PyWhip). > > PyWhip is the tool that is needed by math and science teachers who want to > use computation in their classes, but feel uncomfortable trying to teach > programming. It will include problems in chemistry, physics, calculus, > whatever someone wants to contribute. All a teacher has to do is stay one > step ahead of the students. Anyone capable of teaching science or math can > do that. This is a grand vision, grander than I'd realized. Crunchy is in the same genre perhaps? A lot depends on what's in the repository. Some projects separate framework from content, so you could get help with the framework as open source, yet still have content behind a course-related repository that requires student login? PyWhip installations could spread all over the place, but we'd only see the public ones unless we enrolled in the right courses (same model as Python itself -- a lot of it we just don't hear about, because it's too busy making a profitable contribution to some secret government project or some Hollywood movie). > > Unfortunately, our grand plans have been stalled for lack of a volunteer web > programmer who can finish the hardest part of the job - the last 10%. We > are considering applying for a grant, so we can hire a professional. I wish > I had more time. Google App Engine, Django, Web2py... it all looks very > interesting. You've considered making it an open source project? Or is it already? > >> So yes, the CS professors are right. A full blown intro to classes is too >> much to start off with. > > Actually, CS professors, as a group, are more likely to want "full blown" > tailored to the needs of future programmers. Us industry types are more > likely to say "Screw this. I can write all the programs I need in BASIC and > C." That was my attitude from when I first learned about OOP (1992) until > discovering Python (2002). This was not for lack of trying. I read a book > on C++, and concluded that a better name would have been C--. MORE AUTOBIO ============== Yeah. My trajectory was as an xBase programmer, writing code for a multi-warehouse food bank, keeping various membership-based nonprofits happy (my specialty was nonprofits and local government). Then Microsoft bought FoxPro to compete with Borland, which bought dBase. MSFT migrated xBase to Windows, then converted it to an object-oriented language, quite a bit better than Visual Basic IMO. I ended up in the cardiac operating room about then, coding for heart surgeons. Some "object oriented" languages give you dot notation and ways to use objects, but precious little syntax for rolling your own. xBase, in the form of Visual FoxPro, had inheritance and all the rest of it. When I got to Python by way of Java, I was already an experienced OO guy in a practical sense, though Java / Python helped catch me up on the theory (I read a lot of Bruce Eckel's stuff). > I would use built-in objects first, then user-defined. Students should be > very comfortable with dot notation before we even suggest that you can do > more than just use the built in objects in Python. To introduce dot > notation, I would just show examples. It's kind of like learning to have a > simple conversation in Spanish ("Hola, Isabel. Como esta!!) before studying > the grammar, or even learning the vocabulary. TEACHER-DEVELOPED CURRICULA =============================== Yes, back to my demo in front of the room. Hard to think of a much better intro to dot notation that simply using a turtle. In the original Logo, you didn't have a receiver i.e. FORWARD 10 was about "the turtle" and there was only one. In fact, the very first turtle was an actual robot, more like Lego Mindstorms CRX brick, or whatever they're calling it today. Today though, our turtles are explicit, easy to have more than one. OO includes the concepts of birth and death i.e. an object has a life span. Temporality is important. In the brainstorming I'm doing, we actually attempt to avoid dictating the best pedagogy. Our attitude is teachers know their own students best, and plus won't want to teach what they don't comprehend. So the teacher trainers run through all these techniques, including Objects First, but then they don't say "you must do this". It's more like "here's a practice, a style, which some are using, up to you if you wanna." Teachers actually appreciate getting to make a final judgment for themselves. Maria Droujkova and Anna Roys have helped me become more attuned to the emerging subcultures of collaboration among teachers. Once you get cyberspace into the picture, it changes not only course content, but how teachers want to develop that content. They chafe and complain if you insist they use just these or those resources. Innovating new content becomes part of their responsibility, in collaboration with peers, including internationally. Like I'm working with this guy in Indonesia... > > See the section "Elegant Python" in > http://pywhip.appspot.com/static/help/Using_Python.htm. A student's first > encounter with dot notation will be the line: > > workset.append(n) # append n to the workset > > Other than that comment, and a prior statement: "... see if you can > understand how this function works. Practice using the dir() and help() > functions on list objects and their methods.", there is no explanation of > this grammar. It's just a convenient way to say something Later, in > http://pywhip.appspot.com/static/help/Strings.txt we talk a little more > about the grammar, and the equivalence of two different notations: > > >>> len('abcde') # same as 'abcde'.__len__() > > Putting too much emphasis on a topic can actually make it harder to > understand. I remember struggling with lambda functions for quite a while, > even wasting time in a discussion of lambda calculus, then realizing it was > nothing but a trivial bit of syntax, and I really wasn't missing something > important. Yes, good point. We want OO to be intuitive, non-intimidating. Starting with some "unplugged" approach (per New Zealand), doing OO and dot notation externally to any computer language, might be the way to go in some lesson plans (per above examples, many others we could brainstorm). Exercise: script out your day so far, since getting up, in terms of dot notation: Example: >>> alarm_clock.ring() >>> carla.awake True >>> carla.needs_coffee True >>> coffee_maker.add("grounds") >>> coffee_maker.add("water") >>> coffee_maker.start() >>> coffee_maker.done False >>> carla.brush_teeth() >>> carla.get_dressed() >>> coffee_maker.done True >>> carla.drink("coffee") .... OK to be loose with the syntax, just getting ideas across. Looks like Python but there's no computer turned on. > > Gary has a good point that we may be still putting too much emphasis on > "objects first". It's got me thinking whether I need to rewrite that > section in Using_Python where I show that 2 is an object. The fundamental > point of this section is Python's unique relationship between variables and > objects. The rest is anecdotal. Anecdotal information can distract from > the main point. > My attitude in presenting an "objects first" option (note *option*) would be to emphasize how we already know how to think in terms of objects, including the inheritance part, and we don't want any silly computer language to get in our way, obscuring what we already know. Computer languages should be expressive in helping us think more like we do already. They're here to serve us, not the other way around. Back to storytelling mode: no problemo talking about these "different paradigms" and how computer languages have evolved. If students think they're allowed to just listen to stories, like on Discovery Channel, they'll relax and do so. But the climate today (in many schools) is too high anxiety because either (a) what the teacher is saying is going to be on the next test, or (b) there's no point listening. That's a killer. Subcultures that box themselves in this way are not likely to have much of a half life. Without shared lore, shared stories, there's no glue and no culture. When I start teaching Python to a new group, I start talking about PEPs, about how the language evolves, about the subculture. I want them to have this notion of geeks around the world all collaborating, working together. Like I go to that Wiki page Carl has been working on and show how we're starting to see code that's very "not Latin-1" in appearance. There's a cosmopolitan flavor, right from the start. If they haven't seen one Chinese character by the end of the first week, I've done something wrong (by my own lights -- YMMV). > PyWhip will have the ability for a teacher customize everything - problem > sets, help files, whatever is needed for a particular group of students. > When a student logs in, he will see exactly what his teacher intends him to > see. The help files referenced above may be too brief for high school > students. My target audience is technical professionals who already know > how to write a program, perhaps in BASIC. I encourage others to submit > alternatives better suited to whatever background your students may have. > > -- Dave > Noted. I hope we don't get too hung up on Objects First versus Objects Later, as I think the situation on the ground is always going to be somewhat diverse. For example, it's easy for me to imagine MFTDA getting used as a 2nd year course on our Oregon DM track (discrete math track), once we've successfully piloted a course that has no AP objectives, isn't considered early college. Prep for the new math course might use MFTDA in teacher trainings though, i.e. as the math teacher, you want that on your shelf (along with Zelle's, a few others). We have many high caliber schools that could go the MFTDA right away, too (it's not either/or). Just saying: if DM is about bridging the digital divide, then it has to meet student needs at various levels. That's the challenge in a nutshell. We want to rescue something broken. Math content in Oregon is 10-20 years behind the times and we need to administer "future shock therapy" in ways that don't simply exacerbate the currently untenable situation. That's a focus around here, even as we're talking Python for a language. We're catering to "math refugees" who are seriously considering dropping out of high school completely. My work with the Hillsboro Police Department, which had Linux labs for immigrant children, was along these lines. According to one scenario, students taking the next course in sequence and using the Litvins' text, will already have at least of semester of Python behind them, maybe more. This will change the character of the presentation, but not that drastically, as we're already used to a lot of repetition in mathematics i.e. each successive year goes back over some of the fundamentals. So we might do more with operator overloading then? MFTDA is purposely light on that topic, whereas I'm into __ribs__ galore (a veritable snake BBQ seems like). I like to rush into operator overloading because I want students to start generalizing about addition and multiplication, and what better way than to have these different objects doing those things in their own special ways -- but with commonalities. You get a more "abstract algebra" sensibility that way. We do more with group, ring and field, simply because Python makes everything so concrete, so hands-on. "Group theory for children" was a movement in the 1960s I think it was. Perhaps it's time to resurrect that? We shall see. One of Maria's from last year: http://www.mail-archive.com/edu-sig at python.org/msg05186.html Kirby -------------- next part -------------- An HTML attachment was scrubbed... URL: