From tjd at sfu.ca Sun May 1 20:02:19 2005 From: tjd at sfu.ca (Toby Donaldson) Date: Sun May 1 20:02:23 2005 Subject: [Edu-sig] Re: Edu-sig Digest, Vol 22, Issue 1 In-Reply-To: <20050501100005.5B6211E400F@bag.python.org> References: <20050501100005.5B6211E400F@bag.python.org> Message-ID: <427519AB.4080503@sfu.ca> Hi, You are welcome to look at --- any use or modify any of the materials --- from our course website for the initial offering at Surrey of the Python-based CMPT 120: http://sweetness.typepad.com/cmpt_120_sfu_surrey_fall2/ Highlights include: - three different sets of instructor notes - a set of weekly programming labs - two sample midterm exams (with solutions) - two sample final exams (with solutions) - as glossary of terms (generated via a Python script): http://sweetness.typepad.com/cmpt_120_sfu_surrey_fall2/files/glossary.html - some vocabulary crossword in the form of interactive Java applets: http://sweetness.typepad.com/cmpt_120_sfu_surrey_fall2/puzzles/index.html This course didn't cover any object-oriented programming. Two comments on your FAQ: - "yield" does not quite give you the full power of continuations, and so anyone who expects that will be disappointed (or relieved, depending upon your attitude and experience with them!). - I would think that if you end up using Python and require that all function arguments be explicitly type-checked, then it might not be the best choice of language. Yes, you *can* do a lot of type-checking with assert, but that quickly lays waste to any claims of Python being "low overhead". Toby >Message: 1 >Date: Sat, 30 Apr 2005 12:01:53 -0400 >From: "Douglas S. Blank" >Subject: [Edu-sig] Python for CS101 >To: edu-sig@python.org >Message-ID: <4273ABF1.3050506@brynmawr.edu> >Content-Type: text/plain; charset=us-ascii; format=flowed > >Edu-sig members, > >I am proposing that we move our intro courses at Bryn Mawr College to >Python. Although I have been using Python for a few years, and have >used it in the upper-level courses for teaching robotics, I haven't >taught an intro course with it. > >I am now responding to my colleagues' questions. If you have useful >comments, or if you have questions too, please feel free to add them here: > >http://emergent.brynmawr.edu/emergent/PythonForCS > >or send them to me (or post them here). I hope when this process is >complete, this data will be useful for others ready to make the plunge. > >Thanks for any feedback, > >-Doug > > From andre.roberge at gmail.com Mon May 2 22:41:42 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Mon, 02 May 2005 17:41:42 -0300 Subject: [Edu-sig] ANN: pre-release of RUR-PLE (version 0.7.9.9) Message-ID: For the curious amongst you, a new version of RUR-PLE is available. https://sourceforge.net/project/showfiles.php?group_id=125834 RUR-PLE stands for "Roberge's Used Robot - a Python Learning Environment". It is inspired by Guido van Robot (GvR) also available on sourceforge. For those familiar with GvR, I believe that you will find that the current version of RUR-PLE is already more useful in its current form as a teaching/learning environment for Python than the "final" version of GvR. RUR-PLE requires wxPython. The home page for the project is hopelessly out of date with the version released today. The current version includes 25 lessons, covering in various details, the following Python keywords: def, if, else, elif, not, pass, while, from, import, (as), try, except. [Note: the lesson using "from" and "import" included does not work with this version of RUR-PLE; this will be fixed in version 0.8] Release 0.8 will include lessons covering mathematical operators, strings, list, tuples and dict ... and hopefully more. The goal for version 1.0 is to be complete enough to be suitable for introducing Python to young teenagers in a High School Environment as well as containing enough material to be used in a CS1 (and perhaps CS2) University level course. This is a *preview* release, announced only on this list for now. Cheers, Andr? P.S. Any feedback, including criticisms [and suggestions for making it more relevant to the humanities ;-) is welcome.] From rsenra at acm.org Tue May 3 00:27:21 2005 From: rsenra at acm.org (Rodrigo Dias Arruda Senra) Date: Mon, 2 May 2005 19:27:21 -0300 Subject: [Edu-sig] Python for CS101 In-Reply-To: <4273ABF1.3050506@brynmawr.edu> References: <4273ABF1.3050506@brynmawr.edu> Message-ID: <20050502192721.64624548@Goku> [ "Douglas S. Blank" ] ----------------------------------------------- | I am proposing that we move our intro courses at Bryn Mawr College to | Python. Although I have been using Python for a few years, and have | used it in the upper-level courses for teaching robotics, I haven't | taught an intro course with it. | I am now responding to my colleagues' questions. If you have useful | comments, or if you have questions too, please feel free to add them here: I have used Python in three courses: (a) Introduction to Programming (b) Data Structures (c) Algorithm Analysis In (a) it served to balance the different backgrounds. Many students were not familiar to programming logic, but some knew VB, Pascal or even C++. Adopting Python kept all of them interested. The first two weeks we used turtle.py to explore some basic constructs such as: loops, subroutines, counters, logic. In (b) they learned C, but Python was used to introduce the concept and use cases of lists. After doing a C-linked-list implementation, we used a Python wrapper to test it collectively. In (c) we used Python to explore some algorithms in class, introducing modifications suggested by the students on-line, plotting graphics to investigate some algorithms grows behaviour (later comparing it to theoretical boundaries). Most of all, it was a wonderful tool for the teacher him(her)self, allowing the construction of tools to better explore the subject. Other languages would be probably defeated by our (at least mine) intrinsic laziness (sometimes called 'lack of time'). All these pedagogical experiments took place in Brazil-SP between 2002 and 2003. Hope that helps, Rod Senra -- ,_ | ) Rodrigo Senra |(______ ----------------------------------------------- _( (|__|] GPr Sistemas http://www.gpr.com.br _ | (|___|] Blog http://rodsenra.blogspot.com ___ (|__|] IC - Unicamp http://www.ic.unicamp.br/~921234 L___(|_|] ----------------------------------------------- From dcrosta at sccs.swarthmore.edu Tue May 3 18:02:44 2005 From: dcrosta at sccs.swarthmore.edu (Dan Crosta) Date: Tue, 03 May 2005 12:02:44 -0400 Subject: [Edu-sig] Python for CS101 In-Reply-To: <42764D94.5040707@brynmawr.edu> References: <4273ABF1.3050506@brynmawr.edu> <24d253d905043009316a861d6c@mail.gmail.com> <4273E078.4040405@sccs.swarthmore.edu> <42764D94.5040707@brynmawr.edu> Message-ID: <4277A0A4.3000808@sccs.swarthmore.edu> As a follow up note to my earlier comments, it might be worth considering why the current language (at Swat, currently C, but transitioning to Java) is used in the intro course? Certainly C at least is a language worth knowing as a computer scientist, but need it be introduced to students who've never used anything other than Windows or Mac OS? Probably not. Are there any good reasons why such a low-level language ought to be taught in the intro-intro course, other than that the faculty probably know it pretty well? I see it fitting in nicely as a mid-level class, or even as a task students take on when in a class that requires knowing C (my experience has been that picking up a new programming language is time consuming but not that difficult). Swat at least wants to keep a one-track intro to the department, but I'm not as certain that's the right choice, since it seems important to recognize the two primary experience levels incoming students have: none and some. Students in the none category are likely to be scared off by C -- a friend of mine this year who I encouraged to take our intro class was scared off exactly for this reason after 2 classes. Students in the second category have probably already programmed in C (or now, what with the AP, Java) and would either not take the class, or gain little from it. One of our intro class used to be taught in Scheme, which leveled the playing field among the two groups of students, and taught good recusive practice to all rising CS students. Java seems unlikely to help in either of those ways, and, at least as far as I know, is not even one of the primary research languages. OK, now I'm just complaining about Java, so I'll stop. dsc From Scott.Daniels at Acm.Org Wed May 4 01:27:32 2005 From: Scott.Daniels at Acm.Org (Scott David Daniels) Date: Tue, 03 May 2005 16:27:32 -0700 Subject: [Edu-sig] Python for CS101 In-Reply-To: <4277A0A4.3000808@sccs.swarthmore.edu> References: <4273ABF1.3050506@brynmawr.edu> <24d253d905043009316a861d6c@mail.gmail.com> <4273E078.4040405@sccs.swarthmore.edu> <42764D94.5040707@brynmawr.edu> <4277A0A4.3000808@sccs.swarthmore.edu> Message-ID: Dan Crosta wrote: > the current language (at Swat, currently C, but transitioning to Java) > is used in the intro course? Certainly C at least is a language worth > knowing as a computer scientist, but need it be introduced to students > who've never used anything other than Windows or Mac OS? Probably not. > Are there any good reasons why such a low-level language ought to be > taught in the intro-intro course, other than that the faculty probably > know it pretty well? > I see it fitting in nicely as a mid-level class, or even as a task > students take on when in a class that requires knowing C (my > experience has been that picking up a new programming language is > time consuming but not that difficult). The only virtue I see to starting in C is similar to my start in assembly years ago: to "know" what runs efficiently on a computer. C took the place of most assembly language programming some time ago (there are still some things better done in assembly, but less now than before). The advantage to starting in machine (in fact I did; assembly came in the second course) was that I never believed there were "magic" programmers that did stuff mere mortals did not. It would be a shame to lose this "no magic here" by side-tracking C to an extended exercise. I'd put it in an architecture class, perhaps. At least C (and preferably some native assembly) code should be early in a curriculum, but certainly CS101 is not the time. --Scott David Daniels Scott.Daniels at Acm.Org From andre.roberge at gmail.com Wed May 4 01:59:13 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Tue, 03 May 2005 20:59:13 -0300 Subject: [Edu-sig] Python for CS101 In-Reply-To: References: <4273ABF1.3050506@brynmawr.edu> <24d253d905043009316a861d6c@mail.gmail.com> <4273E078.4040405@sccs.swarthmore.edu> <42764D94.5040707@brynmawr.edu> <4277A0A4.3000808@sccs.swarthmore.edu> Message-ID: Of course, I believe that Python is the ideal language for CS101. Otherwise, I would probably not be so interested in this list ;-) Here are some arguments that I have not seen (except for the first one) in the current thread. 1. Python is often described as "executable pseudocode". 2. Python comes with "batteries included". That is to say, there are python modules (libraries) to help you do pretty much everything you might need in all areas: text processing, graphics, etc. 1. + 2. Python can be used in (almost) all subsequent CS courses in going from pseudo-code on the blackboard (if still using blackboards) to python program on a computer (with a projector in class) and working code demonstrating the algorithm studied. 3. Learning C after learning Python can be done via Pyrex. http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/ From the Web site: "Pyrex is Python with C data types." 4. Learning Java after learning Python can be done via Jython. http://www.jython.org/ From the Web site: "Jython is an implementation of the high-level, dynamic, object-oriented language Python seamlessly integrated with the Java platform." 5. Learning Perl after Python can ... never mind. ;-) Andr? From schellenberg at gmail.com Wed May 4 02:56:57 2005 From: schellenberg at gmail.com (Dan Schellenberg) Date: Tue, 3 May 2005 18:56:57 -0600 Subject: [Edu-sig] GvR question Message-ID: <883717ae7c8d578e2ae6440fc7cd8755@gmail.com> While not strictly a Python posting, I think this question may be of interest to this list. I have decided to use GvR (Guido van Robot) as an introductory unit in my computer science course, and therefore have recently spent some time running through the premade lessons at http://gvr.sourceforge.net/lessons/rfrank/ On lesson 17 http://gvr.sourceforge.net/lessons/rfrank/step17/ I have been unable to contrive a solution that I think my students would understand at this stage. The problem is very straightforward, but the difficulty comes in assigning a proper while loop to the code block that defines how long Guido continues to pick up garbage (ie. none of the built in conditionals provide a good boolean for this problem, though right_is_clear is workable, just not eloquent). I have solved the problem using the aforementioned right_is_clear conditional in the while loop (see first example below), and have also solved it (much more eloquently in my opinion) using recursion. However, I would like to have a more eloquent solution without having to use recursion, as I am not sure that I want to introduce that concept at this stage. Below are my two solutions. Anyone have an idea on how to improve the readability of these solutions for the students? Non-recursive solution: > define turnright: > do 3: > turnleft > > define go_south_west_corner: > while not_facing_south: > turnleft > while front_is_clear: > move > turnright > while front_is_clear: > move > turnright > > define go_north_east_corner: > while not_facing_north: > turnleft > while front_is_clear: > move > turnright > while front_is_clear: > move > > define pickup_column: > while front_is_clear: > while next_to_a_beeper: > pickbeeper > move > while next_to_a_beeper: > pickbeeper > > > go_south_west_corner > > while right_is_clear: > pickup_column > > if facing_north: > turnright > if front_is_clear: > move > turnright > else: > go_north_east_corner > while any_beepers_in_beeper_bag: > putbeeper > go_south_west_corner > turnoff > elif facing_south: > turnleft > if front_is_clear: > move > turnleft > else: > go_north_east_corner > while any_beepers_in_beeper_bag: > putbeeper > go_south_west_corner > turnoff Recursive solution: > define turnright: > do 3: > turnleft > > define go_south_west_corner: > while not_facing_south: > turnleft > while front_is_clear: > move > turnright > while front_is_clear: > move > turnright > > define go_north_east_corner: > while not_facing_north: > turnleft > while front_is_clear: > move > turnright > while front_is_clear: > move > > define pickup_column: > while front_is_clear: > while next_to_a_beeper: > pickbeeper > move > while next_to_a_beeper: > pickbeeper > if facing_north: > turnright > if front_is_clear: > move > turnright > pickup_column > else: > go_north_east_corner > while any_beepers_in_beeper_bag: > putbeeper > go_south_west_corner > turnoff > elif facing_south: > turnleft > if front_is_clear: > move > turnleft > pickup_column > else: > go_north_east_corner > while any_beepers_in_beeper_bag: > putbeeper > go_south_west_corner > turnoff > > > go_south_west_corner > pickup_column -- Dan Schellenberg schellenberg at gmail.com http://www.educationaltechnology.ca/dan/ -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2373 bytes Desc: not available Url : http://mail.python.org/pipermail/edu-sig/attachments/20050503/4705a0a7/smime.bin From andre.roberge at gmail.com Wed May 4 03:49:32 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Tue, 03 May 2005 22:49:32 -0300 Subject: [Edu-sig] GvR question In-Reply-To: <883717ae7c8d578e2ae6440fc7cd8755@gmail.com> References: <883717ae7c8d578e2ae6440fc7cd8755@gmail.com> Message-ID: Dan Schellenberg wrote: > While not strictly a Python posting, I think this question may be of > interest to this list. I have decided to use GvR (Guido van Robot) as > an introductory unit in my computer science course, and therefore have > recently spent some time running through the premade lessons at > http://gvr.sourceforge.net/lessons/rfrank/ > [snip ... problems about while loops and the like noted.] ===== QUICK solution to your problem: use RUR-PLE, also available on sourceforge. RUR-PLE uses Python syntax, so you can write your own "conditionals" and use return statements. [from your post: "none of the built in conditionals provide a good boolean for this problem...."]. ===== This may seem like self-advertisement but, please consider it seriously. As posted on this list yesterday, version 0.7.9.9 of RUR-PLE is available on sourceforge. (Regarding the self-advertisement mention: I am the author - and sole developper of RUR-PLE, but I have nothing to gain [other than the satisfaction of having done something useful to others.] RUR-PLE is like GvR++, if I may say so. My goal in designing RUR-PLE was to allow a seamless transition from "GvR" to Python. I'm busy writing lessons for RUR-PLE, in preparation for release 1.0. So far, the lessons written include exercises in a robot world (a bit like Frank's lessons) covering the following Python keywords: def, if, while, else, elif, not, from, import. That's pretty much the same as GvR in terms of programming concepts ... except for "from" and "import" which aren't covered in GvR. (from and import are covered in version 0.8 sitting on my computer right now, and on which I was working tonight :-) Included in version 0.7.9.9 is also a sample program (in the robot world) showing the use of try/except. I also included a "repeat()" function, which is similar in its use to the "do" keyword in GvR. It is defined as follows: def repeat(fn, n): for i in range(n): fn() My goal for release 1.0 is to have introduced the whole Python syntax in pedagogical lessons. Future releases will most likely focus on writing Python apps with GUIs. RUR-PLE contains also a graphical world builder, which makes it easier to design robot worlds. This has been adapted by one of the developpers of GvR less than 2 months ago and should be in the new release of GvR. I could say a lot more, but I have to go write some more lessons :-) Before I leave, here's a message I received yesterday from the GvR developper that adapted my graphical world builder for use with GvR. (the tooltip issue he mentions is now fixed :-) ===== On 5/2/05, Andre Roberge wrote: > Hi XXXXXXXX > > I have just uploaded a new release of rur-ple on sourceforge. It is > version 0.7.9.9. This is a major upgrade to the previous release, > with a fairly different looking interface. I've put a fair bit of > work in the lessons. It's impressive, nice lessons and the GUI looks very nice with the custom icons. I really like the notebook setup, got me thinking about GvR I was never happy with the way GvR implements the lessons. (by using a browser). I have however a little comment, as usual :-) I kind of misses tooltips when holding the mouse above the buttons. When I was looking at the GUI I realized I was holding the mouse above the buttons and expected to get some info :-) > Note that there is a lesson on the "import" statement which is not > implemented; it will be in version 0.8. The lessons are very impressive, and looks great with the screenshots and other graphics. ======== Sincerely hoping that nobody is annoyed by the length of this post... All I want to do is make it easier to learn Python :-) Andr? From andre.roberge at gmail.com Wed May 4 06:46:11 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Wed, 04 May 2005 01:46:11 -0300 Subject: [Edu-sig] GvR question In-Reply-To: <883717ae7c8d578e2ae6440fc7cd8755@gmail.com> References: <883717ae7c8d578e2ae6440fc7cd8755@gmail.com> Message-ID: Dan Schellenberg wrote: [snip] > > On lesson 17 http://gvr.sourceforge.net/lessons/rfrank/step17/ I have > been unable to contrive a solution that I think my students would > understand at this stage. The problem is very straightforward, but the > difficulty comes in assigning a proper while loop to the code block that > defines how long Guido continues to pick up garbage (ie. none of the > built in conditionals provide a good boolean for this problem, though > right_is_clear is workable, just not eloquent). I have solved the > problem using the aforementioned right_is_clear conditional in the while > loop (see first example below), and have also solved it (much more > eloquently in my opinion) using recursion. However, I would like to > have a more eloquent solution without having to use recursion, as I am > not sure that I want to introduce that concept at this stage. Below are > my two solutions. Anyone have an idea on how to improve the readability > of these solutions for the students? Here's my non-recursive solution in rur-ple, which could be easily translated in GvR. Actually, I tried to keep your structure intact as much as possible. It does not use the right_is_clear conditional. # definitions def turn_right(): repeat(turn_left, 3) def turn_around(): turn_left() turn_left() def facing_south(): # not built-in yet in rur-ple; # hence need to use return turn_around() answer = facing_North() turn_around() return answer def go_south_west_corner(): while not facing_south(): turn_left() while front_is_clear(): move() turn_right() while front_is_clear(): move() turn_right() # thus facing north def go_north_east_corner(): while not facing_North(): turn_left() while front_is_clear(): move() turn_right() while front_is_clear(): move() # the following definition is modified from yours def pickup_column_and_come_back(): # normally facing north while front_is_clear(): while next_to_a_beeper(): pick_beeper() move() turn_around() # now facing south while front_is_clear(): move() turn_left() # now facing east, perhaps ending if front_is_clear(): move() turn_left() # ends next column, face North # end of definitions # ================= # begin algorithm per se go_south_west_corner() while facing_North(): pickup_column_and_come_back() # note: when reaching east wall, will not face north # exits at south-east corner, facing east turn_left() while front_is_clear(): move() while carries_beepers(): put_beeper() go_south_west_corner() turn_off() --------------------------------------------------- Andr? From andre.roberge at gmail.com Wed May 4 07:04:10 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Wed, 04 May 2005 02:04:10 -0300 Subject: [Edu-sig] GvR question (correction) In-Reply-To: References: <883717ae7c8d578e2ae6440fc7cd8755@gmail.com> Message-ID: Andr? Roberge wrote: > Dan Schellenberg wrote: > [snip] > >>On lesson 17 http://gvr.sourceforge.net/lessons/rfrank/step17/ I have >>been unable to contrive a solution that I think my students would >>understand at this stage. The problem is very straightforward, but the >>difficulty comes in assigning a proper while loop to the code block that >>defines how long Guido continues to pick up garbage (ie. none of the >>built in conditionals provide a good boolean for this problem, though >>right_is_clear is workable, just not eloquent). I have solved the >>problem using the aforementioned right_is_clear conditional in the while >>loop (see first example below), and have also solved it (much more >>eloquently in my opinion) using recursion. However, I would like to >>have a more eloquent solution without having to use recursion, as I am >>not sure that I want to introduce that concept at this stage. Below are >>my two solutions. Anyone have an idea on how to improve the readability >>of these solutions for the students? > > > Here's my non-recursive solution in rur-ple, which could be easily > translated in GvR. Actually, I tried to keep your structure intact as > much as possible. It does not use the right_is_clear conditional. Oops... misses garbage along the top (north) wall. My test case world did not have garbage there. Required modifications noted below ... as well as some moving parts of the code from the "definition" section to the "execution" section - it might be easier to understand this way. > > # definitions > > def turn_right(): > repeat(turn_left, 3) > > def turn_around(): > turn_left() > turn_left() > > def facing_south(): # not built-in yet in rur-ple; > # hence need to use return > turn_around() > answer = facing_North() > turn_around() > return answer > > def go_south_west_corner(): > while not facing_south(): > turn_left() > while front_is_clear(): > move() > turn_right() > while front_is_clear(): > move() > turn_right() # thus facing north > > def go_north_east_corner(): > while not facing_North(): > turn_left() > while front_is_clear(): > move() > turn_right() > while front_is_clear(): > move() > > # the following definition is modified from yours > > def pickup_column_and_come_back(): # normally facing north > while front_is_clear(): > while next_to_a_beeper(): > pick_beeper() > move() while next_to_a_beeper(): # forgot garbage there pick_beeper() > turn_around() # now facing south > while front_is_clear(): > move() ## remove end of this definition; put in section below > > # end of definitions > # ================= > # begin algorithm per se > > go_south_west_corner() > > while facing_North(): > pickup_column_and_come_back() # face south after turn_left() # now facing east; may end that way if front_is_clear(): move() turn_left() # ends next column, face North > > # exits at south-east corner, facing east > > turn_left() > while front_is_clear(): > move() > > while carries_beepers(): > put_beeper() > > go_south_west_corner() > turn_off() > --------------------------------------------------- > > Andr? From urnerk at qwest.net Wed May 4 12:11:32 2005 From: urnerk at qwest.net (Kirby Urner) Date: Wed, 4 May 2005 03:11:32 -0700 Subject: [Edu-sig] Python for CS101 In-Reply-To: <4273E078.4040405@sccs.swarthmore.edu> Message-ID: <20050504101136.45C591E4008@bag.python.org> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Dan Crosta > Sent: Saturday, April 30, 2005 12:46 PM > To: edu-sig at python.org > Subject: Re: [Edu-sig] Python for CS101 > In fact, the only areas I think Python is *not* suitable are low-level > architecture-dependent programming. Unless you count Jython and its access to Java classes, I think the ability to code applets to run client-side over the Internet is still a Java forte and niche high level application that hasn't been duplicated in Python -- again, unless you count Jython (which in my experience hasn't become a significant source of such applets). Now, whether applet coding should be a significant part of a CS0/CS1 course is something we might debate, but I do think this is a case where a language other than Python has a significant edge at a higher level than low-level architecture-dependent programming. I'm sure we might come up with other examples (using Eiffel? Ocaml? Haskell? J?). I like CS courses which sample (in my freshman CS course a Princeton, we played with SNOBOL, APL, PL/1, FORTRAN, and no doubt some others I've forgotten). That being said, you also need an "anchor" or "home base" language to help you nail it all down, and as a point of comparison. Python makes a lot of sense in this role. So of course I agree that Python is a strong candidate as the star of a CS0/CS1 course and I fully expect it to continue making inroads deep into that turf. I also find it interesting that most of us here are considering it as an alternative to either C++ or Java, but aren't mentioning Scheme (which has been an intro CS language at MIT for some time). Also, down the road, I can see a CS curriculum which is pretty .NET centric, using Python with the CLR per IronPython, with the obvious bridge to C# (Python's implementation language on that platform). This approach is more likely if the .NET clones continue to evolve in tandem with the Microsoft OS, as this will solve a lot of cross-platform development issues. Kirby From ajsiegel at optonline.net Wed May 4 15:39:47 2005 From: ajsiegel at optonline.net (ajsiegel@optonline.net) Date: Wed, 04 May 2005 09:39:47 -0400 Subject: [Edu-sig] Python for CS101 Message-ID: <2801b16280284e.280284e2801b16@optonline.net> >Also, down the road, I can see a CS curriculum which is pretty .NET centric, To me, the spirit of Python and .Net are quite unaligned. It seems that many of us who feel aligned with Python feel aligned with it in spirit, more than in anything in particular in its syntax and semantics. If we insist that broader questions (at least loosely) related to academic ethics are irrelevant, some of us win and some of us lose. Are we training programmers for industry, or mentoring hackers to hack - why, where, when being their business? I don't think it unreasonable to try to keep alive the notion that at least certain kinds of academic institutions would and should remain a degree removed from idea of training, and a degree committed to the idea of stimulating the development of more abstract skills by way of a less goal oriented exploration. So it is no small thing for me to hear that an insitution like Swathmore has moved from Scheme to Java. Which is a move - in my mind - exactly in the wrong direction. Ted Leung blog entry of this morning being highly relevant, I thnk http://www.sauria.com/blog/ It is also no small thing to me to feel inhibited from mentioning Ted's entry and hoping to stimulate some discussion of it here - though finding no direct mention of Python in it. Art From andre.roberge at gmail.com Wed May 4 17:38:01 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Wed, 04 May 2005 12:38:01 -0300 Subject: [Edu-sig] Python for CS101 In-Reply-To: <2801b16280284e.280284e2801b16@optonline.net> References: <2801b16280284e.280284e2801b16@optonline.net> Message-ID: ajsiegel at optonline.net wrote: >>Also, down the road, I can see a CS curriculum which is pretty .NET centric, > > > To me, the spirit of Python and .Net are quite unaligned. > [Snip...] > > It is also no small thing to me to feel inhibited > from mentioning Ted's entry and hoping to stimulate some > discussion of it here - though finding no direct mention of Python in > it. > > Art As I suspect I am the person responsible for Art mentioning his feeling of being inhibited in discussing Ted Leung's blog entry on this list, I can't help but feel compelled to state that the comments I made were not meant to inhibit any discussion. I just voiced (perhaps too forcefully) my personal opinion. Peace, Andr? From chuck at freshsources.com Wed May 4 18:58:30 2005 From: chuck at freshsources.com (Chuck Allison) Date: Wed, 4 May 2005 10:58:30 -0600 Subject: [Edu-sig] Python for CS101 In-Reply-To: <20050504101136.45C591E4008@bag.python.org> References: <20050504101136.45C591E4008@bag.python.org> Message-ID: <1399889921.20050504105830@freshsources.com> Hello Kirby, Wednesday, May 4, 2005, 4:11:32 AM, you wrote: KU> I like CS courses which sample (in my freshman CS course a Princeton, we KU> played with SNOBOL, APL, PL/1, FORTRAN, and no doubt some others I've KU> forgotten). That being said, you also need an "anchor" or "home base" KU> language to help you nail it all down, and as a point of comparison. Python KU> makes a lot of sense in this role. Indeed. I think it better to use only one language in a first course. I remember my first course at BYU - we first learned PDP8 Assembly (which failed miserably) and then FORTRAN (which clicked). Your "home base" idea makes sense to me. KU> So of course I agree that Python is a strong candidate as the star of a KU> CS0/CS1 course and I fully expect it to continue making inroads deep into KU> that turf. KU> I also find it interesting that most of us here are considering it as an KU> alternative to either C++ or Java, but aren't mentioning Scheme (which has KU> been an intro CS language at MIT for some time). I have taught both Scheme and ML, as well as Python (but not in a beginning course). I think Python's advantage here is that it is not constrained to be a functional language. You can appeal to students' intuition with simple imperative statements and immediate use of the built-ins (lists, tuples, dictionaries). It takes a while for the mind to wrap itself around the functional paradigm, especially in a beginning course. I know that MIT and the U. of Utah claim "success" in using Scheme as a first language, but I don't buy it. Especially at MIT, they don't have typical students. -- Best regards, Chuck From urnerk at qwest.net Thu May 5 02:10:12 2005 From: urnerk at qwest.net (Kirby Urner) Date: Wed, 4 May 2005 17:10:12 -0700 Subject: [Edu-sig] Python for CS101 In-Reply-To: <2801b16280284e.280284e2801b16@optonline.net> Message-ID: <20050505001034.190CA1E4008@bag.python.org> > I don't think it unreasonable to try to keep alive the notion that > at least certain kinds of academic institutions > would and should remain a degree removed from idea of > training, and a degree committed to the idea of > stimulating the development of more abstract skills > by way of a less goal oriented exploration. > I'm not sure why you think doing Python on top of .NET is a move towards cookie-cutter training-for-industry style programming. It's pretty much the same Python, in terms of syntax and semantics. Maybe some differences in garbage collection, a few other things -- I'm no expert. Python .NET is a lot like Jython -- same Python on the surface, but another implementation language under the hood (C# instead of C or Java this time). > So it is no small thing for me to hear that an insitution like > Swathmore has moved from Scheme to Java. > > Which is a move - in my mind - exactly in the wrong direction. > And would you say the same of a move from Scheme to Python? Again, I think any CS *curriculum* has to go into more than one language. But any given course might focus on just one, such as Python. Plus I like those sampler courses (like the beer sampler you can get at some brew pubs). > Ted Leung blog entry of this morning being highly relevant, I thnk > > http://www.sauria.com/blog/ > > It is also no small thing to me to feel inhibited > from mentioning Ted's entry and hoping to stimulate some > discussion of it here - though finding no direct mention of Python in > it. > > Art I believe I read the right entry, about open source and homeschooling and the flattening of the world (meaning leveling of the playing field). Seems pretty on target in a lot of ways. Kirby From ajsiegel at optonline.net Thu May 5 14:25:32 2005 From: ajsiegel at optonline.net (Arthur) Date: Thu, 05 May 2005 08:25:32 -0400 Subject: [Edu-sig] Python for CS101 In-Reply-To: <0IFZ002NZPTKFH@mta25.srv.hcvlny.cv.net> Message-ID: <0IG000K1INWT1K@mta5.srv.hcvlny.cv.net> > -----Original Message----- > From: Kirby Urner [mailto:urnerk at qwest.net] > To: ajsiegel at optonline.net; edu-sig at python.org > > I'm not sure why you think doing Python on top of .NET is a move towards > cookie-cutter training-for-industry style programming. It's pretty much > the > same Python, in terms of syntax and semantics. I will talk through my hat, a bit more than usual - i.e. impressionistically more than technically: As I said, I think what makes Python Python goes beyond its syntax and semantics. For one - for Python, the answer to the question of "how do I hide my code so that no one can see it at work" is generally that you don't, and if that is essential to you, you should probably reconsider your choice of Python. I would assume that the Python developers are perfectly capable of engineering Python to a different answer - but have not (yet at least) been very motivated to do so. Other languages need to design around the fact that this is a fundamental requirement, and I would think there are all kinds of design implications that necessarily follow this core design requirement. Static typing seems to help - for example. But Python *has* been designed around the notion of interoperability with modules in other languages - initially C. And it is in fact how Python is used in the real world. .Net is in some sense trying to catch upto, onto Python in this respect - just with the assumption that it is working within the context of closed source, whereas Python assumes otherwise. Different in spirit. And one can argue about which is more appropriate in an industrial setting. In an educational setting the answer is easier, and Python is fully self-sufficient without the .Net add-on. Except to the extent the educational mandate is related to introduction to the tools specific to closed source programming. To what extent does that need to be true? IMO, very little. Not arguing against closed source - per se. But if that is important to industry, let industry bear the training costs. Art > Maybe some differences in > garbage collection, a few other things -- I'm no expert. Python .NET is a > lot like Jython -- same Python on the surface, but another implementation > language under the hood (C# instead of C or Java this time). > > > So it is no small thing for me to hear that an insitution like > > Swathmore has moved from Scheme to Java. > > > > Which is a move - in my mind - exactly in the wrong direction. > > > > And would you say the same of a move from Scheme to Python? > > Again, I think any CS *curriculum* has to go into more than one language. > But any given course might focus on just one, such as Python. Plus I like > those sampler courses (like the beer sampler you can get at some brew > pubs). > > > Ted Leung blog entry of this morning being highly relevant, I thnk > > > > http://www.sauria.com/blog/ > > > > It is also no small thing to me to feel inhibited > > from mentioning Ted's entry and hoping to stimulate some > > discussion of it here - though finding no direct mention of Python in > > it. > > > > Art > > I believe I read the right entry, about open source and homeschooling and > the flattening of the world (meaning leveling of the playing field). > Seems > pretty on target in a lot of ways. > > Kirby > From urnerk at qwest.net Thu May 5 18:52:53 2005 From: urnerk at qwest.net (Kirby Urner) Date: Thu, 5 May 2005 09:52:53 -0700 Subject: [Edu-sig] Python for CS101 In-Reply-To: <0IG000K1INWT1K@mta5.srv.hcvlny.cv.net> Message-ID: <20050505165257.9C7091E4004@bag.python.org> > Not arguing against closed source - per se. But if that is important to > industry, let industry bear the training costs. > > > Art I don't yet have a clear grasp of what parts of the .NET architecture would be closed to a Python developer. Good question though. In the case of Mono, the .NET clone for Linux, you can get the source code, including for the C# compiler. And even on MSFT, there's nothing to keep Python developers from sharing their .py source files -- they'd compile to the CLR when first run, then wouldn't need to be recompiled again (like now, with .pyc files, which any developer may share in lieu of .py files). The situation with Jython is comparable. You can share the source, or just ship the .class files. Either way, the source for the platform-specific JVM itself (e.g. Sun's) may not be open to you. Most Windows users of Python are aware the source is available, but few compile it, as Windows doesn't even include a free compiler. And look at the Win32 extensions module, available with all Windows versions -- that sends hooks deep into the Windows OS, lets you deal with COM objects and provides bindings to the Microsoft Foundation Classes (MFC). That stuff is all proprietary/closed, even if Mark Hammond's win32 source isn't. I don't know to what extent Jim's project at Microsoft is going to yield a transparent stack, i.e. will all the C# code for implementing Python atop the .NET framework be open? If not, I'd expect the Python community to come up with another version that was. The metaphor of a stack (stuff on top of stuff) is a good one. On the Windows side, you always come down to a closed kernel at the bottom, so your Python can't be considered "pure open source all the way down to the chip" no matter what you do. Besides, the chip itself is proprietary (Intel or AMD inside). Kirby From ajsiegel at optonline.net Thu May 5 19:28:42 2005 From: ajsiegel at optonline.net (Arthur) Date: Thu, 05 May 2005 13:28:42 -0400 Subject: [Edu-sig] Python for CS101 In-Reply-To: <0IG100D3P0874B@mta26.srv.hcvlny.cv.net> Message-ID: <0IG10043120DI2@mta1.srv.hcvlny.cv.net> > -----Original Message----- > From: Kirby Urner [mailto:urnerk at qwest.net] > To: 'Arthur'; edu-sig at python.org > Subject: RE: [Edu-sig] Python for CS101 > > > Not arguing against closed source - per se. But if that is important to > > industry, let industry bear the training costs. > > > > > > Art > > I don't yet have a clear grasp of what parts of the .NET architecture > would > be closed to a Python developer. Good question though. I think you are missing some of what I think is my point. Not whether .Net/Mono is of itself closed or open. But that its design is as it is on the assumption it is dealing with closed source. It would be designed otherwise - presumably - if it could assume otherwise. And the reality (I am talking from informed common sense, not technical depth) is that if a programming language needs to be designed from the ground up on the assumption that its source is securely closable, there are options that are unavailable to it that might otherwise have perfect and substantial merit. Let's hypothecate that C# might look a lot more like Python had it not had that particular design requirement. Does that leave us - in your opinion - anywhere in particular. To me - as to which is more suitable for academic purposes - it does. And I guess I then generalize a bit from there. Art From andre.roberge at gmail.com Thu May 5 23:48:41 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Thu, 05 May 2005 18:48:41 -0300 Subject: [Edu-sig] Python for CS101 In-Reply-To: <0IG000K1INWT1K@mta5.srv.hcvlny.cv.net> References: <0IFZ002NZPTKFH@mta25.srv.hcvlny.cv.net> <0IG000K1INWT1K@mta5.srv.hcvlny.cv.net> Message-ID: Arthur wrote: > [Snip] > In an educational setting the answer is easier, and Python is fully > self-sufficient without the .Net add-on. Except to the extent the > educational mandate is related to introduction to the tools specific to > closed source programming. To what extent does that need to be true? IMO, > very little. > Not arguing against closed source - per se. But if that is important to > industry, let industry bear the training costs. > Art > University is supposed to be about education, not training. In other words, it is to about learning how to think, rather than how to use some technical tool that has the flavour of the day. If I had to design a complete curriculum in computer science, I would most likely pick Python as the core language (with some help from C) for all topics. Here are some very broad, off the cuff, examples... When studying scientific visualisation, I would introduce all the general principles and simple examples using Python and the various available libraries. For the last quarter of the course, I might use a combination of Mathematica, Maple and some specialised software (say for rendering) to introduce some advanced topics. When studying "compilers", I would first use Python parsing modules. At some point, I would introduce Python's "compiled" file syntax. Then I would look at how this is translated in computer instruction on a specific architecture. To study numerical analysis, once again I would use Python to implement the algorithms, so that student learn how to do it. I would then compare with available Python libraries, to show how best it is not to reinvent the wheel. I might, at the end, use something like Mathematica, Maple or Matlab, again to illustrate some specific points. You probably get the idea: either use Python as "executable pseudocode" to have the student learn the concepts. Then, show them how to do more advanced stuff using the relevant tool for that area. Perhaps something like .Net would need to be introduced at the end of a given course. In the second year, I would have a (one semester) course on C - given its importance and its portability. In the third year, I would have a full year course where students would have to do 6 projects, using 6 different languages. Say: Lisp, Java, Haskel, APL, Fortran and one other (but NOT Python nor C) at the choice of the individual student. This would be a self-learning course (with instructor's prior approbation of topics) with everyone in the department available for supervision/guidance, based on their experience. (google is the student's friend ;-) In the fourth, and final year, I would have the students do a term project using Java, in the first term - so they can feel better prepared when starting to look for job prior to graduation. Then, in the last term, they would have another project to do, this time using the language(s) of their own choice. I bet most of them would end up using Python! I believe that the graduating students would be ripe to benefit from industry-led-and-paid-by training courses on closed-source technology that Art mentions. And they would be well-equipped to keep learning on their own. Just some rambling thoughts as a non-expert in computer science. Andr? ===== [Disclaimer] I work in an educational setting where both traditional university-level education and technical training are offered. I am not a computer scientist, nor does my institution have a computer science departement where we would teach a CS101 type course (- although I am attempting to develop a web-based on python in my spare time ;-) However I have been involved in *serious* restructuring of an undergraduate physics curriculum as well as being the driving force in putting together a one-of-a-kind undergraduate biomedical curriculum, and involved on curriculum-planning committees at two different universities. From urnerk at qwest.net Fri May 6 01:09:47 2005 From: urnerk at qwest.net (Kirby Urner) Date: Thu, 5 May 2005 16:09:47 -0700 Subject: [Edu-sig] Python for CS101 In-Reply-To: <0IG10043120DI2@mta1.srv.hcvlny.cv.net> Message-ID: <20050505231009.3AF571E400E@bag.python.org> > Let's hypothecate that C# might look a lot more like Python had it not had > that particular design requirement. > It's somewhat inherent that compiled languages have this "no source code needed" option. Python is the same way on Windows; this giant DLL in c:\windows\system, compiled from C. You can also get binary-only RPMs for the various Linux distros. It's not the language C/C++ itself that determines if source is available or not. Nor C# by the same token. Labeling attributes 'private' or 'protected' aren't intrinsically about creating closed source software. They're about the coder implementing a consistent strategy, e.g. of not leaving certain variables directly exposed, in case the setter/getter methods need to be changed later. The compiler looks over your shoulder and makes sure you don't break your own rules. Even if all source is forever open, you still want to keep private variables private -- to fence off what's not part of a class API. Python accomplishes the same distinctions with under-bar syntax. Any CS curriculum should include one or more compiled system languages, with type declarations and compile-time checking. The drift right now is towards NOT using such languages for intro courses, because this turns off too many people (especially non-CS majors, but also those still trying to make up their minds) and frontloads the course with a lot of unneeded overhead. If one buys that starting with a system language is not such a great idea, then that leaves some of the so-called dynamic or agile languages to consider, Python being one of the stronger of these. Is Java a system language, or C#? They blur the distinction a bit, in running on VMs, like Python. The .NET VM has the advantage over Java of supporting numerous languages, boosting interoperability. The new Perl VM has a similar goal (of supporting multiple languages, including Python). Basically, VM architecture is the new way to design languages (since around the late 1980s or so?). Everybody gets to use the same language, with the interface to the underlying OS taken care of invisibly, by the VM itself. Python, Java, C# and Perl all work this way, plus any other .NET language (of which there are currently about seven I think). CS courses need to discuss this new architecture. It's not quite the same approach taken by C (which had early claims to "portability") which both externalized libraries and made the compiler platform-specific. C doesn't have this concept of a VM that you're running "on top of" or rather, the OS itself is that VM. > Does that leave us - in your opinion - anywhere in particular. > > To me - as to which is more suitable for academic purposes - it does. And > I guess I then generalize a bit from there. > > Art My original point is I won't be surprised to find a .NET centric approach that includes Python, in some future CS curriculum. I don't expect this to be the only approach, nor necessarily the "best." And I think a lot depends on .NET succeeding an OS-neutral technology. If .NET succeeds in this way, then I think the results will be interesting enough to merit a lot of surrounding curriculum, and I am not predisposed to militate against it, as somehow subversive of my core values. At this point, I'm not seeing what core principles that I hold would be violated. That could change, but this is where I'm at today. Kirby From tjd at sfu.ca Fri May 6 01:37:17 2005 From: tjd at sfu.ca (Toby Donaldson) Date: Thu, 05 May 2005 16:37:17 -0700 Subject: [Edu-sig] Python for CS101 In-Reply-To: Message-ID: > I also find it interesting that most of us here are considering it as an > alternative to either C++ or Java, but aren't mentioning Scheme (which has > been an intro CS language at MIT for some time). I love Scheme and LISP, and I actually considered using it as a CS1/CS0 language a few years ago. I even read the first couple of chapters of their Scheme textbook. But it's not a viable choice if you want to introduce modern programming practices to students. Scheme is great if you treat CS as an off-shoot of mathematics and ignore the applied aspects (such as the fact that there's a computer running running your code!), but most students are well-aware that Scheme is *not* the lingua franca of real-world programming. And the reality is (at least in my neighborhood) that the vast majority of CS students are interesting software engineering careers, and so a practical language like Python that shows how pure CS ideas can be made practical is ideal. I've spoken to a few teachers at a school that tried the Scheme-first approach, and the students generally *hated* it. I've talked to students who took a CS2 data structures and algorithms course in LISP, and they claimed to *hate* the course --- while at the same time saying "LISP was lots of fun!". Scheme is a great language for someone who is already hooked on CS, and is interested in certain abstract questions of computation. But it's just not useful or interesting enough to appeal to enough students. Toby From ajsiegel at optonline.net Fri May 6 14:13:32 2005 From: ajsiegel at optonline.net (Arthur) Date: Fri, 06 May 2005 08:13:32 -0400 Subject: [Edu-sig] Python for CS101 In-Reply-To: Message-ID: <0IG2008VAI1G15@mta9.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Toby Donaldson > Sent: Thursday, May 05, 2005 7:37 PM > To: edu-sig at python.org > Subject: Re: [Edu-sig] Python for CS101 > > I've spoken to a few teachers at a school that tried the Scheme-first > approach, and the students generally *hated* it. I've talked to students > who > took a CS2 data structures and algorithms course in LISP, and they claimed > to *hate* the course --- while at the same time saying "LISP was lots of > fun!". If I cam be considered a market survey of one - the LISP alternative, not before mentioned - does have some life to it. Ordered and just received "Practical Common Lisp", which other than some database books I needed for reference on work projects, is the first non-Python programming book I have bought in some time. It's the first affirmative move I have made toward supplementing what I have learned about programming from Python by exploring outside of Python, and comes after some period of sniffing around all the likely alternatives, from C++, to Ocaml, to Scheme, etc. Peter Seibel, the author of "Practical Common Lisp", somewhat laments the fact that the exposure of many to LISP is through Scheme. "If you studied LISP is college and came away with the impression that it was only an academic language with no real-world application, chances are you learned Scheme." He adds: "This isn't to say that's a particularly fair characterization of Scheme, but it's even less applicable to Common LISP". For my taste, the book goes a little too far out of its way to make its point that LISP is a practical programming language - its example programs being Web Programming, the ID3 Parser, the HTML generator, etc. But I decided to suck it up and see what I could get out of it. On the particular score of programming interests I have already been forced to learn to get along - as someone with almost no interest in web-based programming, most programming related forums today do not seem quite "for me". So I have lowered expectations on that score. And in some sense I am practicing what I preach - i.e. advocating the introduction of Python through math and science related subjects, knowing that is not necessarily where a students core programming interests might lie. Python is well-established, I think, as a "practical" programming language. And can and should take advantage of that - in a non-obvious way, perhaps. With nothing in particular to need to prove on that score, its seems to me that in an academic setting, it can and should allow itself to be introduced with examples and subject matter of direct academic relevance. Thereby providing the side effect of getting to the academic worth of programming - that is for practical academics. One might allow "academic" as a dirty word from outside the academy. It's hard for me to understand how it can be allowed to be so from within it. But I have made tried to make this point about 700 times before, and have given some pledge to try to stop repeating myself... Art From tjd at sfu.ca Fri May 6 17:53:59 2005 From: tjd at sfu.ca (Toby Donaldson) Date: Fri, 06 May 2005 08:53:59 -0700 Subject: [Edu-sig] Python for CS101 In-Reply-To: <0IG2008VAI1G15@mta9.srv.hcvlny.cv.net> References: <0IG2008VAI1G15@mta9.srv.hcvlny.cv.net> Message-ID: <427B9317.7080802@sfu.ca> >>I've spoken to a few teachers at a school that tried the Scheme-first >>approach, and the students generally *hated* it. I've talked to students >>who >>took a CS2 data structures and algorithms course in LISP, and they claimed >>to *hate* the course --- while at the same time saying "LISP was lots of >>fun!". >> >> > >If I cam be considered a market survey of one - the LISP alternative, not >before mentioned - does have some life to it. > >Ordered and just received "Practical Common Lisp", which other than some >database books I needed for reference on work projects, is the first >non-Python programming book I have bought in some time. > >It's the first affirmative move I have made toward supplementing what I have >learned about programming from Python by exploring outside of Python, and >comes after some period of sniffing around all the likely alternatives, from >C++, to Ocaml, to Scheme, etc. > >Peter Seibel, the author of "Practical Common Lisp", somewhat laments the >fact that the exposure of many to LISP is through Scheme. > >"If you studied LISP is college and came away with the impression that it >was only an academic language with no real-world application, chances are >you learned Scheme." > > I love LISP and Scheme. I've used both extensively. My critique is not that these languages have no real-world application, but just that *most* real world applications (and programmers) don't use them, and most students know it. The beauty of Python is that it borrows many of the best ideas of LISP and other academic languages, but remains far more practical. A couple of other problems I see with LISP/Scheme are: - The fact that LISP/Scheme programs are lists is really just a hack to make parsing LISP/Scheme programs easier. It's suddenly much less of feature when you are parsing other sorts of strings, or not doing parsing at all. - It privileges lists over other data structures: lists, strings, and vectors must all be treated differently. - It's generally harder to make efficient programs LISP/Scheme than in "imperative" languages. This is not to say that efficient programs cannot be written in these languages, just that it typically requires more work on the part of a programmer to do so. For instance, to write an efficient queue data structure (where adding and removing form the queue are always constant-time operations) in LISP/Scheme requires using arrays. This is a design flaw that is not obvious to beginners. It forces them to know something about how LISP works under the covers. Knowing how your tools work is certainly a good thing, but not if the main reason is to work around language flaws. This brittleness and lack of transparency is, I think, part of LISP/Scheme's failure to catch on in the real world. Again, I think LISP/Scheme are great, and everyone interested in CS or programming would learn a lot from studying these languages. I just don't think they are the right choice for CS1. Toby From dyoo at hkn.eecs.berkeley.edu Fri May 6 20:26:32 2005 From: dyoo at hkn.eecs.berkeley.edu (Danny Yoo) Date: Fri, 6 May 2005 11:26:32 -0700 (PDT) Subject: [Edu-sig] Python for CS101 In-Reply-To: <427B9317.7080802@sfu.ca> Message-ID: > For instance, to write an efficient queue data structure (where adding > and removing form the queue are always constant-time operations) in > LISP/Scheme requires using arrays. Hi Toby, I don't think this is a valid criticism. If the point of using a queue is to teach how to write an efficient data structure, is the target audience really going to be beginners? Do beginners care about efficiency, to the exclusion of all else? What you said is also technically wrong: there are efficent ways to implement queues with pure list structures. See: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/210459 which is basically a translation of a Lisp-friendly queue class. The discussion in the link above also shows that it's perfectly easy --- and all too often likely --- for beginners to do silly things using Python's lists too. On Python-tutor, we often do get beginners who will do things like list.pop(0), and not understand why it goes so slowly, compared to doing list.pop(). Abstractions always leak. But I wouldn't say that Python is flawed because it makes it easy to do list.pop(0), nor would I say Lisp is flawed because it makes it easy to use linked lists. From tjd at sfu.ca Sat May 7 01:57:54 2005 From: tjd at sfu.ca (Toby Donaldson) Date: Fri, 6 May 2005 16:57:54 -0700 Subject: [Edu-sig] Python for CS101 In-Reply-To: Message-ID: <004c01c55297$71d0b610$393957d1@surrey.sfu.ca> >> For instance, to write an efficient queue data structure (where adding >> and removing form the queue are always constant-time operations) in >> LISP/Scheme requires using arrays. > >Hi Toby, > >I don't think this is a valid criticism. If the point of using a queue is >to teach how to write an efficient data structure, is the target audience >really going to be beginners? Do beginners care about efficiency, to the >exclusion of all else? If beginners don't care about the efficiency of queues, then they need to learn otherwise. Performance is certainly not the only thing, but it was one of the most important things, especially for an object that is going to be re-used again and again. >What you said is also technically wrong: there are efficent ways to >implement queues with pure list structures. See: > > http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/210459 > >which is basically a translation of a Lisp-friendly queue class. Indeed, this is a neat trick for implementing queues with stacks. However, it's not the best implementation for simple fixed capacity queues where each add/remove operation is required to finish in constant time (as opposed to amortized constant time). I don't know any way to achieve that in LISP using only lists. >The discussion in the link above also shows that it's perfectly easy --- >and all too often likely --- for beginners to do silly things using >Python's lists too. On Python-tutor, we often do get beginners who will >do things like list.pop(0), and not understand why it goes so slowly, >compared to doing list.pop(). >Abstractions always leak. But I wouldn't say that Python is flawed >because it makes it easy to do list.pop(0), nor would I say Lisp is flawed >because it makes it easy to use linked lists. True. I would agree with this statement. The flaw in LISP is the fact that it requires *both* the use of lists and arrays to implement certain elementary algorithms in the best way, and that the lists and arrays have different interfaces. Perhaps "imperfection" is a nicer term than "flaw". :-) Toby From janc13 at gmail.com Sat May 7 02:31:20 2005 From: janc13 at gmail.com (JanC) Date: Sat, 7 May 2005 02:31:20 +0200 Subject: [Edu-sig] Python for CS101 In-Reply-To: <4273E078.4040405@sccs.swarthmore.edu> References: <4273ABF1.3050506@brynmawr.edu> <24d253d905043009316a861d6c@mail.gmail.com> <4273E078.4040405@sccs.swarthmore.edu> Message-ID: <984838bf05050617312b3350ac@mail.gmail.com> On 4/30/05, Dan Crosta wrote: > In fact, the only areas I think Python is *not* suitable are low-level > architecture-dependent programming. Our architecture class does > CPU/memory stress testing using C, and our operating systems classes > should also probably use it. There is Cleese, an experimental proof-of-concept OS, based on a "microkernel" that includes a python VM. -- JanC From john.zelle at wartburg.edu Sat May 7 05:47:13 2005 From: john.zelle at wartburg.edu (John Zelle) Date: Fri, 06 May 2005 22:47:13 -0500 Subject: [Edu-sig] Python for CS101 In-Reply-To: <004c01c55297$71d0b610$393957d1@surrey.sfu.ca> References: <004c01c55297$71d0b610$393957d1@surrey.sfu.ca> Message-ID: <427C3A41.4050003@wartburg.edu> Toby Donaldson wrote: >>>For instance, to write an efficient queue data structure (where adding >>>and removing form the queue are always constant-time operations) in >>>LISP/Scheme requires using arrays. >> >>Hi Toby, >> >>I don't think this is a valid criticism. If the point of using a queue is >>to teach how to write an efficient data structure, is the target audience >>really going to be beginners? Do beginners care about efficiency, to the >>exclusion of all else? > > > If beginners don't care about the efficiency of queues, then they need to > learn otherwise. Performance is certainly not the only thing, but it was one > of the most important things, especially for an object that is going to be > re-used again and again. > > >>What you said is also technically wrong: there are efficent ways to >>implement queues with pure list structures. See: >> >> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/210459 >> >>which is basically a translation of a Lisp-friendly queue class. > > > Indeed, this is a neat trick for implementing queues with stacks. > > However, it's not the best implementation for simple fixed capacity queues > where each add/remove operation is required to finish in constant time (as > opposed to amortized constant time). I don't know any way to achieve that in > LISP using only lists. > For the record, it's very easy in LISP to implement a Queue using a cons-pair with car pointing to the front of a linked list and cdr pointing to the back. Using such a structure, constant time enqueue and dequeue is trivial without arrays or amortized analysis. LISP allows one to easily build any linked structure you'd like. There is no restriction to a linear list with only a head (car) pointer. Of course implementing something like a queue which has state (side-effects) is not pure functional programming, but real LISP programmers don't worry too much about that. > >>The discussion in the link above also shows that it's perfectly easy --- >>and all too often likely --- for beginners to do silly things using >>Python's lists too. On Python-tutor, we often do get beginners who will >>do things like list.pop(0), and not understand why it goes so slowly, >>compared to doing list.pop(). > Interestingly, I recently needed a queue in Python and timed some alternatives. For run-of-the-mill work, the naive use of a list using append and pop(0) actually faired quite well for modest Q sizes. In any case, it is important at some point for Python suers to learn and understand the implications of Pythons continguous allocation. It's probably not crucial that the first queue they write be the most efficient one. Remember, premature optimization is the root of much evil. > >>Abstractions always leak. But I wouldn't say that Python is flawed >>because it makes it easy to do list.pop(0), nor would I say Lisp is flawed >>because it makes it easy to use linked lists. > > > True. I would agree with this statement. The flaw in LISP is the fact that > it requires *both* the use of lists and arrays to implement certain > elementary algorithms in the best way, and that the lists and arrays have > different interfaces. Sometimes a linked structure us the right one, sometimes a contiguous structure is better. Having both in LISP hardly seems like a design flaw. Python does not provide a built-in linked structure, but you can easily implement one yourself. Some would argue the lack of a built-in linked list is the flaw. If your argument is that both kinds of structures should have exactly the same interface, that adds to the beginner's confusiuon over efficiency that you argued above. By only providing the operations that are efficient for the particular structure, LISP helps the novice programmer use the more appropriate structure for a given task. I don't think this is a particularly compelling argument for Python over LISP. > > Perhaps "imperfection" is a nicer term than "flaw". :-) > > Toby > > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > > -- John M. Zelle, Ph.D. Wartburg College Professor of Computer Science Waverly, IA john.zelle at wartburg.edu (319) 352-8360 From tjd at sfu.ca Sat May 7 11:37:13 2005 From: tjd at sfu.ca (Toby Donaldson) Date: Sat, 07 May 2005 02:37:13 -0700 Subject: [Edu-sig] Python for CS101 In-Reply-To: <427C3A41.4050003@wartburg.edu> Message-ID: On 5/6/05 8:47 PM, "John Zelle" wrote: > > > Toby Donaldson wrote: >>>> For instance, to write an efficient queue data structure (where adding >>>> and removing form the queue are always constant-time operations) in >>>> LISP/Scheme requires using arrays. >>> >>> Hi Toby, >>> >>> I don't think this is a valid criticism. If the point of using a queue is >>> to teach how to write an efficient data structure, is the target audience >>> really going to be beginners? Do beginners care about efficiency, to the >>> exclusion of all else? >> >> >> If beginners don't care about the efficiency of queues, then they need to >> learn otherwise. Performance is certainly not the only thing, but it was one >> of the most important things, especially for an object that is going to be >> re-used again and again. >> >> >>> What you said is also technically wrong: there are efficent ways to >>> implement queues with pure list structures. See: >>> >>> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/210459 >>> >>> which is basically a translation of a Lisp-friendly queue class. >> >> >> Indeed, this is a neat trick for implementing queues with stacks. >> >> However, it's not the best implementation for simple fixed capacity queues >> where each add/remove operation is required to finish in constant time (as >> opposed to amortized constant time). I don't know any way to achieve that in >> LISP using only lists. >> > > For the record, it's very easy in LISP to implement a Queue using a > cons-pair with car pointing to the front of a linked list and cdr > pointing to the back. Using such a structure, constant time enqueue and > dequeue is trivial without arrays or amortized analysis. LISP allows one > to easily build any linked structure you'd like. There is no restriction > to a linear list with only a head (car) pointer. > > Of course implementing something like a queue which has state > (side-effects) is not pure functional programming, but real LISP > programmers don't worry too much about that. Thanks for pointing this out; I did a bit of searching on the web and found an implementation of what you are referring to. I'd never seen this before. I guess I should know better than to doubt what's possible in Common LISP. :-) Here's the code: (defun enqueue (obj queue) "Enqueue an object. Return the queue." (if (cdr queue) (setf (cdr (cdr queue)) (list obj) (cdr queue) (cdr (cdr queue))) (setf (cdr queue) (list obj) (car queue) (cdr queue))) queue) (defun dequeue (queue) "Dequeue an object. Return the object queued." (when (cdr queue) (prog1 (caar queue) (if (eq (cdr queue) (car queue)) (setf (car queue) nil (cdr queue) nil)) (setf (car queue) (cdr (car queue)))))) Again, I think it is still an example of a design flaw in LISP because it violates the precept "simple things should be done simply". > Interestingly, I recently needed a queue in Python and timed some > alternatives. For run-of-the-mill work, the naive use of a list using > append and pop(0) actually faired quite well for modest Q sizes. > > In any case, it is important at some point for Python suers to learn and > understand the implications of Pythons continguous allocation. It's > probably not crucial that the first queue they write be the most > efficient one. Remember, premature optimization is the root of much evil. I agree that optimization should come last, if at all. One could argue that in, say, C, the simple way to implement a fixed-sized queue is as a circular array. If you believe that, then I would suggest that is an example of good design: the simple solution to a simple problem is also the most efficient. >> >>> Abstractions always leak. But I wouldn't say that Python is flawed >>> because it makes it easy to do list.pop(0), nor would I say Lisp is flawed >>> because it makes it easy to use linked lists. >> >> >> True. I would agree with this statement. The flaw in LISP is the fact that >> it requires *both* the use of lists and arrays to implement certain >> elementary algorithms in the best way, and that the lists and arrays have >> different interfaces. > > Sometimes a linked structure us the right one, sometimes a contiguous > structure is better. Having both in LISP hardly seems like a design > flaw. Python does not provide a built-in linked structure, but you can > easily implement one yourself. Some would argue the lack of a built-in > linked list is the flaw. If one uses linked lists, then it is a flaw in Python. Personally, I have never needed a linked list in Python. > If your argument is that both kinds of structures should have exactly > the same interface, that adds to the beginner's confusiuon over > efficiency that you argued above. By only providing the operations that > are efficient for the particular structure, LISP helps the novice > programmer use the more appropriate structure for a given task. Interesting argument. Although in Common LISP the "nth" function retrieves list items in linear time, so inefficient list operations are provided. Do you think Python would be a better language for beginners if a fixed-size array data type was added to it that had a different interface than the current dynamic lists? Toby > I don't think this is a particularly compelling argument for Python over > LISP. From john.zelle at wartburg.edu Sat May 7 22:21:13 2005 From: john.zelle at wartburg.edu (John Zelle) Date: Sat, 07 May 2005 15:21:13 -0500 Subject: [Edu-sig] Python for CS101 In-Reply-To: References: Message-ID: <427D2339.8080500@wartburg.edu> Toby Donaldson wrote: > On 5/6/05 8:47 PM, "John Zelle" wrote: > >>For the record, it's very easy in LISP to implement a Queue using a >>cons-pair with car pointing to the front of a linked list and cdr >>pointing to the back. Using such a structure, constant time enqueue and >>dequeue is trivial without arrays or amortized analysis. LISP allows one >>to easily build any linked structure you'd like. There is no restriction >>to a linear list with only a head (car) pointer. >> >>Of course implementing something like a queue which has state >>(side-effects) is not pure functional programming, but real LISP >>programmers don't worry too much about that. > > > Thanks for pointing this out; I did a bit of searching on the web and found > an implementation of what you are referring to. I'd never seen this before. > I guess I should know better than to doubt what's possible in Common LISP. > :-) Here's the code: > > (defun enqueue (obj queue) > "Enqueue an object. Return the queue." > (if (cdr queue) > (setf (cdr (cdr queue)) (list obj) > (cdr queue) (cdr (cdr queue))) > (setf (cdr queue) (list obj) > (car queue) (cdr queue))) > queue) > > > (defun dequeue (queue) > "Dequeue an object. Return the object queued." > (when (cdr queue) > (prog1 > (caar queue) > (if (eq (cdr queue) > (car queue)) > (setf (car queue) nil > (cdr queue) nil)) > (setf (car queue) (cdr (car queue)))))) > > Again, I think it is still an example of a design flaw in LISP because it > violates the precept "simple things should be done simply". > This _is_ a simple implementation of an indefinitely long queue. A linked list with head and tail pointers is the classic way of solving this problem. You seem to have some bias against linked structures. They are not inherently more complicated than arrays, just different. > > > One could argue that in, say, C, the simple way to implement a fixed-sized > queue is as a circular array. If you believe that, then I would suggest that > is an example of good design: the simple solution to a simple problem is > also the most efficient. > > Ah, the key here is that you are restricting yourself to a fixed size queue. Arguably a circular array is the best solution. However, it is not necessarily a trivial implementation. As anyone who has actually implemented this will tell you, one has to be very careful about how full and empty conditions are handled. It's not hard, but it is subtle. I've seen many flawed queue implementations. > If one uses linked lists, then it is a flaw in Python. Personally, I have > never needed a linked list in Python. > I can't agree with this statement. There are many situations where a linked structure us the _right_ implementation of a particular abstraction. If you want an indefinitely large queue in Python with constant time operations, then a linked list is probably the best way to do it. Furthermore, it is very easy to implement this in Python. Using linked lists for this in no way illustrates any flaw in Python. The reason you may not have seen linked lists in Python is that the built-in continguous implementation is so good. Still, there are cases where reference-based linked structures are a good thing: ordered structures with constant time insertion, graphs, trees, sparse matricies (perhaps), etc. Sometimes, the linked list is entirely hidden in the logic of the problem. I once did a backtracking solution to n queens in Python and discovered only after the fact that I had actually built a linked list. > >>If your argument is that both kinds of structures should have exactly >>the same interface, that adds to the beginner's confusiuon over >>efficiency that you argued above. By only providing the operations that >>are efficient for the particular structure, LISP helps the novice >>programmer use the more appropriate structure for a given task. > > > Interesting argument. Although in Common LISP the "nth" function retrieves > list items in linear time, so inefficient list operations are provided. > True enough. I was only saying that your arguments seemed to be inconsistent. Not claiming that Common Lisp had necessarily taken this approach. > Do you think Python would be a better language for beginners if a fixed-size > array data type was added to it that had a different interface than the > current dynamic lists? > No. The operations that are efficient on a fixed size array are the same operations that are efficient on Python lists. For example, your fixed-sized (circular) queue can easily be implemented using a Python list. I think we agree that the "right" thing in this case is that programmers should be aware of what the Python list does and, when necessary, be able to optimize their code to use efficient operations. The important thing to keep in mind is that it is not a design flaw simply that a language makes it easy to write inefficient programs. This is ususally the sign of a higher-level language. It becomes easier to write an inefficient program simply because it is easier to write programs period. Again, the queue example shows this. It is absolutely trivial to implement using append and pop(0). If O(n) efficiency is good enough for the problem at hand, what's wrong with that? --John -- John M. Zelle, Ph.D. Wartburg College Professor of Computer Science Waverly, IA john.zelle at wartburg.edu (319) 352-8360 From ajsiegel at optonline.net Sun May 8 20:48:38 2005 From: ajsiegel at optonline.net (Arthur) Date: Sun, 08 May 2005 14:48:38 -0400 Subject: [Edu-sig] Python for CS101 Message-ID: <0IG600FV3POL6O@mta4.srv.hcvlny.cv.net> John writes - >Of course implementing something like a queue which has state >(side-effects) is not pure functional programming, but real LISP >programmers don't worry too much about that. John sounds like a real LISP programmer (he's being hiding that from us until now ;) - and I am interpreting him to be confirming the point Peter Seibel is making in the book I referenced, i.e. that many folks know of LISP via Scheme and therefore tend to understand LISP to be more purist functional than it is in practice. My impetus in approaching LISP would be to become a better Python programmer (presuming that it is awfully late in the game to try to become anything of a LISP programmer), and that does have something to do, in my mind, with more exposure to functional programming. But concluded that Scheme sounded a bit austere on this account, and taking Seibel at his word, I would be hoping to get, through LISP, to functional thinking within a multi-paradigm context - which should be easier to translate into Pythonic thinking . Almost thought I'd get away with skipping this step - with Guido talking about stripping out much of the functional syntax from the Python core. But then decorators come onto the scene. And while they are not of great practical importance to me at this stage, it is of some importance to me - on general principle - to feel less stupid when staring at one. The LISP route, is I am sure, a very, very (very, very) long way around to solving this immediate issue. But, again, learning is funny. And I go by instinct, which seems to be telling me that the long way around is the best available shortcut in this particular case. My instincts are often wrong, BTW. But I am convinced they beat the average, with the average being listening to people who don't happen to be me. Which is why to the extent I am educated at all - past some baseline - it has necessarily been mostly self-education. Which makes me more dependant, not less, on resources folks are kind enough to share. But it's also true that I have had to work myself to a point where the $60 for a book that would help is not something I need to ruminate over all too much. It is unfortunate that there were more brain cells firing during the considerable time when that was not true. Another example of youth being wasted on the wrong age group. Art From john.zelle at wartburg.edu Mon May 9 00:02:14 2005 From: john.zelle at wartburg.edu (John Zelle) Date: Sun, 08 May 2005 17:02:14 -0500 Subject: [Edu-sig] Python for CS101 In-Reply-To: <0IG600FV3POL6O@mta4.srv.hcvlny.cv.net> References: <0IG600FV3POL6O@mta4.srv.hcvlny.cv.net> Message-ID: <427E8C66.1080004@wartburg.edu> Arthur wrote: > John writes - > > >>Of course implementing something like a queue which has state >>(side-effects) is not pure functional programming, but real LISP >>programmers don't worry too much about that. > > > John sounds like a real LISP programmer (he's being hiding that from us > until now ;) - and I am interpreting him to be confirming the point Peter > Seibel is making in the book I referenced, i.e. that many folks know of LISP > via Scheme and therefore tend to understand LISP to be more purist > functional than it is in practice. > OK, OK, I'm somewhat busted. My background in AI has caused me to become better in LISP than your average bear, but I would never claim to be a "real LISP programmer." The absolute truth of the matter is that I once _was_ a real Prolog programmer. If you really want to expand your horizons, you can't beat Prolog. It's as close as we've gotten to God's own language. > My impetus in approaching LISP would be to become a better Python programmer > (presuming that it is awfully late in the game to try to become anything of > a LISP programmer), and that does have something to do, in my mind, with > more exposure to functional programming. But concluded that Scheme sounded > a bit austere on this account, and taking Seibel at his word, I would be > hoping to get, through LISP, to functional thinking within a multi-paradigm > context - which should be easier to translate into Pythonic thinking . > I happen to think that LISP and Python are very similar languages. Python's syntax is easier to read, and LISP's is better/easier for meta-programming. The underlying model is very much the same. --John -- John M. Zelle, Ph.D. Wartburg College Professor of Computer Science Waverly, IA john.zelle at wartburg.edu (319) 352-8360 From chuck at freshsources.com Mon May 9 01:27:14 2005 From: chuck at freshsources.com (Chuck Allison) Date: Sun, 8 May 2005 17:27:14 -0600 Subject: [Edu-sig] Python for CS101 In-Reply-To: <427E8C66.1080004@wartburg.edu> References: <0IG600FV3POL6O@mta4.srv.hcvlny.cv.net> <427E8C66.1080004@wartburg.edu> Message-ID: <1276485588.20050508172714@freshsources.com> JZ> OK, OK, I'm somewhat busted. My background in AI has caused me to become JZ> better in LISP than your average bear, but I would never claim to be a JZ> "real LISP programmer." The absolute truth of the matter is that I once JZ> _was_ a real Prolog programmer. If you really want to expand your JZ> horizons, you can't beat Prolog. It's as close as we've gotten to God's JZ> own language. Ah, that explains why it is such a mystery! :-) Prolog: simple but impenetrable! It is a perfect example of how being simple isn't always readable. Or as a certain web site says: Prolog: You tell your program that you want to be shot in the foot. The program figures out how to do it, but the syntax doesn't permit it to explain it to you. >> My impetus in approaching LISP would be to become a better Python programmer >> (presuming that it is awfully late in the game to try to become anything of >> a LISP programmer), and that does have something to do, in my mind, with >> more exposure to functional programming. But concluded that Scheme sounded >> a bit austere on this account, and taking Seibel at his word, I would be >> hoping to get, through LISP, to functional thinking within a multi-paradigm >> context - which should be easier to translate into Pythonic thinking . >> JZ> I happen to think that LISP and Python are very similar languages. JZ> Python's syntax is easier to read, and LISP's is better/easier for JZ> meta-programming. The underlying model is very much the same. When I first saw Python a few years ago (I met Guido at Software Development Conference about 5 years ago or so) I thought it was just Lisp in sheep's clothing. My background in Lisp (and Scheme!) helped me grasp Python like lightning (I'm about as old as John, so "in our day" Lisp was something one should know :-). I don't envy anyone who goes the other direction. But it will certainly put hair on your chest. I mourn the loss of functional programming features in Python. -- Best regards, Chuck From mholthouse at westwood.k12.ma.us Mon May 9 02:09:10 2005 From: mholthouse at westwood.k12.ma.us (M Holthouse) Date: Sun, 08 May 2005 20:09:10 -0400 Subject: [Edu-sig] Python for CS101 In-Reply-To: Message-ID: <4.3.2.7.2.20050508200638.00c806f8@pop.rcn.com> I hope you all know this old chestnut has been updated for Python: You shoot yourself in the foot and everything goes so smoothly that you go ahead and shoot yourself in the other foot, then your leg, then your torso, and then your head. http://linux.sgms-centre.com/howto/shootfoot.php At 07:25 PM 5/8/2005 -0400, Chuck Allison wrote: >Prolog: You tell your program that you want to be shot in the foot. The > program figures out how to do it, but the syntax doesn't permit > it to explain it to you. From urnerk at qwest.net Mon May 9 02:49:35 2005 From: urnerk at qwest.net (Kirby Urner) Date: Sun, 8 May 2005 17:49:35 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <427E8C66.1080004@wartburg.edu> Message-ID: <20050509004937.7D0FF1E4003@bag.python.org> Interesting thread this, about LISP, encoding data structures and so on. I know Python has a separate module for queues, so I'll have to revisit why i.e. what're its capabilities over and above appending-to-end/popping-from-front of a list. Back to my math thread, in my opinion kids are beset with sets, to the exclusion of other data structures, and this is a mistake. Except with the rollback of SMSG (aka "new math") even the union and intersection of sets is less dwelt upon, and that isn't right either (Venn Diagrams and SQL remain in the queue as deserving of repeated encounter). The exalted status of sets in 1960s USA grade school math traces back to Ivory Tower innovations by Russell/Whitehead et al in the UK, and their attempt to put arithmetic on a "secure footing" using set concepts. This footing became even more convoluted with Cantor. Wittgenstein, a hero of mine, was always in the dissenting camp, thinking set theory "underpins" arithmetic the way a painted foundation supports a painted tower, i.e. it doesn't really. I mean, one can always come up with elaborate new games, but to suppose you've gotten "under" 2 + 2 = 4 is just a metaphor gone haywire. Real life underwrites basic arithmetic, not the Ivory Tower. So it's not surprising, given all the Wittgenstein worship that seems to emanate from my corner, that I'm eager to make sets just one more data structure among many, and to use their unions and intersections as a lead-in to *other* significant and interesting data structures: queues, stacks, lists (linked and contiguous), trees and networks (hypertoons are networks). Purists might complain that I'm trying to ruin the basic math curriculum, by polluting it with CS concepts. But I say I'm trying to *rescue* set concepts from obscurity and neglect, by integrating them into a nutritious and wholesome diet featuring a wider variety of data structures. This is healthy stuff because: (a) we want kids from an early age to get in the habit of applying (general) abstractions to (special case) concrete situations [1] and (b) if you do this with Python, you get to make the experiences interactive, which tends to up the fun factor. Most kids can think of queues from their concrete experiences of waiting in line. "First come first serve" is another name for it. But then there's giving cuts. The kid in front of you is friends with this other kid, and so a kind of linked list thing happens, where you insert elements because of a pre-existing relationship. In a more formal/public arena, "giving cuts" isn't cool, e.g. at the bank or supermarket. So already we're into sociology and anthropology here. Kirby [1] Bucky's influence evident in this sentence -- another philosopher-hero I tend to lionize. From lang at ms.chinmin.edu.tw Mon May 9 05:10:00 2005 From: lang at ms.chinmin.edu.tw (Greg Matheson) Date: Mon, 9 May 2005 11:10:00 +0800 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050509004937.7D0FF1E4003@bag.python.org> References: <427E8C66.1080004@wartburg.edu> <20050509004937.7D0FF1E4003@bag.python.org> Message-ID: <20050509031000.GA1359@ms.chinmin.edu.tw> On Sun, 08 May 2005, Kirby Urner wrote: > The exalted status of sets in 1960s USA grade school math traces back to > Ivory Tower innovations by Russell/Whitehead et al in the UK, and their > attempt to put arithmetic on a "secure footing" using set concepts. This > footing became even more convoluted with Cantor. > Wittgenstein, a hero of mine, was always in the dissenting camp, thinking > set theory "underpins" arithmetic the way a painted foundation supports a > painted tower, i.e. it doesn't really. Can you say some more about that? I thought Wittgenstein was a protege of Russell, and changed his mind later. Was he always claiming the emperor had no clothes? > Purists might complain that I'm trying to ruin the basic math curriculum, by > polluting it with CS concepts. But I say I'm trying to *rescue* set > concepts from obscurity and neglect, by integrating them into a nutritious > and wholesome diet featuring a wider variety of data structures. On the other side, at the college level, there is the math-thinking list of computer science instructors trying to increase the rigor of the CS curriculum. URL: http://www.cs.geneseo.edu/mailman/listinfo/math-thinking/ -- Greg Matheson, Taiwan From urnerk at qwest.net Mon May 9 05:34:01 2005 From: urnerk at qwest.net (Kirby Urner) Date: Sun, 8 May 2005 20:34:01 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050509031000.GA1359@ms.chinmin.edu.tw> Message-ID: <20050509033405.097561E4003@bag.python.org> > > Wittgenstein, a hero of mine, was always in the dissenting camp, > > thinking set theory "underpins" arithmetic the way a painted foundation > > supports a painted tower, i.e. it doesn't really. > > Can you say some more about that? I thought Wittgenstein was a > protege of Russell, and changed his mind later. Was he always > claiming the emperor had no clothes? Hey, that's a good point and I'm inclined to back-pedal a bit. Yes, he *was* a prot?g? of Russell's, though I don't know to what extent he ever bought into R&W's program to formalize mathematics ala Principia. His goal in the Tractatus seemed far less positivist -- he was more a "logical negativist" in that phase of his career, into showing how *little* could be said -- but he certainly knew how to wield symbolic logic like a pro, and that's what earned him Russell's respect. Then he veered off in a different direction, losing Russell, but making a name for himself nonetheless. And that's when we get to his famous "painted foundation" analogy (in 'Remarks on the Foundations of Mathematics'). > > Purists might complain that I'm trying to ruin the basic math > > curriculum, by polluting it with CS concepts. But I say I'm trying to > > *rescue* set concepts from obscurity and neglect, by integrating them > > into a nutritious and wholesome diet featuring a wider variety of data > > structures. > > On the other side, at the college level, there is the > math-thinking list of computer science instructors trying to > increase the rigor of the CS curriculum. > > URL: http://www.cs.geneseo.edu/mailman/listinfo/math-thinking/ > > -- > Greg Matheson, Taiwan Thanks for the link, will follow. I'm very much the pragmatist in making these proposals: what mix of topics, skills, habits of thought, will keep the most doors open longest, plus anticipate future needs (same thing really)? The insular world of math-teaching culture keeps it sheltered from much that goes on outside, which is why from my point of view it's thick with dust and barely relevant to kids in this highly technological age. No Python? No rhombic dodecahedron? How can this *possibly* be considered an early 21st century curriculum? Kirby From chuck at freshsources.com Mon May 9 18:44:36 2005 From: chuck at freshsources.com (Chuck Allison) Date: Mon, 9 May 2005 10:44:36 -0600 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050509031000.GA1359@ms.chinmin.edu.tw> References: <427E8C66.1080004@wartburg.edu> <20050509004937.7D0FF1E4003@bag.python.org> <20050509031000.GA1359@ms.chinmin.edu.tw> Message-ID: <1015447544.20050509104436@freshsources.com> GM> On the other side, at the college level, there is the GM> math-thinking list of computer science instructors trying to GM> increase the rigor of the CS curriculum. I see this as a Good Thing, but not for IT or IS curricula - just CS. We have recently increased the rigor of our CS curriculum. We make our students, in addition to taking 2 semesters each of calculus and physics, and a semester of Discrete Structures, take one of 1) Analysis of Algorithms 2) Numerical Software Engineering (my class) I just finished the latter last week and will talk about it at an upcoming academic conference. I made it very applied, and they complained a little about it being mathy, but hey - it was good for them! Now they will be responsible the next time they use floating-point! -- Best regards, Chuck From ajsiegel at optonline.net Mon May 9 19:10:37 2005 From: ajsiegel at optonline.net (ajsiegel@optonline.net) Date: Mon, 09 May 2005 13:10:37 -0400 Subject: [Edu-sig] K-16 CS/math hybrid Message-ID: <2c375bc2c37a44.2c37a442c375bc@optonline.net> From: Chuck Allison > > I just finished the latter last week and will talk about it at an > upcoming academic conference. I made it very applied, and they > complained a little about it being mathy, but hey - it was good for > them! Now they will be responsible the next time they use > floating-point! Part of my hysteria here - for those who have been long-timers to the list and therefore to my hysterias - has been in sensing some effort on the part of the Python community as positioning Python as the tool to take the rigor out of a programming curricula. And wanting no part of it. IMO: a) it doesn't b) it shouldn't But certainly it *can* redirect a rigorous approach into more productive channels than other alternatives: IMO: a) it can b) it should Art From urnerk at qwest.net Mon May 9 20:17:46 2005 From: urnerk at qwest.net (Kirby Urner) Date: Mon, 9 May 2005 11:17:46 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <2c375bc2c37a44.2c37a442c375bc@optonline.net> Message-ID: <20050509181747.523A71E4003@bag.python.org> > Part of my hysteria here - for those who have been long-timers to the > list and therefore to my hysterias - has been in sensing some effort > on the part of the Python community as positioning Python as the > tool to take the rigor out of a programming curricula. I don't sense this, especially given Alex Martelli's influence (I wonder how he's liking the new job at Google BTW). And Guido is a very clear thinker, meaning the level of metacognition behind Python's design is quite high. Tim Peters. What's to worry? Beyond providing a strong/usable language to the world, I don't hold the Python community responsible (as a community). If I write some dumb watered-down stuff, unworthy of the great CS tradition, that's just me. > And wanting no part of it. > > IMO: > > a) it doesn't > b) it shouldn't Plus we're not always interested in "programming curricula" (for the sake of programming). If the goal is to get physics majors to ramp up in some VPython context, to where they can explore mechanics/kinetics interactively, within a day or two, who cares if they're not using classes/objects to their maximum advantage, and don't write the tightest imperative code. That's not the point. The point is to learn physics. Python is good for that too. It's unfair to criticize quick and dirty code that pretends to be nothing more. There's room in this world for one-off scripts that get the job done. We all write "code to throw away" or should. Making everything you write read like some CS text book example is a waste of precious time. What I'm wondering is how many CS curricula emphasize team approaches, e.g. teach extreme programming techniques, other ways to manage largish, scalable projects. This should come earlier rather than later, so some appreciation for the conventions of teamwork start tickling in (e.g. why should I waste time documenting, writing a lot of test? -- because *you* aren't the only reader of this code, duh). I think Python has the potential to give us *better* CS curricula than we've had before, and these better curricula will do more to counter solipsistic programming habits. > But certainly it *can* redirect a rigorous approach into more > productive channels than other alternatives: > > IMO: > > a) it can > b) it should > > Art I big step towards "rigor" from just plain programming is knowing how to (a) read and understand O-notation (that's the first step) and then (b) figure out the efficiency of an algorithm and express it using O-notation. CS majors tend to know how to do that, while non-CS majors maybe don't, or are only up to step (a). At Knuth's web site, he wonders if O-notation should be phased in to regular calculus more successfully. Probably. You can use it to express the margin of uncertainty, e.g. the fuzz factor, after writing out some value as an infinite sequence. Kirby From chuck at freshsources.com Mon May 9 21:06:34 2005 From: chuck at freshsources.com (Chuck Allison) Date: Mon, 9 May 2005 13:06:34 -0600 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <2c375bc2c37a44.2c37a442c375bc@optonline.net> References: <2c375bc2c37a44.2c37a442c375bc@optonline.net> Message-ID: <666596304.20050509130634@freshsources.com> aon> Part of my hysteria here - for those who have been long-timers to the aon> list and therefore to my hysterias - has been in sensing some effort aon> on the part of the Python community as positioning Python as the aon> tool to take the rigor out of a programming curricula. aon> And wanting no part of it. aon> IMO: aon> a) it doesn't aon> b) it shouldn't aon> But certainly it *can* redirect a rigorous approach into more aon> productive channels than other alternatives: aon> IMO: aon> a) it can aon> b) it should Agreed. I currently teach Python in a senior-level Programming Languages class - we stand in awe of its intelligent design. That's the beauty of Python (as we all know) - it is easy to learn and use, yet keeps the most rigorous expert interested and excited forever. -- Best regards, Chuck From Scott.Daniels at Acm.Org Mon May 9 21:25:37 2005 From: Scott.Daniels at Acm.Org (Scott David Daniels) Date: Mon, 09 May 2005 12:25:37 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050509181747.523A71E4003@bag.python.org> References: <2c375bc2c37a44.2c37a442c375bc@optonline.net> <20050509181747.523A71E4003@bag.python.org> Message-ID: Kirby Urner wrote: > It's unfair to criticize quick and dirty code that pretends to be nothing > more. There's room in this world for one-off scripts that get the job done. > We all write "code to throw away" or should. Making everything you write > read like some CS text book example is a waste of precious time. While I know enough about Kirby to know I'm hitting a straw man here: There is virtue in writing clear simple code even for one-off scripts. It is the same virtue as that of spelling notes to yourself correctly; practice improves your skills. > What I'm wondering is how many CS curricula emphasize team approaches, e.g. > teach extreme programming techniques, other ways to manage largish, scalable > projects. This should come earlier rather than later, so some appreciation > for the conventions of teamwork start tickling in (e.g. why should I waste > time documenting, writing a lot of test? -- because *you* aren't the only > reader of this code, duh). Actually, I think this is a flaw in many academic endeavors. Grading group efforts appropriately is harder than measuring individual effort. We tend to fall too easily into a competitive model rather than a cooperative one. When I was at Penn, the Wharton School was unique in their (mostly successful) efforts to teach how to work effectively in teams. --Scott David Daniels Scott.Daniels at Acm.Org From john.zelle at wartburg.edu Mon May 9 21:53:52 2005 From: john.zelle at wartburg.edu (John Zelle) Date: Mon, 09 May 2005 14:53:52 -0500 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050509181747.523A71E4003@bag.python.org> References: <20050509181747.523A71E4003@bag.python.org> Message-ID: <427FBFD0.3020407@wartburg.edu> Kirby Urner wrote: > Plus we're not always interested in "programming curricula" (for the sake of > programming). If the goal is to get physics majors to ramp up in some > VPython context, to where they can explore mechanics/kinetics interactively, > within a day or two, who cares if they're not using classes/objects to their > maximum advantage, and don't write the tightest imperative code. That's not > the point. The point is to learn physics. Python is good for that too. > > It's unfair to criticize quick and dirty code that pretends to be nothing > more. There's room in this world for one-off scripts that get the job done. > We all write "code to throw away" or should. Making everything you write > read like some CS text book example is a waste of precious time. > This is an issue I've been thinking quite a bit about recently. In my own mind, I make a distinction between "programming to learn" vs. "learning to program." A lot of the discussion of programming on this forum involves using programs to investigate other topics (physics, statistics, geometry, etc.) This is pure "programming to learn." The point here is not necessarily to write industrial strength code, but to learn more effectively and deeply through the programming process. Certainly, a good deal of the CS curriculum is aimed at the latter goal of "learning to program." That is teaching students how to create well-designed, properly documented, elegant, efficient, extendable, and maintainable software. However, I think that too much emphasis on this can be a bad thing, even in CS programs. In the introductory classes, we should try to foster a spirit of inquiry and encourage our students to experiment and learn through doing. That hacker's spirit can be drowned out if it's all about the "mechanics" of "proper" programming. Programming is a critical foundation of CS, but CS is much more than (just?) learning to program. The "much more" is amenable to, and IMHO should be investigated through "programming to learn." > What I'm wondering is how many CS curricula emphasize team approaches, e.g. > teach extreme programming techniques, other ways to manage largish, scalable > projects. This should come earlier rather than later, so some appreciation > for the conventions of teamwork start tickling in (e.g. why should I waste > time documenting, writing a lot of test? -- because *you* aren't the only > reader of this code, duh). I think virtually all curricula are now doing this at some point. Again, I'm not sure it's something one wants to dwell on too much in the very first classes. You really can't appreciate many of the techniques for dealing with larger projects, things like design by contract and design patterns until you are working on projects where those techniques actually have payoff. Otherwise, it's just extra burden up front and it stifles student productivity and excitement. One exception I would definitely make to this observation is test-driven development. I think this is a technique that can be addressed early-on and actually helps students contruct even fairly simple programs. > I think Python has the potential to give us *better* CS curricula than we've > had before, and these better curricula will do more to counter solipsistic > programming habits. Obviously, I agree that Python has a lot to offer. I see two main contributions. By making it easier to write programs, we can get a lot more programming to learn both in the CS curriculum and elsewhere. The more students program, the better they become at it. The second real advantage is that Python allows students to create much more sophisticated programs in a given amount of time. That provides CS educators with a much better platform for introducing the techniques needed for programming in the large. --John -- John M. Zelle, Ph.D. Wartburg College Professor of Computer Science Waverly, IA john.zelle at wartburg.edu (319) 352-8360 From urnerk at python.org Mon May 9 23:24:37 2005 From: urnerk at python.org (Kirby Urner) Date: Mon, 9 May 2005 14:24:37 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: Message-ID: <20050509212437.B6C9D1E4003@bag.python.org> > While I know enough about Kirby to know I'm hitting a straw man here: > There is virtue in writing clear simple code even for one-off scripts. > It is the same virtue as that of spelling notes to yourself correctly; > practice improves your skills. > Yes, and Python actually helps at least with the indentation part, plus reduces clutter overall, so you start out a couple of steps ahead. We agree that one-offs are an opportunity -- give it your best shot. But don't imagine a set of harsh judges going over your code with a fine toothed comb, wanting to peer review everything. That's too paralyzing an image, and will keep some students from ever getting the fun that's in programming. Connecting back to "programming for the fun of it" thread -- don't paralyze yourself with fears about what others will think (this is a common reason for not going open source with interesting apps too; the author is just too embarrassed to expose code to a community -- yet that's such a good way to learn, allowing others to improve on what you've done). Programming without a lot of ego is another way of stating the goal. Don't be so attached to your code that the idea of other people improving/changing it drives you crazy. You should *want* them to do that. > Actually, I think this is a flaw in many academic endeavors. Grading > group efforts appropriately is harder than measuring individual effort. > We tend to fall too easily into a competitive model rather than a > cooperative one. When I was at Penn, the Wharton School was unique in > their (mostly successful) efforts to teach how to work effectively in > teams. > > --Scott David Daniels > Scott.Daniels at Acm.Org Yes, your experience helps confirm my sense that CS needs work in this area. Kirby From urnerk at qwest.net Tue May 10 00:20:12 2005 From: urnerk at qwest.net (Kirby Urner) Date: Mon, 9 May 2005 15:20:12 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <427FBFD0.3020407@wartburg.edu> Message-ID: <20050509222011.BA0A91E4336@bag.python.org> > This is an issue I've been thinking quite a bit about recently. In my > own mind, I make a distinction between "programming to learn" vs. > "learning to program." A lot of the discussion of programming on this > forum involves using programs to investigate other topics (physics, > statistics, geometry, etc.) This is pure "programming to learn." The > point here is not necessarily to write industrial strength code, but to > learn more effectively and deeply through the programming process. > This is a valid and memorable distinction: learning to program vs. programming to learn. CS is tilted more toward the former, but shouldn't shy away from investing in the latter. If you're actually going to go out there as a contract programmer or some such, you'll be spending a lot of time trying to master new knowledge domains, even though you're already pretty good as a programmer. > Programming is a critical foundation of CS, but CS is much more than > (just?) learning to program. The "much more" is amenable to, and IMHO > should be investigated through "programming to learn." Indeed, the fun I've had as a programmer over the years stems from popping up inside myriad disparate organizations and getting to wrap my brain around these various systems: registration for summer camp, membership/donors, clinical data from heart operations and so on and on. That last challenge got me into operating rooms, complete with mask, smock, hair and shoe covers (and even a patient on the table a couple of times, though my code had nothing directly to do with real time life-support praise Allah). > I think virtually all curricula are now doing this at some point. Again, > I'm not sure it's something one wants to dwell on too much in the very > first classes. You really can't appreciate many of the techniques for > dealing with larger projects, things like design by contract and design > patterns until you are working on projects where those techniques > actually have payoff. Otherwise, it's just extra burden up front and it > stifles student productivity and excitement. One exception I would > definitely make to this observation is test-driven development. I think > this is a technique that can be addressed early-on and actually helps > students contruct even fairly simple programs. I mostly agree. However I think early exposure to "war stories" is good, i.e. disasters or complications that arose from *not* managing collaboration issues well. Students absorb some of the culture and ethics, some of the history. In broad brush strokes, why was the "goto" a bad idea? What problems did "structured programming" solve? Why is object oriented programming considered a positive development (except by a few dissidents)? Per my "math through storytelling" thread, I'm a big fan of teaching through narratives relaying real world experience. My friend Ron tells about the time some coders brought him several pages of MUMPS code, mostly punctuation marks (each one a command), with white space significant. It was all one line of code, wrapped. Something like that. The coders wanted him to help find a bug. It was at that moment Ron realized he needed another job. Some languages don't scale well. What's exciting to me about computers is it's an area where humans, notorious for not getting along, especially politically and religiously, have co-created some awesomely complicated yet working technology. It's a metaphor for civilization itself. And it didn't get this sophisticated without people skills (geeks aren't without people skills, they're just very good at communicating technology to other geeks). Kirby From tjd at sfu.ca Tue May 10 00:31:21 2005 From: tjd at sfu.ca (Toby Donaldson) Date: Mon, 9 May 2005 15:31:21 -0700 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 9 In-Reply-To: Message-ID: <002901c554e6$da7acf60$393957d1@surrey.sfu.ca> > If one uses linked lists, then it is a flaw in Python. Personally, I have > never needed a linked list in Python. > > I can't agree with this statement. :-) You must know something about my programs that I don't! > There are many situations where a > linked structure us the _right_ implementation of a particular > abstraction. > > If you want an indefinitely large queue in Python with > constant time operations, then a linked list is probably the best way to > do it. Ah. Your willingness to settle with "probably the best" in this instance explains much of what we disagree about. I am not saying you are disinterested in performance or not interested in doing the "best" or "right" thing. I am not making a universal claim that performance is the most important thing above and beyond all other concerns. Nor am I saying that it's not perfectly acceptable to settle for "good enough" performance or quality if that's appropriate. What I am saying is that, for the case of a queue and similar utility data structures and algorithms that can be frequently used in many different programs, *I* am *not* happy with anything less than the best possible performance that can be achieved on the machine (not the *language*, the *machine*) I run it on. *I* do not want my machine wasting *any* time on useless overhead. > Furthermore, it is very easy to implement this in Python. Using > linked lists for this in no way illustrates any flaw in Python. :-) Do you know anyone who claims this? > The reason you may not have seen linked lists in Python is that the > built-in continguous implementation is so good. Still, there are cases > where reference-based linked structures are a good thing: ordered > structures with constant time insertion, graphs, trees, sparse matricies > (perhaps), etc. Sometimes, the linked list is entirely hidden in the > logic of the problem. I once did a backtracking solution to n queens in > Python and discovered only after the fact that I had actually built a > linked list. :-) Gee Dr. Science! Linked lists are cool! > > Do you think Python would be a better language for beginners if a fixed size > > array data type was added to it that had a different interface than the > > current dynamic lists? > > > > No. Good. Can you explain why it is a good thing for LISP? > The important thing to keep in mind is that it is not a design flaw > simply that a language makes it easy to write inefficient programs. So long as you don't need to write programs for use in the real world! > This is ususally the sign of a higher-level language. "the" sign? It's certainly possible to write inefficient programs in low-level languages. Constructs like functions, loops, if-statements, classes, etc. are a more accurate indicator. > It becomes easier to > write an inefficient program simply because it is easier to write > programs period. Again, the queue example shows this. It is absolutely > trivial to implement using append and pop(0). Well, in a Turing-complete language I could simulate any computation by doing it on a Turing machine or in the lambda calculus (speaking of LISP :-)), so obviously any powerful enough language allows you to write simple programs in a complex way. My point is that if a language *only* allows for an inefficient implementation of something (or makes it too difficult to achieve), then it is flawed. Having to write an assembly language module or use some other special tool is fine, but I would prefer the language to do it itself. Maybe *you* don't care about that particular thing, but for someone who *does*, it is a real and significant problem that you can't talk away. > If O(n) efficiency is good enough for the problem at hand, what's wrong > with that? Nothing. But what if it's not good enough? As you know, O-notation only partially orders algorithms by efficiency, and doesn't distinguish between algorithms of the same order. It's no good for deciding which of two O(n) algorithms is better. This is why, for instance, Knuth precisely counts assembly-language steps in his algorithm analyses, and why programmers developing algorithms and data structures for the real world resort to empirical experiments. Performance is of course not the only thing, but it is important, often vital. Especially in the real world. Remember, Knuth said "premature optimization is the root of all evil". Don't ignore the word "premature". Knuth, in particular, is keenly interested in optimization. Anyways, this is all getting pretty far a field from Python education. Toby From anna at aleax.it Tue May 10 01:07:41 2005 From: anna at aleax.it (Anna Martelli Ravenscroft) Date: Mon, 09 May 2005 16:07:41 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050509033405.097561E4003@bag.python.org> References: <20050509033405.097561E4003@bag.python.org> Message-ID: <427FED3D.4070508@aleax.it> Kirby Urner wrote: > I'm very much the pragmatist in making these proposals: what mix of topics, > skills, habits of thought, will keep the most doors open longest, plus > anticipate future needs (same thing really)? > > The insular world of math-teaching culture keeps it sheltered from much that > goes on outside, which is why from my point of view it's thick with dust and > barely relevant to kids in this highly technological age. > > No Python? No rhombic dodecahedron? How can this *possibly* be considered > an early 21st century curriculum? > Just a follow-up on the math and programming interaction: I was brushing up on algebra for a placement test for the local community college (yes - I'm finally going to go get my degree...) and while I was studying, my brain kept coding python in the background... I kept seeing things in terms of "how could I code this?" [btw - yes, I passed.] Just thought it was amusing to see how python has influenced my thinking. Anna From ajsiegel at optonline.net Tue May 10 02:07:05 2005 From: ajsiegel at optonline.net (Arthur) Date: Mon, 09 May 2005 20:07:05 -0400 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050509181747.523A71E4003@bag.python.org> Message-ID: <0IG800B18Z3HNX@mta5.srv.hcvlny.cv.net> > From: edu-sig-bounces+ajsiegel=optonline.net at python.org [mailto:edu-sig- > Subject: Re: [Edu-sig] K-16 CS/math hybrid > > Part of my hysteria here - for those who have been long-timers to the > > list and therefore to my hysterias - has been in sensing some effort > > on the part of the Python community as positioning Python as the > > tool to take the rigor out of a programming curricula. > > I don't sense this, especially given Alex Martelli's influence (I wonder > how > he's liking the new job at Google BTW). And Guido is a very clear > thinker, > meaning the level of metacognition behind Python's design is quite high. > Tim Peters. What's to worry? I know I'm probably being oversensitive, but it sounds to me like you are sending me off to the psychiatrist - again. Perhaps my perception is that the metacogators have overreached, at times. Their rigor never being in question. The question left open - more than I thought reasonable - being the extent to which their rigor would obviate my need for my own. The issue is inherent in the circumstances. If programming is so powerful - why can't the folks really good at it make it so it isn't so damn hard to learn. Can't they whip something up that makes it easy. It they can't - how powerful is the practice - really. And if it ain't powerful in this way, why would I waste my time on it. *My* answer is "please don't", but please do go away and please don't come back. But I am a hard ass. And others seem to think there are better ways to respond. Art From anna at aleax.it Tue May 10 02:40:55 2005 From: anna at aleax.it (Anna Martelli Ravenscroft) Date: Mon, 09 May 2005 17:40:55 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <0IG800B18Z3HNX@mta5.srv.hcvlny.cv.net> References: <0IG800B18Z3HNX@mta5.srv.hcvlny.cv.net> Message-ID: <42800317.9080004@aleax.it> Arthur wrote: > The issue is inherent in the circumstances. If programming is so powerful > - why can't the folks really good at it make it so it isn't so damn hard to > learn. Can't they whip something up that makes it easy. It they can't - how > powerful is the practice - really. And if it ain't powerful in this way, > why would I waste my time on it. > Are you sure that's what they're saying and not just what you're hearing? ;-) > *My* answer is "please don't", but please do go away and please don't come > back. > > But I am a hard ass. > > And others seem to think there are better ways to respond. Depends on what the real question is, I think. What I hear a lot is: "what useful stuff can I do with this and how much do I have to learn in order to do that?" - which is a very different question but can sound very similar, often because it's phrased as: "Why do I want to learn this?" or "what's it good for?" Unfortunately the answer this question often gets is: "If you don't know already, go away." My response is to help them figure out what it's good for, for *them*. If they don't want to bother after that, then yep - they should go away. But if they're willing to at least *ask*, then they deserve a better answer, imho. Anna From dyoo at hkn.eecs.berkeley.edu Tue May 10 03:26:29 2005 From: dyoo at hkn.eecs.berkeley.edu (Danny Yoo) Date: Mon, 9 May 2005 18:26:29 -0700 (PDT) Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 9 In-Reply-To: <002901c554e6$da7acf60$393957d1@surrey.sfu.ca> Message-ID: On Mon, 9 May 2005, Toby Donaldson wrote: > > If one uses linked lists, then it is a flaw in Python. Personally, I > > have never needed a linked list in Python. > > > > I can't agree with this statement. > > :-) You must know something about my programs that I don't! Hi Toby, I have a bad feeling this is straying away even more from the educational aspect of this thread, but let me take one more detour. I think that you're arguing that linked structure is irrelevent to Python programmers, and that students should not learn about it. Does that sound right, or would you limit the argument simply to linear linked lists? As a concrete example of linked lists in Python, take a critical look at the implementation of xml.dom.pulldom. The implementation depends on a working understanding of linked lists, even though the code itself goes out of its way to avoid using the word "linked list". In particular, we should pay attention to the handling of the 'firstEvent' and 'lastEvent' attributes. I've never quite understood why that code there uses arrays, when it's obvious that what the code is really trying to do is create linked structure. But I think I can argue well that the readability of the code is damaged because the code is just sticking with the array abstraction when it's inappropriate. For example: ###### rc = self.pulldom.firstEvent[1][0] self.pulldom.firstEvent[1] = self.pulldom.firstEvent[1][1] ###### is really, in essence, linked list operations disguised as array manipulation. It should be clear that linked structure is important: anytime we work with structured data, we're almost certainly using linked data structures. Anytime we use XML, we are certainly using linked structure. Ok, detour over, I hope. > What I am saying is that, for the case of a queue and similar utility > data structures and algorithms that can be frequently used in many > different programs, *I* am *not* happy with anything less than the best > possible performance that can be achieved on the machine (not the > *language*, the *machine*) I run it on. *I* do not want my machine > wasting *any* time on useless overhead. If absolute machine performance was our primary concern, we should certainly avoid Python like the plague. Every attribute access in Python is a run-time hashtable lookup. Every method call involves significant run-time type checks to make sure we're running a program in a safe manner. That late-binding flexibility is NOT for free, and does incur significant performance cost. But if we really care about using a programming environment that is dedicated to help programmers, then we have a different criteria for goodness than absolute machine performance. And if we're talking about a language that we intend to use to teach programming, then we might have a different goalset than a professional programmer. I think this thread is just trying to bring up the point that "performance at all cost" is not the goal: it's human understanding. We are trying to teach students how to write readable programs for human beings: it's only accidental that we have a machine that can actualize those programs into action. Looking back at the original post on this: http://mail.python.org/pipermail/edu-sig/2005-April/004751.html it really sounds like we're talking about an introduction course that is meant as a gateway class, so that people come out of it prepared to tackle the other core CS classes. I don't expect people will come out it saying "Now I'm a professional programmer", because, frankly, they won't be. But they'll have a basis for learning real ideas. > My point is that if a language *only* allows for an inefficient > implementation of something (or makes it too difficult to achieve), then > it is flawed. Having to write an assembly language module or use some > other special tool is fine, but I would prefer the language to do it > itself. Darn it; I really don't want to contribute heat to the Lisp vs. Python subthread, because it's not truly core, not important to what we're talking about. Perhaps you were just saying your statement as a hypothetical, about any general language, but I think you mean Lisp in particular, so I have to rebutt again and make sure there is no confusion. You should know that the serious, extant Lisps --- Common Lisp and Scheme --- have native support for vectors. ;;;;;; (mzscheme) > (define words (vector "hello" "world" "this" "is" "a" "test")) > (vector-ref words 3) "is" ;;;;;; This is not a linked list, but is a real, fixed-size array structure, with constant-time access to any arbitrary element. I think the core questions are: is Python an appropriate language for teaching introductory programming? Is there support that can we provide to make that teaching relevant and exciting to students? Of course I think Python's a fine language; it has a familiar syntax, and excellent runtime support. I do think that its Standard Library and orbiting third-party modules have matured enough that its applications to the real world are immediately apparant. > Anyways, this is all getting pretty far a field from Python education. Slightly. *grin* But we have to teach each other before we can hope to teach others. For us to be truth tellers, with authenticity, we have to be right about our facts. And if we see an untrue assertion, we have to stand up and say that it's wrong. From ajsiegel at optonline.net Tue May 10 04:04:32 2005 From: ajsiegel at optonline.net (Arthur) Date: Mon, 09 May 2005 22:04:32 -0400 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <42800317.9080004@aleax.it> Message-ID: <0IG9008XF4JCLR@mta7.srv.hcvlny.cv.net> > From: Anna Martelli Ravenscroft [mailto:anna at aleax.it] > Sent: Monday, May 09, 2005 8:41 PM > To: Arthur > Cc: 'Kirby Urner'; edu-sig at python.org > Subject: Re: [Edu-sig] K-16 CS/math hybrid > > Arthur wrote: > > > The issue is inherent in the circumstances. If programming is so > powerful > > - why can't the folks really good at it make it so it isn't so damn hard > to > > learn. Can't they whip something up that makes it easy. It they can't - > how > > powerful is the practice - really. And if it ain't powerful in this > way, > > why would I waste my time on it. > > > > Are you sure that's what they're saying and not just what you're > hearing? ;-) Bottom line, I hear from the "Python community" when confronted with some aspect of Python that allows one more freedom to shoot oneself in the foot that than do many other languages that, of course, Python has been designed for "consenting adults". With the concurrent thread that it is easy enough for children. Let's talk psychiatry. My father was a poor boy who did well enough to give me some of the advantages he did not have himself. The net result of the configuration - I realized at some point in retrospect - was that his sacrifices for my good, put him in a position to take credit for my successes. And the fun of working toward a success that someone else would own? Net result. Didn't. Until I mature enough to have the issue sort of fade away of its own accord. Worked out fine. I had the goings on of the 60's to distract me in the meantime. If Python was not around, I would have learned programming by making my peace with some other programming language. No question I did not find Python easy to learn. And guess who I give credit to for having learned it to the extent that I have. Guido? Nope. > > *My* answer is "please don't", but please do go away and please don't > come > > back. > > > > But I am a hard ass. > > > > And others seem to think there are better ways to respond. > > Depends on what the real question is, I think. > > What I hear a lot is: > "what useful stuff can I do with this and how much do I have to learn in > order to do that?" - which is a very different question but can sound > very similar, often because it's phrased as: "Why do I want to learn > this?" or "what's it good for?" Unfortunately the answer this question > often gets is: "If you don't know already, go away." Define "useful". Yes, I do think if that question is being asked, its pretty much game over. Approaching programming in any near serious way is sitting at a restaurant with no prices on the menu. And if you have to ask... Art From urnerk at qwest.net Tue May 10 05:40:16 2005 From: urnerk at qwest.net (Kirby Urner) Date: Mon, 9 May 2005 20:40:16 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <0IG9008XF4JCLR@mta7.srv.hcvlny.cv.net> Message-ID: <20050510034019.CFE6D1E4003@bag.python.org> > Bottom line, I hear from the "Python community" when confronted with some > aspect of Python that allows one more freedom to shoot oneself in the foot > that than do many other languages that, of course, Python has been > designed for "consenting adults". Right. If I write a class method starting with a single under bar, it's sort of a tacit (consenting adult) agreement that neither you nor I will call it directly from outside the class i.e. by writing object._foo(arg). I could further protect this method with a double under bar, which is kind of an emphatic "don't touch." But as a Python coder, you'd still know how to call it directly: >>> class Foo: def __bar(self, arg): print arg >>> obj = Foo() >>> obj._Foo__bar('duh!") duh! Indeed, dir() obligingly tells me the mangled name of my "private" method: >>> dir(obj) ['_Foo__bar', '__doc__', '__module__'] Now if this were Java, we'd mark method bar as private and be done with it. Any attempt to call it directly would net a *compile time* error. You'd be doing something illegal, whereas in Python you're merely violating a strong convention. > With the concurrent thread that it is easy enough for children. > Children understand about conventions. I draw an invisible line on the car seat: sister stays on her side, I stay on mine. But there's no electric fence (much as we might wish there to be). Java provides electric fences. Python provides lines in the sand. Children know the difference. > Define "useful". Yes, I do think if that question is being asked, its > pretty much game over. > > Approaching programming in any near serious way is sitting at a restaurant > with no prices on the menu. And if you have to ask... > > Art I don't really understand your attitude at this point (that's not a note of disagreement, but of confusion, aka incomprehension). Analogy (offered to help us clarify attitudes): When cars were still newfangled, early adopters tended to be car nuts. They knew a lot about fixing cars, their internals, especially as they tended to break down a lot. A "driver" was likely a car geek, a pro. Then cars got a lot easier to deal with, and all kinds of people learned to drive, yet relatively few are pros, plus pros come in many shapes and sizes: chauffeurs, race car drivers, truck drivers... with many subcategories within these categories. When computers were still newfangled, programmers tended to be computer nuts. They knew a lot about computer internals and a programmer was likely a computer geek, a pro. Then computers got a lot easier to deal with and all kinds of people learned to program, yet relatively few are pros etc. Python is a manifestation of programming becoming easier, more accessible. It's still hard, as activities go, but think how many hours kids put into skateboarding and/or snowboarding tricks. There's a teen around the corner working on such skills. I encounter him several times a week, working out with his skateboard. Is Python harder than that? Hard to quantify. Useful: say I've ripped 1,000 CDs to MP3 but wasn't on the internet at the time and so didn't have access to a CDDB. Now I do, and using artist and album (recorded as folder names) my hope is to post hoc populate my MP3 files with song titles and play times. Is this doable with Python? I don't actually know. I know there're bindings to MP3 files, but is album name and artist sufficient to do a CDDB lookup? Time to google [1]. I empathize with the kid who wants to investigate and solve this problem -- and who perhaps succeeds, but currently has no interest in becoming a "professional programmer." Kirby [1] Initial research: I see I can do this in Perl: http://www.perl.com/pub/a/2003/10/03/musicbrainz.html Here's something I might start with in Python: http://www.python.org/pypi/python-musicbrainz/0.10 Or if I'm gen-too: http://www.gentoo-portage.com/dev-python/python-musicbrainz And hey, I just learned about TRM fingerprinting. I hadn't realized this was available: http://www.relatable.com/ From andre.roberge at gmail.com Tue May 10 05:47:47 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Tue, 10 May 2005 00:47:47 -0300 Subject: [Edu-sig] ANN: new version of rur-ple (0.8.5) Message-ID: Version 0.8.5 of rur-ple has been released. The web site has completely changed; it includes over 35 pages. http://rur-ple.sourceforge.net/ -------------------------------------- Learning to program computer should be fun, for adults and children alike. RUR-PLE is an environment designed to help you learn computer programming using the language Python. To use RUR-PLE, you need wxPython. You can learn more about RUR-PLE or you can go to the download page. ======= Apprendre ? programmer devrait ?tre amusant, que l'on soit un adulte ou un enfant. RUR-PLE est un environnement con?u pour vous aider ? apprendre la programmation informatique avec le langage Python. Pour utiliser RUR-PLE, vous aurez besoin de wxPython. Vous pouvez en apprendre davantage au sujet de RUR-PLE ou vous pouvez aller ? la page de t?l?chargement. From david at handysoftware.com Tue May 10 06:52:58 2005 From: david at handysoftware.com (David Handy) Date: Tue, 10 May 2005 00:52:58 -0400 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <427FED3D.4070508@aleax.it> References: <20050509033405.097561E4003@bag.python.org> <427FED3D.4070508@aleax.it> Message-ID: <20050510045258.GA6109@arno2> On Mon, May 09, 2005 at 04:07:41PM -0700, Anna Martelli Ravenscroft wrote: > Just a follow-up on the math and programming interaction: I was brushing > up on algebra for a placement test for the local community college (yes > - I'm finally going to go get my degree...) and while I was studying, my > brain kept coding python in the background... I kept seeing things in > terms of "how could I code this?" [btw - yes, I passed.] > > Just thought it was amusing to see how python has influenced my thinking. > > Anna I had a very similar experience (though it occurred a while ago, and with BASIC, since Python was still ten years away.) I learned to program *before* I was taught algebra or trigonometry in school. However, I quickly ran into problems where I "needed" them. I begged my Dad to teach me how I could rotate space ship drawings in the computer game I was writing, so he taught me sine and cosine and the Pythagorean theorem (though he didn't call it that, but rather "how to calculate the distance between two points".) Anyway, I had the same experience of my brain "coding in the background" while I learned mathematics in school. I feel like it helped me a lot. And after I learned some new thing I would go home and write a program to graph it or do a simulation with it, and that further cemented the knowledge. That's why I'm big on teaching computer programming to young teenagers, as much as they are willing to learn. My personal experience is that "learning to program" first led directly to "programming to learn" later. I feel that the benefits have continued for years afterwards as I went through engineering school, and on into my career. I don't think that I am so unusual, but rather that I had unusual opportunities. I'd like to share those opportunities if I can. And yes I think Python is much better than BASIC for that purpose. :) David H. From urnerk at qwest.net Tue May 10 09:51:23 2005 From: urnerk at qwest.net (Kirby Urner) Date: Tue, 10 May 2005 00:51:23 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050510034019.CFE6D1E4003@bag.python.org> Message-ID: <20050510075127.11A1A1E4004@bag.python.org> > >>> obj = Foo() > >>> obj._Foo__bar('duh!") ^ ' Yes, a syntax error. In my cut 'n paste, I grabbed the one that didn't work. PS: I got interested in the mp3 lookup thing and tried to install the python-musicbrainz-1.0b1. However, the documentation is poor, in that it doesn't explain where to put musicbrainz.dll (which has to be downloaded), and once I put it in the package folder, I get an installation error: D:\Python24\Lib\site-packages\python-musicbrainz-1.0b1>d:\python24\python setup.py install Traceback (most recent call last): File "setup.py", line 8, in ? import musicbrainz ImportError: dynamic module does not define init function (initmusicbrainz) However, the GUI front end to the musicbrainz utility gives me the functionality I originally sketched in my scenario, creating TRM ids on the fly and comparing them against the on-line database. I tested with 3 Pink Floyd mp3s, and it found them easily (but then, that's a popular band). So this maybe wasn't a good example of a teen needing to program -- the solution is already out there. But other examples'd be easy enough to spell out. Like, a lot of my friends on synergeo use Python because they want to explore geometric ideas. It's a means to an end. They're not professional programmers, at least not all of them. Kirby PPS: google to the rescue on the setup musicbrainz install problem: http://chatlogs.musicbrainz.org/2004/2004-04/2004-04-19.html So then the build works: D:\Python24\Lib\site-packages\python-musicbrainz-1.0b1>d:\python24\python setup.py install running install running build running build_py creating build creating build\lib copying musicbrainz.py -> build\lib running install_lib copying build\lib\musicbrainz.py -> d:\python24\Lib\site-packages byte-compiling d:\python24\Lib\site-packages\musicbrainz.py to musicbrainz.pyc But then I have other problems... oh well, time to hit the hay, as they say. From nico at tekNico.net Tue May 10 10:13:30 2005 From: nico at tekNico.net (Nicola Larosa) Date: Tue, 10 May 2005 10:13:30 +0200 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050510034019.CFE6D1E4003@bag.python.org> References: <0IG9008XF4JCLR@mta7.srv.hcvlny.cv.net> <20050510034019.CFE6D1E4003@bag.python.org> Message-ID: > Useful: say I've ripped 1,000 CDs to MP3 but wasn't on the internet at the > time and so didn't have access to a CDDB. Now I do, and using artist and > album (recorded as folder names) my hope is to post hoc populate my MP3 > files with song titles and play times. > > Is this doable with Python? I don't actually know. I know there're > bindings to MP3 files, but is album name and artist sufficient to do a CDDB > lookup? I know you're talking about learning to program/programming to learn, but it can't hurt to know some Python tools already out there that do these things, sources included, of course. I used to this with Jack: http://jack.sourceforge.net/ Nowadays I use mBox: http://www.mbox.wz.cz/ -- Nicola Larosa - nico at tekNico.net Religions (plural) add nothing to my life except problems or limitations, so I'm not interested in them. -- Eugenio Morassi, April 2005 From ajsiegel at optonline.net Tue May 10 13:36:49 2005 From: ajsiegel at optonline.net (Arthur) Date: Tue, 10 May 2005 07:36:49 -0400 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <20050510034019.CFE6D1E4003@bag.python.org> Message-ID: <0IG900GN3V0YVT@mta5.srv.hcvlny.cv.net> > Behalf Of Kirby Urner > Subject: Re: [Edu-sig] K-16 CS/math hybrid > Children understand about conventions. I draw an invisible line on the > car > seat: sister stays on her side, I stay on mine. But there's no electric > fence (much as we might wish there to be). Java provides electric fences. > Python provides lines in the sand. Children know the difference. Do you give a child an option whether or not to wear a seat belt? If someone insisted on wasting their time on designing a programming language for children, I would strongly recommend them limiting its options - certainly to the extent that it would have no interest to an adult, being adult. Once again, if I looked forward to my child becoming a programmer - I would probably make sure he/she got good music lessons as a child, and then take the matter up again with them much later. > Python is a manifestation of programming becoming easier, more accessible. > It's still hard, as activities go, but think how many hours kids put into > skateboarding and/or snowboarding tricks. There's a teen around the > corner > working on such skills. I encounter him several times a week, working out > with his skateboard. Is Python harder than that? Hard to quantify. What divides us is our sense of "progress", where limits lie, etc. As it happens Apple stock prices have normalized and a share bought in December 2004 is no longer on target to being worth $4.5 billion dollars in ten years. Non-euclidian geometry is as easy as it is ever going to get. And if Python is an asset in the study of algorythmics, it is so because it gets out of the way well. Algorythmics remain algorythmics. And Python in fact can't get out of way very well to the extent that it insists on being the center of attention. It has to accept a minor billing if it is going to fulfill this part of a mission. Art From andre.roberge at gmail.com Tue May 10 14:06:56 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Tue, 10 May 2005 09:06:56 -0300 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <0IG900GN3V0YVT@mta5.srv.hcvlny.cv.net> References: <20050510034019.CFE6D1E4003@bag.python.org> <0IG900GN3V0YVT@mta5.srv.hcvlny.cv.net> Message-ID: Arthur wrote: > >>Behalf Of Kirby Urner >>Subject: Re: [Edu-sig] K-16 CS/math hybrid > > >>Children understand about conventions. I draw an invisible line on the >>car >>seat: sister stays on her side, I stay on mine. But there's no electric >>fence (much as we might wish there to be). Java provides electric fences. >>Python provides lines in the sand. Children know the difference. > > > If someone insisted on wasting their time on designing a programming > language for children, I would strongly recommend them limiting its options > - certainly to the extent that it would have no interest to an adult, being > adult. > I happen to subscribe to the philosophy of giving children a "small" language to play with ... but try to give them easy means to extend the artificial limits given to them as they are ready to do so. Children learn to speak (human languages) with a few "baby" words, and a very simplified if not absent grammar. Parents often interact verbally with their children in a similar way at a young age. Soon, the communication skills of the children improve, and the parents keep giving them more to learn. Never is a line drawn on the sand per se. And when it comes to computer language, rather than speaking in the abstract: There are quite a few programming 'language' that were designed for children. Take logo, turtle graphics, etc. Richard Pattis (who indirectly inspired me) introduced a subset of Pascal together with a few high-level instructions given to a robot as a means of introducing computer programming. I personally subscribe to a similar philosophy, but with no artificial boundary enforced. Start small, but give them the chance to expand beyond what you might think is their limit. They might surprise you. Andr? From ajsiegel at optonline.net Tue May 10 14:47:24 2005 From: ajsiegel at optonline.net (Arthur) Date: Tue, 10 May 2005 08:47:24 -0400 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: Message-ID: <0IG900J75YAKT9@mta5.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Andr? Roberge > > There are quite a few programming 'language' that were designed for > children. Take logo, turtle graphics, etc. > Richard Pattis (who indirectly inspired me) introduced a subset of > Pascal together with a few high-level instructions given to a robot > as a means of introducing computer programming. > If in talking about programming and children we can only be realistically talking about a small subset, we cannot really be talking about Python as it is. Isn't talking about Python as it is more on-topic. This isn't a list about a subset of Python, after all. ;) Art From chandrakirti at gmail.com Tue May 10 14:49:46 2005 From: chandrakirti at gmail.com (Lloyd Hugh Allen) Date: Tue, 10 May 2005 08:49:46 -0400 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: References: <20050510034019.CFE6D1E4003@bag.python.org> <0IG900GN3V0YVT@mta5.srv.hcvlny.cv.net> Message-ID: <24d253d9050510054912cb0c79@mail.gmail.com> On 5/10/05, Andr? Roberge wrote: > Arthur wrote: > > > >>Behalf Of Kirby Urner > >>Subject: Re: [Edu-sig] K-16 CS/math hybrid > > > > > >>Children understand about conventions. I draw an invisible line on the > >>car > >>seat: sister stays on her side, I stay on mine. But there's no electric > >>fence (much as we might wish there to be). Java provides electric fences. > >>Python provides lines in the sand. Children know the difference. > > > > > > If someone insisted on wasting their time on designing a programming > > language for children, I would strongly recommend them limiting its options > > - certainly to the extent that it would have no interest to an adult, being > > adult. > > > I happen to subscribe to the philosophy of giving children a "small" > language to play with ... but try to give them easy means to extend the > artificial limits given to them as they are ready to do so. > > Children learn to speak (human languages) with a few "baby" words, and a > very simplified if not absent grammar. Parents often interact verbally > with their children in a similar way at a young age. Soon, the > communication skills of the children improve, and the parents keep > giving them more to learn. > > Never is a line drawn on the sand per se. > > And when it comes to computer language, rather than speaking in the > abstract: > > There are quite a few programming 'language' that were designed for > children. Take logo, turtle graphics, etc. > Richard Pattis (who indirectly inspired me) introduced a subset of > Pascal together with a few high-level instructions given to a robot > as a means of introducing computer programming. > > I personally subscribe to a similar philosophy, but with no artificial > boundary enforced. > > Start small, but give them the chance to expand beyond what you might > think is their limit. They might surprise you. > > Andr? > > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > >>> import turtle >>> dir(turtle) ['Error', 'Pen', 'RawPen', 'Tkinter', '__builtins__', '__doc__', '__file__', '__name__', '_canvas', '_getpen', '_pen', '_root', 'acos', 'asin', 'atan', 'atan2', 'backward', 'ceil', 'circle', 'clear', 'color', 'cos', 'cosh', 'degrees', 'demo', 'down', 'e', 'exp', 'fabs', 'fill', 'floor', 'fmod', 'forward', 'frexp', 'goto', 'heading', 'hypot', 'ldexp', 'left', 'log', 'log10', 'modf', 'pi', 'position', 'pow', 'radians', 'reset', 'right', 'setheading', 'setx', 'sety', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tracer', 'up', 'width', 'window_height', 'window_width', 'write'] >>> From urnerk at qwest.net Tue May 10 15:43:21 2005 From: urnerk at qwest.net (Kirby Urner) Date: Tue, 10 May 2005 06:43:21 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <0IG900J75YAKT9@mta5.srv.hcvlny.cv.net> Message-ID: <20050510134324.C2DC31E4004@bag.python.org> > Isn't talking about Python as it is more on-topic. This isn't a list > about a subset of Python, after all. > > ;) > > Art We should also define what we mean by children? Under the legal drinking age? Kirby PS: ToonTalk -- now there's an interesting language for kids From chuck at freshsources.com Tue May 10 17:18:12 2005 From: chuck at freshsources.com (Chuck Allison) Date: Tue, 10 May 2005 09:18:12 -0600 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <0IG900GN3V0YVT@mta5.srv.hcvlny.cv.net> References: <0IG900GN3V0YVT@mta5.srv.hcvlny.cv.net> Message-ID: <465221833.20050510091812@freshsources.com> Hello Arthur, Tuesday, May 10, 2005, 5:36:49 AM, you wrote: A> Non-euclidian geometry is as easy as it is ever going to get. Forgive the use of bandwidth, but this mathematician must exclaim - this is the best statement I've heard in a long time. LOL! But oh, how true. I'm going to use this one. Probably in an editorial very soon. What's your full name, Arthur? -- Best regards, Chuck From chuck at freshsources.com Tue May 10 17:23:33 2005 From: chuck at freshsources.com (Chuck Allison) Date: Tue, 10 May 2005 09:23:33 -0600 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <0IG900J75YAKT9@mta5.srv.hcvlny.cv.net> References: <0IG900J75YAKT9@mta5.srv.hcvlny.cv.net> Message-ID: <1609531109.20050510092333@freshsources.com> Hello Arthur, Tuesday, May 10, 2005, 6:47:24 AM, you wrote: A> If in talking about programming and children we can only be realistically A> talking about a small subset, we cannot really be talking about Python as it A> is. A> Isn't talking about Python as it is more on-topic. This isn't a list about A> a subset of Python, after all. I don't think so. The way we humans learn incrementally, I think we all learn a subset first. Besides, practically no one knows everything - we all live in a subset. This is especially true of C++, for example. When we teach, we naturally start small and expand the "subset" according to the sequence we feel is most "natural". This is an important key to teaching and learning. Hence, we are always learning. We can be very productive knowing a subset of anything, but we do well if we continue learning. If only perfect programmers were allowed to program, nothing would ever get done (and there would be no programmers). -- Best regards, Chuck From delza at livingcode.org Tue May 10 17:44:23 2005 From: delza at livingcode.org (Dethe Elza) Date: Tue, 10 May 2005 08:44:23 -0700 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <0IG900J75YAKT9@mta5.srv.hcvlny.cv.net> References: <0IG900J75YAKT9@mta5.srv.hcvlny.cv.net> Message-ID: On 10-May-05, at 5:47 AM, Arthur wrote: > If in talking about programming and children we can only be > realistically > talking about a small subset, we cannot really be talking about > Python as it > is. > > Isn't talking about Python as it is more on-topic. This isn't a > list about > a subset of Python, after all. When teaching Euclidean geometry, you don't start with how to calculate the tangent of a sphere, you teach a small subset, then a bigger subset, possibly taking detours to explore interesting side paths, then a bigger subset. Everyone uses a subset of Python, just different subsets. This is also true of C++, but at least in Python, once you know a decent subset, your chances of understanding other subsets when you encounter them is greater, and there are fewer (not none) ways to shoot yourself in the foot than C++ (for example). I've said this before, but perhaps it bears repeating. Programming is hard. There are many, many things we can do to make it easier, and Python does a lot of this (but still has room to do more, of course). But making it easier is different than making it easy. The programming languages which go out of their way to protect us from ourselves end up being too limited to be of much interest. The default Lego Mindstorms environment does this: it's too dumbed-down for kids. When my kids express an interest in learning to program, I'll introduce them to Python the same way I learned it: in small, incremental steps. Which is still the way I'm learning it, five or six years later. But right now my eight-year-old is more interested in learning POVRay (any pointers I should know about, Kirby?) and ABC (the text-based music notation). And my four year old is content to play with the programs I write for him, or draw rocket ships. --Dethe values of ? will give rise to dom --Unix prehistory From ajsiegel at optonline.net Wed May 11 03:55:15 2005 From: ajsiegel at optonline.net (Arthur) Date: Tue, 10 May 2005 21:55:15 -0400 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <465221833.20050510091812@freshsources.com> References: <0IG900GN3V0YVT@mta5.srv.hcvlny.cv.net> <465221833.20050510091812@freshsources.com> Message-ID: <42816603.2020408@optonline.com> Chuck Allison wrote: >Hello Arthur, > >Tuesday, May 10, 2005, 5:36:49 AM, you wrote: > >A> Non-euclidian geometry is as easy as it is ever going to get. > >Forgive the use of bandwidth, but this mathematician must exclaim - >this is the best statement I've heard in a long time. LOL! But oh, >how true. I'm going to use this one. Probably in an editorial very >soon. What's your full name, Arthur > > Arthur Jay Siegel appreciates that you appreciate the observation. ;) Art From ajsiegel at optonline.net Wed May 11 04:02:42 2005 From: ajsiegel at optonline.net (Arthur) Date: Tue, 10 May 2005 22:02:42 -0400 Subject: [Edu-sig] K-16 CS/math hybrid In-Reply-To: <1609531109.20050510092333@freshsources.com> References: <0IG900J75YAKT9@mta5.srv.hcvlny.cv.net> <1609531109.20050510092333@freshsources.com> Message-ID: <428167C2.1090604@optonline.com> Chuck Allison wrote: >Hello Arthur, > >Tuesday, May 10, 2005, 6:47:24 AM, you wrote: > >A> If in talking about programming and children we can only be realistically >A> talking about a small subset, we cannot really be talking about Python as it >A> is. > >A> Isn't talking about Python as it is more on-topic. This isn't a list about >A> a subset of Python, after all. > >I don't think so. The way we humans learn incrementally, I think we >all learn a subset first. Besides, practically no one knows everything >- we all live in a subset. This is especially true of C++, for >example. When we teach, we naturally start small and expand the >"subset" according to the sequence we feel is most "natural". This is >an important key to teaching and learning. Hence, we are always >learning. We can be very productive knowing a subset of anything, but >we do well if we continue learning. If only perfect programmers were >allowed to program, nothing would ever get done (and there would be no >programmers). > > > Just fighting an old battle - feeling that Python and "kids" (however that word might be reasonably defined) gets disportionate attention on edu-sig relative to its actual significance in the framework of Python and education, as I happen to (I think reasonably) conceive of it. It's a battle I would be more than happy to lose - but only in the field, not in the saying. Art From ajsiegel at optonline.net Sat May 14 13:35:52 2005 From: ajsiegel at optonline.net (Arthur) Date: Sat, 14 May 2005 07:35:52 -0400 Subject: [Edu-sig] FW: [Visualpython-users] High School Network Security Message-ID: <0IGH00F0E9K7GS@mta6.srv.hcvlny.cv.net> To ruin everybody's morning: -----Original Message----- From: visualpython-users-admin at lists.sourceforge.net [mailto:visualpython-users-admin at lists.sourceforge.net] On Behalf Of FRANCESCO NOSCHESE Sent: Friday, May 13, 2005 9:11 PM To: visualpython-users at lists.sourceforge.net Subject: [Visualpython-users] High School Network Security Hello everyone, I am a high school physics teacher who is planning post-AP exam student projects using VPython. However, my school refuses to allow Python and VPython to be installed on the school's network because it is open source. Here's the reply from the technology coodinator at my school: "Our technology team discussed your request to install VPython on the network/lab at our May 4th meeting and all agreed that it is not good practice to install open source software on the school computer systems. We have conferred with LHRIC and a random sampling of other districts and all agree it is not in the district's best interest to do so, even thought there is no doubt your intended goal is worthy." [LHRIC is a technology-oriented consortium of local school districts ] Is this really a problem? What are the risks? Is there any way to prevent student misuse of Python? How can I make a case to allow Python in school? FYI, we have a Novell Zenworks network for XP and Win98 machines. We also have Citrix in XP. Many thanks in advance for all your help. Frank Noschese Physics Teacher John Jay High School Cross River, NY fnoschese at klschools.org ***************************** Frank Noschese Physics Teacher John Jay High School Cross River, NY fnoschese at klschools.org voicemail: (914) 763-7384 ***************************** From urnerk at qwest.net Sat May 14 18:25:49 2005 From: urnerk at qwest.net (Kirby Urner) Date: Sat, 14 May 2005 09:25:49 -0700 Subject: [Edu-sig] FW: [Visualpython-users] High School Network Security In-Reply-To: <0IGH00F0E9K7GS@mta6.srv.hcvlny.cv.net> Message-ID: <20050514162552.1ECB61E4003@bag.python.org> Hi John -- As someone who works with Portland Public Schools (Oregon), though not as an employee, I know that we have no such policies against open source software. On the contrary, our technology people and infrastructure encourage it. For example, our technology coordinator at Winterhaven School (which my daughter attends) routinely installs (and uninstalls, if no longer used) open source software, including Python. The school has taught elective middle school courses in Python programming, Python being one of the premier computer languages in use today. The Oregon legislature has considered (but not yet passed) a couple of bills mandating that the state government, including the schools, always consider open source options before purchasing expensive alternatives. They're preaching to the choir when it comes to our school system though: we're already sold on the viability of open source solutions. Many of our computer labs run entirely on open source software (e.g. OpenOffice on top of Linux). Many of our Windows labs have a Linux server in the background running Samba. Several of our labs use diskless workstations with Linux running all the apps centrally. From a security point of view, this is ideal, as the system administrator has complete control of what goes on the server. All of the above is what I'd consider sane and techno-savvy policy. If your team is not open to open source software, I would suspect this is more a political/financial decision than a security-based one. School systems are a big source of revenue for proprietary software vendors, and these would prefer not to let free or more inexpensive solutions get a foot in the door, regardless of the tremendous savings to taxpayers and missed learning opportunities this decision entails. Your technology team may be getting a PR message from these vendors that open source software is by definition insecure, although the memo to you doesn't actually say that (maybe because it's not true?). VPython was developed at Carnegie-Mellon. Some of the best open source software comes out of our nation's leading academic institutions, such as MIT. This decision to not use open source is a way of denying students in K-12 access to quality tools already used in institutions of higher learning, thereby hurting their core educational experience. In other states, such as Oregon, that have more enlightened policies, students are not crippled in this way by school system's IT culture -- and some of our students actually become open source developers themselves, before they've finished high school. I commiserate with your situation and know that fighting a bureaucracy is never easy or fun. Just take heart that school systems are not uniformly this backward or technologically ignorant. Kirby Urner 4D Solutions Portland, Oregon > -----Original Message----- > From: visualpython-users-admin at lists.sourceforge.net > [mailto:visualpython-users-admin at lists.sourceforge.net] On Behalf Of > FRANCESCO NOSCHESE > Sent: Friday, May 13, 2005 9:11 PM > To: visualpython-users at lists.sourceforge.net > Subject: [Visualpython-users] High School Network Security > > Hello everyone, > > I am a high school physics teacher who is planning post-AP exam student > projects using VPython. However, my school refuses to allow Python and > VPython to be installed on the school's network because it is open > source. > > Here's the reply from the technology coodinator at my school: > > "Our technology team discussed your request to install VPython on the > network/lab at our May 4th meeting and all agreed that it is not good > practice to install open source software on the school computer systems. > We have conferred with LHRIC and a random sampling of other districts and > all agree it is not in the district's best interest to do so, even thought > there is no doubt your intended goal is worthy." > > [LHRIC is a technology-oriented consortium of local school districts > ] > > Is this really a problem? What are the risks? Is there any way to > prevent student misuse of Python? How can I make a case to allow Python > in school? > > FYI, we have a Novell Zenworks network for XP and Win98 machines. We also > have Citrix in XP. > > Many thanks in advance for all your help. > > Frank Noschese > Physics Teacher > John Jay High School > Cross River, NY > > fnoschese at klschools.org > ***************************** > Frank Noschese > Physics Teacher > > John Jay High School > Cross River, NY > > fnoschese at klschools.org > voicemail: (914) 763-7384 > ***************************** From ajsiegel at optonline.net Sat May 14 23:01:12 2005 From: ajsiegel at optonline.net (Arthur) Date: Sat, 14 May 2005 17:01:12 -0400 Subject: [Edu-sig] FW: [Visualpython-users] High School Network Security In-Reply-To: <0IGH00F0E9K7GS@mta6.srv.hcvlny.cv.net> Message-ID: <0IGH0092FZQH7Z@mta6.srv.hcvlny.cv.net> As a reminder, we hear that: > I am a high school physics teacher who is planning post-AP exam student > projects using VPython. However, my school refuses to allow Python and > VPython to be installed on the school's network because it is open > source. > > Here's the reply from the technology coodinator at my school: > > "Our technology team discussed your request to install VPython on the > network/lab at our May 4th meeting and all agreed that it is not good > practice to install open source software on the school computer systems. > We have conferred with LHRIC and a random sampling of other districts and > all agree it is not in the district's best interest to do so, even thought > there is no doubt your intended goal is worthy." > I will be dramatic, only because I think the situation calls for it. Lonely as I sometimes feel in that perception. And I do promise to look for an avenue for activism on these issues beyond posting here. The above news is consistent with what I sense to be happening pervasively (and yes I know there are exceptions, but the exceptions are exceptions and are not enough to bring me to any sense of calm). The worst part of the above message is to me not the ignorance it brings to light, but the lack of soul it brings to light. And decisions being made on the basis of ignorance and lack of soul. The "good" kids will be the one's best able to adjust to the environment being created by these kinds of decision, and the "bad" kids those who cannot. And we continue from there. Its moving toward the plot of a bad science fiction movie. I do business stuff. My job and training is to be rooted in reality, in things as they are. And not to become emotional, surprised and involved in this that or the other injustice that comes along or about. Such is the world. But I am alarmed that I am alarmed. Art From chandrakirti at gmail.com Sat May 14 23:52:04 2005 From: chandrakirti at gmail.com (Lloyd Hugh Allen) Date: Sat, 14 May 2005 17:52:04 -0400 Subject: [Edu-sig] FW: [Visualpython-users] High School Network Security In-Reply-To: <0IGH00F0E9K7GS@mta6.srv.hcvlny.cv.net> References: <0IGH00F0E9K7GS@mta6.srv.hcvlny.cv.net> Message-ID: <24d253d905051414521e6b5559@mail.gmail.com> > FYI, we have a Novell Zenworks network for XP and Win98 machines. We also > have Citrix in XP. Not to be that guy, but: *It's better practice to run Win98 than to use relatively common open source software?? Interesting...(although I do recognize the futility of attempting to run win2k on a 300-500MHz 64 MB machine--and it's been great fun trying to install SP4 on a 666MHz machine when blaster and sasser are rampant enough on a network that the machine gets taken down before the sp4 patch is downloaded). *You say they won't run it on the network. Could the software be installed (and/or run off cd) on a machine removed from the network, if such a machine were to exist? From ajsiegel at optonline.net Sun May 15 00:34:17 2005 From: ajsiegel at optonline.net (Arthur) Date: Sat, 14 May 2005 18:34:17 -0400 Subject: [Edu-sig] FW: [Visualpython-users] High School Network Security In-Reply-To: <0IGH00F0E9K7GS@mta6.srv.hcvlny.cv.net> Message-ID: <0IGI007V841BH9@mta4.srv.hcvlny.cv.net> > > [LHRIC is a technology-oriented consortium of local school districts > ] Went to the site, and from that linked into some of the procurement policy rules and regulations with which they are working. In business there is the "roll-out" concept. Starbucks had a few coffee houses and did a roll-out. It is not so much that the technology is the bureaucratic soul-lessness. Its the mechanism for a roll-out of it in a manner not before feasible. But to note, and to criticize, what one sees puts one on the side of the flat earthers. Technology in education is progressive and progressive is good. We see how much - from the note posted - the bureaucrat knows and needs to know about technology. But technology is power today, and its like a moth to a flame. Hopefully the convergence of the interests of the bureaucrats and technologists is nothing more than an unfortunate temporary convergent of interests. But I think the situation is in fact far worse than that. Art From holbert.13 at osu.edu Mon May 16 15:31:07 2005 From: holbert.13 at osu.edu (Rick Holbert) Date: Mon, 16 May 2005 09:31:07 -0400 Subject: [Edu-sig] FW: [Visualpython-users] High School Network Security In-Reply-To: <0IGH00F0E9K7GS@mta6.srv.hcvlny.cv.net> References: <0IGH00F0E9K7GS@mta6.srv.hcvlny.cv.net> Message-ID: <200505160931.07473.holbert.13@osu.edu> Even the US Military allows open source software: http://www.stsc.hill.af.mil/CrossTalk/2005/01/0501Parsons.html I do not follow your school's logic. How do they (LHRIC) think the students will be able to exploit the open source nature of Python? Do the students have access to a C compiler and do they also have sysadmin rights to install a recompiled (tainted) version of Python over an official version of Python? Rick On Saturday 14 May 2005 07:35, Arthur wrote: > To ruin everybody's morning: > > -----Original Message----- > From: visualpython-users-admin at lists.sourceforge.net > [mailto:visualpython-users-admin at lists.sourceforge.net] On Behalf Of > FRANCESCO NOSCHESE > Sent: Friday, May 13, 2005 9:11 PM > To: visualpython-users at lists.sourceforge.net > Subject: [Visualpython-users] High School Network Security > > Hello everyone, > > I am a high school physics teacher who is planning post-AP exam student > projects using VPython. However, my school refuses to allow Python and > VPython to be installed on the school's network because it is open > source. > > Here's the reply from the technology coodinator at my school: > > "Our technology team discussed your request to install VPython on the > network/lab at our May 4th meeting and all agreed that it is not good > practice to install open source software on the school computer systems. > We have conferred with LHRIC and a random sampling of other districts and > all agree it is not in the district's best interest to do so, even thought > there is no doubt your intended goal is worthy." From ajsiegel at optonline.net Mon May 16 16:19:23 2005 From: ajsiegel at optonline.net (Arthur) Date: Mon, 16 May 2005 10:19:23 -0400 Subject: [Edu-sig] FW: [Visualpython-users] High School Network Security In-Reply-To: <200505160931.07473.holbert.13@osu.edu> Message-ID: <0IGL00L3V6FIDF@mta3.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Rick Holbert > Sent: Monday, May 16, 2005 9:31 AM > To: edu-sig at python.org > Subject: Re: [Edu-sig] FW: [Visualpython-users] High School Network > Security > > Even the US Military allows open source software: > > http://www.stsc.hill.af.mil/CrossTalk/2005/01/0501Parsons.html > > I do not follow your school's logic. Unfortunately you are looking for logic and justification from people in a position to not need to provide it. If they were just a little wrong, then it might be sane to assume it is just a matter of a little education on the facts, and their position will move. They are very wrong and obdurately wrong, which should be taken as a clue to something else. The reality is that their position will not move an inch based on obtaining a better understanding of the facts. My position (whatever it is) is based on an understanding of that particular fact. Art From francesconoschese at sbcglobal.net Mon May 16 20:00:27 2005 From: francesconoschese at sbcglobal.net (Frank Noschese) Date: Mon, 16 May 2005 11:00:27 -0700 (PDT) Subject: [Edu-sig] UPDATE: High School Network Security Message-ID: <20050516180027.89184.qmail@web81603.mail.yahoo.com> Hello again, Thanks to everyone that gave input to my Vpython installation roadblock. Like Arthur said, this is not a situation which will be fixed by a little "education." I asked the tech coordinator to outline the reasons why installing open source is not in the school's best interest. Here is the reply: ======= "In Reference to our ticket #313, there are a number of reasons why we (the technical team) decided that it would not be in keeping with the "best practices" of the district to install open source software on the districts computers and network. Four key reasons are as follows: 1) Lack of technical support from the 'vendor'. Since most open source software is provided 'free' and is not maintained by a central vendor, technical support is limited if not non existent. With this lack of technical support of the software products in question, we have no way of getting help when the software has a problem or is the cause of problems with the network. 2) Product testing was another reason. Since there are so many contributors to open source software, in many cases, the software is not tested for compatibility and stability. As such, there is no level of expectation that the product will function as stated. Further more, with the limited testing of the software, we have no idea of what problems or ill effects the software may have on the computers and network. 3) Legal issues. According to the American Bar Association, Contributors do not vouch for the cleanliness of the code they contribute to the project; in fact, the opposite is true -- the standard open source license is designed to be very protective of the contributor. The typical license form does not include any intellectual property representations, warranties or indemnities in favor of the licensee; it contains a broad disclaimer of all warranties that benefits the licensor/contributors. Seeing in that there is no way for us to verify that the code that contributors are adding is there own, we may be opening up the district to legal actions should the software or portions there of are copyrighted and being used illegally or improperly. See attachment for more detail... 4) Security of the "system." Since in most cases, anyone can obtain a copy of the source code of the software (OPEN SOURCE), we are running the risk of a user being able to modify the software on the network and manipulated it in such a manor to produce undesired effects. Since we have to look out for the stability and security of the network, this was viewed as a possible security issue. Another security concern is the ability of virus introduction. Since the source code is open, anyone so inclined, could create a virus to exploit the software without much difficulty. This ability to introduce a virus or other malicious code to the system can have the effect of bringing the system "down" and possible data loss or corruption." =========== Also included in the email was information from the American Bar Association at: Any thoughts from you folks? Do they have any truly valid points? Perhaps a "Live CD" is my best (only?) option. Many thanks again, Frank Noschese John Jay High School Cross River, NY From chuck at freshsources.com Mon May 16 20:24:27 2005 From: chuck at freshsources.com (Chuck Allison) Date: Mon, 16 May 2005 12:24:27 -0600 Subject: [Edu-sig] UPDATE: High School Network Security In-Reply-To: <20050516180027.89184.qmail@web81603.mail.yahoo.com> References: <20050516180027.89184.qmail@web81603.mail.yahoo.com> Message-ID: <1703497979.20050516122427@freshsources.com> Hello Frank, Some of the reasons cited below from your tech coordinator certainly make sense, but not for the classroom. Businesses rightly are concerned about vendor support, adequate testing, standards conformance, etc. - it can make a big difference in costly projects. But in small, informal classroom use, a teacher who knows Python can give all the "support" that's needed. Fortunately at my college, I can just tell the students to download whatever software and use it (they all have their own computers - and I have it placed on our lab computers as well - we have no bureaucracy to stop it - the IT people are there to support the faculty, not impede them). Over-cautious IT policies should not stand in the way of educating. Educating bureaucrats in such separation of concerns is certainly in order. Monday, May 16, 2005, 12:00:27 PM, you wrote: FN> Hello again, FN> Thanks to everyone that gave input to my Vpython installation roadblock. Like FN> Arthur said, this is not a situation which will be fixed by a little FN> "education." I asked the tech coordinator to outline the reasons why installing FN> open source is not in the school's best interest. Here is the reply: FN> ======= FN> "In Reference to our ticket #313, there are a number of reasons why we (the FN> technical team) decided that it would not be in keeping with the "best FN> practices" of the district to install open source software on the districts FN> computers and network. Four key reasons are as follows: FN> 1) Lack of technical support from the 'vendor'. Since most open source software FN> is provided 'free' and is not maintained by a central vendor, technical support FN> is limited if not non existent. With this lack of technical support of the FN> software products in question, we have no way of getting help when the software FN> has a problem or is the cause of problems with the network. FN> 2) Product testing was another reason. Since there are so many contributors to FN> open source software, in many cases, the software is not tested for FN> compatibility and stability. As such, there is no level of expectation that the FN> product will function as stated. Further more, with the limited testing of the FN> software, we have no idea of what problems or ill effects the software may have FN> on the computers and network. FN> 3) Legal issues. According to the American Bar Association, Contributors do not FN> vouch for the cleanliness of the code they contribute to the project; in fact, FN> the opposite is true -- the standard open source license is designed to be very FN> protective of the contributor. The typical license form does not include any FN> intellectual property representations, warranties or indemnities in favor of FN> the licensee; it contains a broad disclaimer of all warranties that benefits FN> the licensor/contributors. Seeing in that there is no way for us to verify that FN> the code that contributors are adding is there own, we may be opening up the FN> district to legal actions should the software or portions there of are FN> copyrighted and being used illegally or improperly. See attachment for more FN> detail... FN> 4) Security of the "system." Since in most cases, anyone can obtain a copy of FN> the source code of the software (OPEN SOURCE), we are running the risk of a FN> user being able to modify the software on the network and manipulated it in FN> such a manor to produce undesired effects. Since we have to look out for the FN> stability and security of the network, this was viewed as a possible security FN> issue. Another security concern is the ability of virus introduction. Since the FN> source code is open, anyone so inclined, could create a virus to exploit the FN> software without much difficulty. This ability to introduce a virus or other FN> malicious code to the system can have the effect of bringing the system "down" FN> and possible data loss or corruption." FN> =========== FN> Also included in the email was information from the American Bar Association FN> at: FN> Any thoughts from you folks? Do they have any truly valid points? Perhaps a FN> "Live CD" is my best (only?) option. FN> Many thanks again, FN> Frank Noschese FN> John Jay High School FN> Cross River, NY FN> _______________________________________________ FN> Edu-sig mailing list FN> Edu-sig at python.org FN> http://mail.python.org/mailman/listinfo/edu-sig -- Best regards, Chuck From lac at strakt.com Mon May 16 21:57:59 2005 From: lac at strakt.com (Laura Creighton) Date: Mon, 16 May 2005 21:57:59 +0200 Subject: [Edu-sig] UPDATE: High School Network Security In-Reply-To: Message from Frank Noschese of "Mon, 16 May 2005 11:00:27 PDT." <20050516180027.89184.qmail@web81603.mail.yahoo.com> References: <20050516180027.89184.qmail@web81603.mail.yahoo.com> Message-ID: <200505161957.j4GJvx2e025543@ratthing-b246.strakt.com> They just hate Open Source. And they are unwilling to examine projects on a case-by-case basis. In a message of Mon, 16 May 2005 11:00:27 PDT, Frank Noschese writes: >Hello again, > >Thanks to everyone that gave input to my Vpython installation roadblock. >Like >Arthur said, this is not a situation which will be fixed by a little >"education." I asked the tech coordinator to outline the reasons why inst >alling >open source is not in the school's best interest. Here is the reply: > >======= >"In Reference to our ticket #313, there are a number of reasons why we (t >he >technical team) decided that it would not be in keeping with the "best >practices" of the district to install open source software on the distric >ts >computers and network. Four key reasons are as follows: > >1) Lack of technical support from the 'vendor'. Since most open source so >ftware >is provided 'free' and is not maintained by a central vendor, technical s >upport >is limited if not non existent. With this lack of technical support of th >e >software products in question, we have no way of getting help when the so >ftware >has a problem or is the cause of problems with the network. This is, of course, not true for Python. If you want a support license, you can talk to, among others, ActiveState. Actually, my experience with open and closed source products is that the Open Source developers are more responsive to bug reports. Closed source places have to justify the time spent on a bug fix with the revenue it generates. Unless you are an _important_ customer, you can wait a long time. > >2) Product testing was another reason. Since there are so many contributo >rs to >open source software, in many cases, the software is not tested for >compatibility and stability. As such, there is no level of expectation th >at the >product will function as stated. Further more, with the limited testing o >f the >software, we have no idea of what problems or ill effects the software ma >y have >on the computers and network. Python is well tested. > >3) Legal issues. According to the American Bar Association, Contributors >do not >vouch for the cleanliness of the code they contribute to the project; in >fact, >the opposite is true -- the standard open source license is designed to b >e very >protective of the contributor. The typical license form does not include >any >intellectual property representations, warranties or indemnities in favor > of >the licensee; it contains a broad disclaimer of all warranties that benef >its >the licensor/contributors. Seeing in that there is no way for us to verif >y that >the code that contributors are adding is there own, we may be opening up >the >district to legal actions should the software or portions there of are >copyrighted and being used illegally or improperly. See attachment for mo >re >detail... This is misleading. Python contributers state that they have the right to contribute this code (ie it is their's or their company's and they have the right to represent their company). According to our lawyers, no amount of ABA sanctioned yapping about indemnification will do anybody a piece of good if some third party wakes up one day and says that the python langauge is in violation of their patent. In this case, the contributor, the Python Software Foundation, and all the Python users will all be sitting on one side of the fence, as some jerk -- usually a corporation -- tries to extort money out of us. This could happen. However, this is merely a reflection of why patents are bad for software, and this could happen should you use a piece of closed source software that somebody claims violates their patent as well. > >4) Security of the "system." Since in most cases, anyone can obtain a cop >y of >the source code of the software (OPEN SOURCE), we are running the risk of > a >user being able to modify the software on the network and manipulated it >in >such a manor to produce undesired effects. Since we have to look out for >the >stability and security of the network, this was viewed as a possible secu >rity >issue. Another security concern is the ability of virus introduction. Sin >ce the >source code is open, anyone so inclined, could create a virus to exploit >the >software without much difficulty. This ability to introduce a virus or ot >her >malicious code to the system can have the effect of bringing the system " >down" >and possible data loss or corruption." >=========== Here they are confusing 'the software is open source' with 'we have to install it on our system in a way that anybody can modify it'. This is simply not true. So, if some cracker find a way to replace parts of your python with his or her own files -- yes, that is a problem. But it is a worse problem for Microsoft, because most of the people who do this are brainless fools who download a 'cracking kit' and do whatever it says, and most cracking kits are for Windows. Once you have an operating system that will install whatever the cracker wants wherever he or she likes, you have a severe problem. But this is not a Python problem, either. The university here, where this is a severe problem, just reinstalls all the system software every week, or 3 days on systems that have proven to be regularly cracked. >Also included in the email was information from the American Bar Associat >ion >at: > >Any thoughts from you folks? Do they have any truly valid points? Perhaps > a >"Live CD" is my best (only?) option. This is the standard 'why open source is evil' misinformed rant. Most people who say this do not actually believe it. It is just a club to beat people like you with so they can continue to have things the way they like it. You are supposed to believe them and go away. Good luck, Laura Creighton > >Many thanks again, >Frank Noschese >John Jay High School >Cross River, NY >_______________________________________________ >Edu-sig mailing list >Edu-sig at python.org >http://mail.python.org/mailman/listinfo/edu-sig From palmer at execpc.com Mon May 16 22:59:46 2005 From: palmer at execpc.com (bill palmer) Date: Mon, 16 May 2005 15:59:46 -0500 Subject: [Edu-sig] UPDATE: High School Network Security References: <20050516180027.89184.qmail@web81603.mail.yahoo.com> <200505161957.j4GJvx2e025543@ratthing-b246.strakt.com> Message-ID: <428909C2.74112A02@execpc.com> The other day I came across a discussion of the Brazil government efforts to mandate open source. Here is one news brief http://msnbc.msn.com/id/7220913/ covering MIT's recommendation to the Brazil government endorsing open source. This is probably something to follow in the educational field as there will certainly be a lot of concrete experience with open source from this process. You can Google for more examples. regards, bill p Laura Creighton wrote: > They just hate Open Source. And they are unwilling to examine projects > on a case-by-case basis. > > In a message of Mon, 16 May 2005 11:00:27 PDT, Frank Noschese writes: > >Hello again, > > > >Thanks to everyone that gave input to my Vpython installation roadblock. > >Like > >Arthur said, this is not a situation which will be fixed by a little > >"education." I asked the tech coordinator to outline the reasons why inst > >alling > >open source is not in the school's best interest. Here is the reply: > > > >======= > >"In Reference to our ticket #313, there are a number of reasons why we (t > >he > >technical team) decided that it would not be in keeping with the "best > >practices" of the district to install open source software on the distric > >ts > >computers and network. Four key reasons are as follows: > > > >1) Lack of technical support from the 'vendor'. Since most open source so > >ftware > >is provided 'free' and is not maintained by a central vendor, technical s > >upport > >is limited if not non existent. With this lack of technical support of th > >e > >software products in question, we have no way of getting help when the so > >ftware > >has a problem or is the cause of problems with the network. > > This is, of course, not true for Python. If you want a support license, > you can talk to, among others, ActiveState. Actually, my experience with > open and closed source products is that the Open Source developers are > more responsive to bug reports. Closed source places have to justify > the time spent on a bug fix with the revenue it generates. Unless you are > an _important_ customer, you can wait a long time. > > > > >2) Product testing was another reason. Since there are so many contributo > >rs to > >open source software, in many cases, the software is not tested for > >compatibility and stability. As such, there is no level of expectation th > >at the > >product will function as stated. Further more, with the limited testing o > >f the > >software, we have no idea of what problems or ill effects the software ma > >y have > >on the computers and network. > > Python is well tested. > > > > >3) Legal issues. According to the American Bar Association, Contributors > >do not > >vouch for the cleanliness of the code they contribute to the project; in > >fact, > >the opposite is true -- the standard open source license is designed to b > >e very > >protective of the contributor. The typical license form does not include > >any > >intellectual property representations, warranties or indemnities in favor > > of > >the licensee; it contains a broad disclaimer of all warranties that benef > >its > >the licensor/contributors. Seeing in that there is no way for us to verif > >y that > >the code that contributors are adding is there own, we may be opening up > >the > >district to legal actions should the software or portions there of are > >copyrighted and being used illegally or improperly. See attachment for mo > >re > >detail... > > This is misleading. Python contributers state that they have the right > to contribute this code (ie it is their's or their company's and they > have the right to represent their company). According to our lawyers, > no amount of ABA sanctioned yapping about indemnification will do > anybody a piece of good if some third party wakes up one day and says > that the python langauge is in violation of their patent. In this > case, the contributor, the Python Software Foundation, and all the > Python users will all be sitting on one side of the fence, as some > jerk -- usually a corporation -- tries to extort money out of us. > This could happen. However, this is merely a reflection of why patents > are bad for software, and this could happen should you use a piece of > closed source software that somebody claims violates their patent as well. > > > > >4) Security of the "system." Since in most cases, anyone can obtain a cop > >y of > >the source code of the software (OPEN SOURCE), we are running the risk of > > a > >user being able to modify the software on the network and manipulated it > >in > >such a manor to produce undesired effects. Since we have to look out for > >the > >stability and security of the network, this was viewed as a possible secu > >rity > >issue. Another security concern is the ability of virus introduction. Sin > >ce the > >source code is open, anyone so inclined, could create a virus to exploit > >the > >software without much difficulty. This ability to introduce a virus or ot > >her > >malicious code to the system can have the effect of bringing the system " > >down" > >and possible data loss or corruption." > >=========== > > Here they are confusing 'the software is open source' with 'we have > to install it on our system in a way that anybody can modify it'. This > is simply not true. So, if some cracker find a way to replace parts > of your python with his or her own files -- yes, that is a problem. > But it is a worse problem for Microsoft, because most of the people > who do this are brainless fools who download a 'cracking kit' and > do whatever it says, and most cracking kits are for Windows. Once > you have an operating system that will install whatever the cracker wants > wherever he or she likes, you have a severe problem. But this is not > a Python problem, either. > > The university here, where this is a severe problem, just reinstalls > all the system software every week, or 3 days on systems that have > proven to be regularly cracked. > > >Also included in the email was information from the American Bar Associat > >ion > >at: > > > >Any thoughts from you folks? Do they have any truly valid points? Perhaps > > a > >"Live CD" is my best (only?) option. > > This is the standard 'why open source is evil' misinformed rant. Most > people who say this do not actually believe it. It is just a club to > beat people like you with so they can continue to have things the way > they like it. You are supposed to believe them and go away. > > Good luck, > Laura Creighton > > > > >Many thanks again, > >Frank Noschese > >John Jay High School > >Cross River, NY > >_______________________________________________ > >Edu-sig mailing list > >Edu-sig at python.org > >http://mail.python.org/mailman/listinfo/edu-sig > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig From missive at hotmail.com Mon May 16 23:41:28 2005 From: missive at hotmail.com (Lee Harr) Date: Tue, 17 May 2005 02:11:28 +0430 Subject: [Edu-sig] UPDATE: High School Network Security Message-ID: >1) Lack of technical support from the 'vendor'. Since most open source >software >is provided 'free' and is not maintained by a central vendor, technical >support >is limited if not non existent. I don't know about you, but I think I'd rather have all my teeth pulled than have to go through front-line tech support on any commercial product. Any time I've had a real problem with an open source product I've had nearly instantaneous access (through mailing lists and newsgroups) to the actual developers of the software. Talk about service! >2) Product testing was another reason. Since there are so many contributors >to >open source software, in many cases, the software is not tested for >compatibility and stability. As such, there is no level of expectation that >the >product will function as stated. Further more, with the limited testing of >the >software, we have no idea of what problems or ill effects the software may >have >on the computers and network. Ever had a windows service pack break a piece of software? Happens all the time. In fact, many businesses have been resisting the install of sp2 for just this reason. Now microsoft has made sp2 mandatory. >3) Legal issues. According to the American Bar Association, Contributors do >not >vouch for the cleanliness of the code they contribute to the project; in >fact, >the opposite is true -- the standard open source license is designed to be >very >protective of the contributor. Wrong. The license is very protective of the USER. >From the preamble to the GPL: """ The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. """ You can't be free to use and share if there are patent problems, now can you? Sounds like someone needs to go read the GPL. Chances are, of course, they are used to just clicking "Next" on any and all installs and have never read any of the licenses. Most open source licenses are at least readable. They should give it a try. If they took the time to read the EULAs for their other software, I bet they would find even more stringent disclaimers of responsibility than the ones found in open source licenses. Reading their ABA link, it sounds like the lawyers probably do not like that fact that a human being could be so bold as to write in plain terms. Kinda cuts in to their profits. Too bad. >From their article: """ Open source licenses also do not contain the kinds of representations and warranties of quality or fitness for a particular purpose that commercial software vendors sometimes negotiate into agreements among themselves. """ This sounds more like something that would happen between a producer and a reseller. The school is probably in more danger of having the BSA come in and search for (possibly nonexistant) pirateware. In fact, this may be exactly what they fear. I've heard some school districts are being bullied in just this way. Run free software, get audited. There was a recent article which said that schools are "afraid" of microsoft. That is just awful. It has to stop. >4) Security of the "system." Since in most cases, anyone can obtain a copy >of >the source code of the software (OPEN SOURCE), we are running the risk of a >user being able to modify the software on the network and manipulated it in >such a manor to produce undesired effects. Pure stupidity. CAPITALIZING it does not make it any less stupid. I could write a write a program (using the closed source microsoft compiler, even) that removes system files and rename it iexplore.exe but that does not affect system security in any way. > Another security concern is the ability of virus introduction. Since the >source code is open, anyone so inclined, could create a virus to exploit >the >software without much difficulty. Oh? I guess that is why there are so many Linux, and BSD viruses flying around the 'net. Clearly, access to source code is not a prerequisite for creating viruses. In fact, empirical evidence seems to point the other way. _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ From ajsiegel at optonline.net Tue May 17 01:44:39 2005 From: ajsiegel at optonline.net (Arthur) Date: Mon, 16 May 2005 19:44:39 -0400 Subject: [Edu-sig] UPDATE: High School Network Security In-Reply-To: <1703497979.20050516122427@freshsources.com> References: <20050516180027.89184.qmail@web81603.mail.yahoo.com> <1703497979.20050516122427@freshsources.com> Message-ID: <42893067.5060603@optonline.com> Chuck Allison wrote: >Hello Frank, > >Some of the reasons cited below from your tech coordinator certainly >make sense, but not for the classroom. Businesses rightly are >concerned about vendor support, adequate testing, standards >conformance, etc. - it can make a big difference in costly projects. > > Part of the problem is structural, in a duely perverse way. In many institutional settings the approval process in linked to the procurement process. If there is no need to undertake a procurement process (it's free) there is nothing to which to attach an approval process. Approval is therefore an impossiblity. But - again - simply pointing this out and expecting someone to put palm to forehead, and exclaim "of course - our system does not make sense in this regard, thanks for pointing that out. we will endeavor to change it" - is not what we are going to get. Promise. >But in small, informal classroom use, a teacher who knows Python can >give all the "support" that's needed. Fortunately at my college, I can >just tell the students to download whatever software and use it (they >all have their own computers - and I have it placed on our lab >computers as well - we have no bureaucracy to stop it - the IT people >are there to support the faculty, not impede them). Over-cautious >IT policies should not stand in the way of educating. Educating >bureaucrats in such separation of concerns is certainly in order. > > We have what we called in my day the AV (for audio-visual) department setting policy for physics teachers. Absurd as that it, it is a new reality of our new age. With the additional development that Headquarters has taken a new interest in the policies of the AV department. Art From jorjohns at cs.indiana.edu Tue May 17 02:52:16 2005 From: jorjohns at cs.indiana.edu (Jordan Johnson) Date: Mon, 16 May 2005 17:52:16 -0700 Subject: [Edu-sig] UPDATE: High School Network Security In-Reply-To: <20050516180027.89184.qmail@web81603.mail.yahoo.com> Message-ID: On Monday, May 16, 2005, at 11:00 AM, Frank Noschese wrote: > 4) Security of the "system." Since in most cases, anyone can obtain a > copy of > the source code of the software (OPEN SOURCE), we are running the risk > of a > user being able to modify the software on the network and manipulated > it in > such a manor to produce undesired effects. ^^^^^ Aha, so that's what this is really about--a threat to the manor! jmj -- "In this era of big brains, anything that can be done will be done - so hunker down." -- Kurt Vonnegut From janc13 at gmail.com Tue May 17 03:31:53 2005 From: janc13 at gmail.com (JanC) Date: Tue, 17 May 2005 03:31:53 +0200 Subject: [Edu-sig] UPDATE: High School Network Security In-Reply-To: References: Message-ID: <984838bf0505161831794aa98e@mail.gmail.com> On 5/16/05, Lee Harr wrote: > >1) Lack of technical support from the 'vendor'. Since most open source > >software is provided 'free' and is not maintained by a central vendor, technical > >support is limited if not non existent. > > I don't know about you, but I think I'd rather have all my teeth pulled > than have to go through front-line tech support on any commercial > product. Any time I've had a real problem with an open source product > I've had nearly instantaneous access (through mailing lists and > newsgroups) to the actual developers of the software. Talk about > service! This is a misunderstanding: they don't want support, they want someone to blame when something goes wrong. -- JanC From urnerk at qwest.net Tue May 17 05:09:38 2005 From: urnerk at qwest.net (Kirby Urner) Date: Mon, 16 May 2005 20:09:38 -0700 Subject: [Edu-sig] UPDATE: High School Network Security In-Reply-To: <20050516180027.89184.qmail@web81603.mail.yahoo.com> Message-ID: <20050517030939.A828D1E4006@bag.python.org> > Any thoughts from you folks? Do they have any truly valid points? > Perhaps a "Live CD" is my best (only?) option. > > Many thanks again, > Frank Noschese > John Jay High School > Cross River, NY Maybe the policy should stay as is. We in Oregon like the competitive advantage this sets up. Having New York shoot itself in the foot, and be righteous about it (even citing Bar Association stuff -- sheesh), is a happy development. If, as an individual teacher, you get tired of these working conditions, consider moving. We're less of a slave ship out here. And by the looks of it, we treat our kids better too. Kirby From ajsiegel at optonline.net Tue May 17 14:43:36 2005 From: ajsiegel at optonline.net (Arthur) Date: Tue, 17 May 2005 08:43:36 -0400 Subject: [Edu-sig] UPDATE: High School Network Security Message-ID: <0IGM00ECEWNYYR@mta3.srv.hcvlny.cv.net> Kirby writes - >Maybe the policy should stay as is. I agree. But for different reasons. Hoping that the transparent nonsense of the Cross River policies will expose that - more generally - decisions about the use of technology in K-12 education are being based on transparent nonsense. Which will at some point allow us to recover the opportunity to take a fresh look - starting back at square one. Never happen, but one can dream. Art From ajsiegel at optonline.net Tue May 17 15:12:30 2005 From: ajsiegel at optonline.net (Arthur) Date: Tue, 17 May 2005 09:12:30 -0400 Subject: [Edu-sig] Good Ol' Mr. B Message-ID: <0IGM008VMY1ASU@mta7.srv.hcvlny.cv.net> FWIW - My sister forwarded to me some discussion on a school alumni site she came across about a teacher she knows I loved - chess, flexagons, brain teasers, soma blocks. He only got away with devising his own curriculum because this was an experimental class for "gifted" children, whereby we had him for two years which covered 4th, 5th and 6th grades. Turns out he is still active in a second career as a word puzzle author, and a regular contributor to the NY Times crossword puzzle page http://ostg.pricegrabber.com/search_bkcontrib.php/bkcontrib_id=2977658/csub= 1/ Or google on George Bredehorn The discussion at the site was about organizing a re-union with Mr. B and the former students that can be located. I think of him consistently in my postings here. On one hand, there would not be a PyGeo were there not a Mr. B. He influenced me to love playful intellectual activity. On the other hand, I can't think of the curriculum to which he exposed us to be improvable by technology. But I would hope to discuss this subject directly with him should our re-union develop. Art From jorjohns at cs.indiana.edu Tue May 17 03:10:49 2005 From: jorjohns at cs.indiana.edu (Jordan Johnson) Date: Mon, 16 May 2005 18:10:49 -0700 Subject: [Edu-sig] UPDATE: High School Network Security In-Reply-To: <20050516180027.89184.qmail@web81603.mail.yahoo.com> Message-ID: <8166DCB7-C670-11D9-8B57-000A9566DF3E@cs.indiana.edu> Possible responses follow. On Monday, May 16, 2005, at 11:00 AM, Frank Noschese wrote: > 1) Lack of technical support from the 'vendor'. Since most open source > software > is provided 'free' and is not maintained by a central vendor, > technical support > is limited if not non existent. With this lack of technical support of > the > software products in question, we have no way of getting help when the > software > has a problem or is the cause of problems with the network. "I am willing to accept the responsibility of being the local support provider for this software. Among other sources of support, be aware of [list mailing lists and websites here]." > 2) Product testing was another reason. Since there are so many > contributors to > open source software, in many cases, the software is not tested for > compatibility and stability. As such, there is no level of expectation > that the > product will function as stated. Further more, with the limited > testing of the > software, we have no idea of what problems or ill effects the software > may have > on the computers and network. "The functionality of many open source software, and Python in particular, is documented openly, and as such, errors are usually easy to find and then avoid. It is worth noting that recent versions of Internet Explorer and Mac OS X have had serious security problems of their own; this problem is far from unique to open source." > Seeing in that there is no way for us to verify that > the code that contributors are adding is there own, we may be opening > up the > district to legal actions should the software or portions there of are > copyrighted and being used illegally or improperly. "Usage of the software is, or should be, governed by our own Acceptable Use Policy. Also, given that we are not redistributing the software or marketing a derivative work, we will be extremely unlikely to draw legal attention even if this software is found to contain infringing code. Many major academic institutions (such as the University of North Carolina, Indiana University, and UC Berkeley) participate in the redistribution of Python and other open source software, which strongly suggests that their legal counsel does not find the practice risky or objectionable." > 4) Security of the "system." Since in most cases, anyone can obtain a > copy of > the source code of the software (OPEN SOURCE), we are running the risk > of a > user being able to modify the software on the network and manipulated > it in > such a manor to produce undesired effects. Since we have to look out > for the > stability and security of the network, this was viewed as a possible > security > issue. Another security concern is the ability of virus introduction. > Since the > source code is open, anyone so inclined, could create a virus to > exploit the > software without much difficulty. This ability to introduce a virus or > other > malicious code to the system can have the effect of bringing the > system "down" > and possible data loss or corruption." Left as an exercise for the reader. (A probably-unhelpful answer would involve something like, "If you're worried about a threat from this software, you have bigger problems." :>) Cheers, jmj (who did rather well fighting the IT bureaucracy at his own high school) : Jordan Johnson - jorjohns @ cs . indiana . edu : If I were a bug, I would want to be a true Renaissance bug. From urnerk at qwest.net Tue May 17 17:54:28 2005 From: urnerk at qwest.net (Kirby Urner) Date: Tue, 17 May 2005 08:54:28 -0700 Subject: [Edu-sig] UPDATE: High School Network Security In-Reply-To: <0IGM00ECEWNYYR@mta3.srv.hcvlny.cv.net> Message-ID: <20050517155431.292601E4006@bag.python.org> > Which will at some point allow us to recover the opportunity to take a > fresh look - starting back at square one. > > Never happen, but one can dream. > > Art This whole situation is indeed scandalous, newsworthy. Any junior editor looking to make a name in the hometown newspaper business could pick up the ball and run with it, do a series why not? Kirby From ajsiegel at optonline.net Tue May 17 18:07:58 2005 From: ajsiegel at optonline.net (ajsiegel@optonline.net) Date: Tue, 17 May 2005 12:07:58 -0400 Subject: [Edu-sig] UPDATE: High School Network Security Message-ID: <32e0fd732e1887.32e188732e0fd7@optonline.net> thom writes - >I thought these links might be helpful in your case: >http://www.python.org/Quotes.html Where several key industry rep's >praise Python. If you get them past loading Python, VPython should be >easy. For the record, I am of the opinion that what Frank is running into is symptomatic of deeper issues about the roll-out of technology in the school systems. There is a good degree, IMO, of somnambulism driving the process. It is definitely a good, progessive thing to do. That we know. We're just sure why. The situation leaves a gaping hole for those with a business interest in the developments. It is their mission to be convincing and we are predisposed to be convinced. There are many circumstances where one can relax with the knowledge that in the end merit will triumph - even if the road there is a bit convoluted. I cannot relax because I don't see this as one of those circumstances. I do agree that if there is a fight to be made it has to be conducted at a higher political level than tangling with the school system AV department. I guess I am not yet so cynical as to believe that a political will cannot be developed to revisit the circumstance of our school systems - working within the circumstances of extremely limited resources - *insisting* on paying for product and services where products and services of equal or higher quality are available for little or nothing. But I am reluctant to join forces with the Open Source folks who would be satisfied with that victory alone. I would not. I would press on toward much better answers to the questions of why, when and where the introduction of technology is appropriate to enhance the educational experience of young people. I personally see a quite narrow set of such circumstances. I am here because I happen to think VPython is exactly the type of application that fills that narrow slit. But I can generalize very little from the fact that I can well understand how VPython can be used productively. I happen to believe that there aren't many VPythons out there. Or else, not many slits. Art From radenski at chapman.edu Thu May 19 02:49:33 2005 From: radenski at chapman.edu (Radenski, Atanas) Date: Wed, 18 May 2005 17:49:33 -0700 Subject: [Edu-sig] Workshop on "Teaching Introductory Computer Science: The Python Way" Message-ID: Chapman University in Orange, California, USA, is offering this summer workshop for Computer Science instructors: "Teaching Introductory Computer Science: The Python Way" Three day workshop on campus - August 10 to August 12, 2005 On-Line workshop - August 13 to December 15, 2005 (requires 20 - 30 hours to complete the on-line study pack) Please go to http://www.chapman.edu/wcls/MathCS/sWorkshop/Python/default.asp for workshop information and details. Click on "Online Registration" to register. The instructor is Professor Atanas Radenski from Chapman University. Dr. Radenski teaches Computer Science at Chapman University. During academic year 2004-5, he has developed a novel two semester introductory course at Chapman (Python 1st semester; Java, 2nd semester) that has been well received by students. This workshop will teach Python programming and also how Python can be used in introductory computer science courses. This workshop is supported by a complete online study pack. The workshop study pack includes the following learning content modules: * E-Texts; * Detailed Self-Guided Labs; * Quizzes; * Discussion Forums. The workshop's study pack is a customized replica of the study pack already used for regular courses at Chapman University. The study pack is supported by the Moodle content management system. Participants will be acquainted with the main features of the Moodle system and will be shown how to use it to build and customize your own study packs. Participants will also be able to use the workshop study pack online during and after the workshop. ------------ Chapman University is a small, private, liberal arts university located in the historic, Old Towne district of Orange in central Orange County. Chapman University is a short distance from Disneyland, Knott's Theme Park, Newport Beach and the Pacific Coast area, Discovery Science Center, Crystal Cathedral, and Anaheim Angels Stadium. Atanas Radenski mailto:radenski at chapman.edu http://www.chapman.edu/~radenski/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/edu-sig/attachments/20050518/004af6d2/attachment.html -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: image/gif Size: 663 bytes Desc: image001.gif Url : http://mail.python.org/pipermail/edu-sig/attachments/20050518/004af6d2/attachment.gif From andre.roberge at gmail.com Thu May 19 03:47:09 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Wed, 18 May 2005 22:47:09 -0300 Subject: [Edu-sig] ANN: new version of RUR-PLE Message-ID: Version 0.8.6a is now available. This version is mostly a bug fixed version. * unicode problem corrected (bug introduced in version 0.8.5) * linenumber information on syntax errors corrected * removed the URL browser capability * corrected typo and change explation of next_to_a_beeper() in lessons * corrected name of robot in one lesson Addition: tower of Hanoi solution(.rur file) (with two typical .wld files) 8 queen puzzle solution (.rur file) Additional changes expected in version 0.8.6b Andr? From francesconoschese at sbcglobal.net Thu May 19 17:28:56 2005 From: francesconoschese at sbcglobal.net (Frank Noschese) Date: Thu, 19 May 2005 08:28:56 -0700 (PDT) Subject: [Edu-sig] UPDATE 2: High School Network Security Message-ID: <20050519152856.52928.qmail@web81608.mail.yahoo.com> Hello again, I was able to make a Movable Python CD that includes Idle and the VPython, Numerical, and numarray packages. It runs right off the CD, no installation necessary. Doesn't work well with the Citrix XP machines, but regular Novell XP and '98 machines are fine. The students can still save their work to their network H:/ drive, but Python can't run unless the CD is in the drive. Everything on the network stays intact! It was very easy to do...I can post instructions if anyone is interested. Thanks again so much for all your help! I replied to the tech coodinator with some of your responses...they will reconsider the installation at their next meeting (but I did unfortunately ruffle a few feathers). Frank Noschese John Jay High School Cross River, NY From dblank at brynmawr.edu Thu May 19 18:06:23 2005 From: dblank at brynmawr.edu (Douglas S. Blank) Date: Thu, 19 May 2005 12:06:23 -0400 Subject: [Edu-sig] [Visualpython-users] UPDATE 2: High School Network Security In-Reply-To: <20050519152856.52928.qmail@web81608.mail.yahoo.com> References: <20050519152856.52928.qmail@web81608.mail.yahoo.com> Message-ID: <428CB97F.60809@brynmawr.edu> Frank Noschese wrote: > [Making the bootable CD] was very easy to do...I can post instructions if anyone is interested. That would be useful; any pointers or details would be quite appreciated! -Doug From urnerk at qwest.net Thu May 19 18:20:28 2005 From: urnerk at qwest.net (Kirby Urner) Date: Thu, 19 May 2005 09:20:28 -0700 Subject: [Edu-sig] Interaction Design and Children Message-ID: <20050519162031.CA9961E4022@bag.python.org> I keep meaning to make some points regarding the Jan 2005 issue of 'Communications of the ACM,' which has this article entitled per my subject line -- set or articles actually. Probably the main bit of PR is we learn of new fields: of human-computer interaction (HCI) and of a sub discipline thereof: Interaction Design and Children (IDC). Papert, Minsky and Kay still have focus as big names on this widget panel. I've never met any of them in person, but perhaps the opportunity will arise at various junctures, as it seems we're crossing paths in some ways, though edu-sig doesn't consciously pose as an IDC lab, nor even an HCI shop -- and yet covers a lot of the same ground. Our sample data comes from CS classrooms and experimental programs such as mine, which actually pitch tents outside CS territory, yet keep Python in good shape, doing cool stuff, like RSA, Euler's stuff, PyGeo, and Hypertoons in VPython (projected 'em on a big wall last night, using InFocus hooked to my Toshiba Satellite, went out side and snapped a few through the living room window -- as if driving by and catching sight of this giant geometry cartoon unfolding in some neighborhood (which is exactly what was happening)). And like RUR-PLE, which I'd like to see demo'd. I may be meeting with Arthur pending no schedule conflicts (none that I know of) on Monday, as I'm routing through NYC to points north. Kirby From ajsiegel at optonline.net Thu May 19 19:20:19 2005 From: ajsiegel at optonline.net (Arthur) Date: Thu, 19 May 2005 13:20:19 -0400 Subject: [Edu-sig] Interaction Design and Children In-Reply-To: <20050519162031.CA9961E4022@bag.python.org> Message-ID: <0IGQ00EXMYS5H1@mta8.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Kirby Urner > Sent: Thursday, May 19, 2005 12:20 PM > To: edu-sig at python.org > Subject: [Edu-sig] Interaction Design and Children > I keep meaning to make some points regarding the Jan 2005 issue of > 'Communications of the ACM,' which has this article entitled per my > subject > line -- set or articles actually. > > Probably the main bit of PR is we learn of new fields: of human-computer > interaction (HCI) and of a sub discipline thereof: Interaction Design and > Children (IDC). There is a clear limit: One cannot design around the fact that the child is interacting with an extremely complex machine we cannot ask or expect them to understand. IOW, we cannot design around the fact that there is something quite substantial up our sleeves (and the child necessarily experiences it as such). We can try to ignore this design limitation, we can argue against its significance - but we cannot design it away. I am of the opinion that it is an extremely important design limitation - depending (one can argue) on what we are trying to accomplish. But I guess there is nothing I consider it important to accomplish than can ignore the existence of this limitation. And therefore wonder why this obvious limitation is never addressed as such. And why so many avenues for creative play that don't have this inherent design limitation are not more importantly pursued. And why - at this time - there is so much more seriousness attached and resources applied to such inherently limited pursuits, versus those that exist and have existed with less substantial inherent limitation. The answer of some combination of fashion and forces is the best I can up with it. Or else it is philosophical/mass psychological - we need to believe we are can progress through technology toward some end and in some clear direction which could not otherwise be achieved. Solving some ultimate cryptography puzzle, or something. Googling our way to salvation. Maybe I have paying too much attention to mathematics. None of this seems plausible, to me. > I may be meeting with Arthur pending no schedule conflicts (none that I > know > of) on Monday, as I'm routing through NYC to points north. North to your friends at Design Science toys I'm thinking. A wonderful catalog of stuff, IMO. Concrete, creative playthings. Limited - true enough - by the inconveniences of earthly physics, when compared to a more virtual approach. But that's a good limit to absorb, early. Perhaps childhood should continue to be devoted to it. Looking forward to continuing our dialogue in person. Art From ajsiegel at optonline.net Thu May 19 19:32:38 2005 From: ajsiegel at optonline.net (Arthur) Date: Thu, 19 May 2005 13:32:38 -0400 Subject: [Edu-sig] FW: NetFuture -- Message from Steve Message-ID: <0IGQ00LGSZEJ1Z@mta4.srv.hcvlny.cv.net> -----Original Message----- From: Steve Talbott [mailto:stevet at OREILLY.COM] Sent: Wednesday, May 18, 2005 3:59 PM To: NETFUTURE at MAELSTROM.STJOHNS.EDU Subject: NetFuture -- Message from Steve May 18, 2005 NETFUTURE UPDATE - A MESSAGE FROM STEVE Dear Readers -- The Nature Institute has a new booklet out, called *In the Belly of the Beast: Nature, Technology, and the Human Prospect*, which consists of several major essays of mine from NetFuture. See below for how to receive a copy in acknowledgment of your contribution to NetFuture. * * * * * I have never made a general practice of printing in NetFuture letters whose main purpose is to express appreciation for the publication. I do confess, however, that notes such as the following have always been a source of personal encouragement: Thank you, Steve, for all your efforts in producing NetFuture. I have been a silent reader of NetFuture for many years and have always found them thought provoking. I don't know how far and wide your distribution of NetFuture is, but I can tell you that it has definitely made me stop and reflect on the technology choices I make and influence. I am a product manager for a company that is a recognized leader in mobile software infrastructure for enterprises. I can also tell you that NetFuture was one reason why I quit my job at an e-learning company 4 years ago. I no longer believed in the company's unquestioned application of technology to education after reflecting on several of your articles. Now, my reshaped views may not be moving mountains, but I can assure that the many readers of NetFuture are also absorbing your thoughts, and they are rethinking the choices they make. You may not see the results of your efforts, Steve, but I can assure you that you are having a significant impact all over the world. Keep up the good fight! David Jonker Waterloo, Ontario, Canada There are doubtless many reasons people have for reading NetFuture, from the casual to the intense. I ask that you reflect upon your own reasons and your own scale of values, and consider becoming one of those doers who actually contributes to the publication and thereby enables it to exist in the world. It needs your support. Thank you. Steve The standard contribution form follows. You will also find it on the web at http://www.netfuture.org/support.html. * * * * * Those of you who wish to go directly to The Nature Institute's PayPal account can use this url: https://www.paypal.com/xclick/business=stevet%40oreilly.com&shipping=0.0 0&tax=0.00 However, it would be a good idea to check the special offers described below. If you wish to take advantage of any of them, indicate which ones when filling out the information for PayPal. ========================================================================== Here are the standard options, although you are not limited to these. (Foreign subscribers, please see the note at end.) All subscriptions are viewed as being for one year and are tax-deductible donations (U.S. taxes). And please note: if your company is willing to match employee charitable contributions, then this is an easy way to increase your support of NetFuture. ______ Standard subscription ($20). Upon request (see below), we will also send you The Nature Institute's twice-yearly newsletter. ______ Heroic subscription ($50). Upon request (see below), we will also send you a copy of *The Future Does Not Compute: Transcending the Machines in Our Midst*, by Stephen L. Talbott (retail value: $22.95), as well as the twice-yearly newsletter of The Nature Institute and a copy of *In the Belly of the Beast: Technology, Nature, and the Human Prospect* (retail value: $8). ______ Grandiose subscription ($100). This entitles you to the additional items listed above, if you request them. ______ Mother of All Subscriptions ($500). This entitles you to the additional items listed above, if you request them. ______ Other $ _________. (*Any* amount will be appreciated.) ______ Yes, I would also like to receive the twice-yearly Newsletter of The Nature Institute. Please send it to the address below. ______ Yes, I have contributed at least $50 and would like to receive *The Future Does Not Compute*. Please send it to the address below. ______ Yes, I have contributed at least $50 and would like to receive *In the Belly of the Beast: Technology, Nature, and the Human Prospect*. Please send it to the address below. Payment: We have set up an account for NetFuture (The Nature Institute) at PayPal.com. To use it, go to this url: https://www.paypal.com/xclick/business=stevet%40oreilly.com&shipping=0.0 0&tax=0.00 If you do this, be sure to note with your payment whether you are requesting either of the free offers (newsletter or book) listed above. You can enter this information, along with anything else you want to say, in the box labeled "Payment For". You will be asked by PayPal to log in and supply a password if you are not already a PayPal user. All others should fill out the following: ______ Check or money order is enclosed ______ Charge my: ____ Visa ____ MasterCard ____ American Express (NOTE: Do not send your card number through email.) Card number: ____________________________________________ Expiration date: ____________________________________________ Signature: _________________________________________________ Your mailing address: Name ____________________________________________________________________ Street or Box ___________________________________________________________ City, State _____________________________________________________________ Country and postal code _________________________________________________ Email address (optional) ________________________________________________ Make checks and money orders payable to The Nature Institute. Fax this form (with your credit card number) to 518-672-4270. Or mail it with your payment to: The Nature Institute Attn: NetFuture 20 May Hill Road Ghent, New York 12075 U.S.A. Note to foreign subscribers: You can send a check or money order in U.S. dollars, or use the credit card option (specifying the amount in dollars) -- all by using the form above. Alternatively, to save bother with currency conversion, you can wire your contribution to this account in Germany: Gemeinnuetzige Treuhandstelle e.V. Account Nr. 13 022 710 GLS Gemeinschaftsbank eG, Bochum Routing Number (BLZ): 430 609 67 Purpose: The Nature Institute Nr. 41 089 If you do take advantage of this German account, you should still fill out the form above and mail it as directed, or email it to stevet at oreilly.com. Also, be sure to provide your address to the bank so that they can acknowledge receipt of your contribution. And finally: THANK YOU! Steve ------------------------------ Steve Talbott (stevet at oreilly.com), NetFuture editor On the web: http://www.netfuture.org/ From ajsiegel at optonline.net Thu May 19 21:28:48 2005 From: ajsiegel at optonline.net (Arthur) Date: Thu, 19 May 2005 15:28:48 -0400 Subject: [Edu-sig] Interaction Design and Children In-Reply-To: <0IGQ00EXMYS5H1@mta8.srv.hcvlny.cv.net> Message-ID: <0IGR001E24S46W@mta4.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Arthur > Behalf Of Kirby Urner > > Maybe I have paying too much attention to mathematics. None of this seems > plausible, to me. I happen to love technology and the games we can play with it - certainly more than most. But one needs to move more than slowly where there is a possibility of confusing the ego needs of adults with the best interests our children. I think anything else is the definition of bad parenting. And any argument that we are not in the territory of such potential confusion falls on hollow ears - in my particular case. So yes, I find it quite hard to shut up. Art From andre.roberge at gmail.com Thu May 19 21:58:10 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Thu, 19 May 2005 16:58:10 -0300 Subject: [Edu-sig] Interaction Design and Children In-Reply-To: <20050519162031.CA9961E4022@bag.python.org> References: <20050519162031.CA9961E4022@bag.python.org> Message-ID: Kirby Urner wrote: [snip] > And like RUR-PLE, which I'd like to see demo'd. Sorry, I couldn't resist. Andy Judkis at the Academy of Allied Health and Science, in Neptune NJ, had decided to inflict RUR-PLE on his 10th graders. The response has been so far very positive from the students from what I hear. As for a demo.... Somewhat like Python, RUR-PLE comes with batteries (in this case, lessons) included. ;-) Andr? > > I may be meeting with Arthur pending no schedule conflicts (none that I know > of) on Monday, as I'm routing through NYC to points north. > > Kirby From sandysj at juno.com Fri May 20 00:12:14 2005 From: sandysj at juno.com (Jeff Sandys) Date: Thu, 19 May 2005 22:12:14 GMT Subject: [Edu-sig] UPDATE 2: High School Network Security Message-ID: <20050519.151219.10110.80567@webmail10.nyc.untd.com> I don't know how your admins can accept this, it doesn't solve any of their issues; support, testing, legal and security. Or is this a case of don't ask, don't tell. We had a problem getting open source past our IT staff at work, they didn't know who to send the purchase order to. All my school district wants to install any software on the system network is a copy of the license agreement. -- Jeff > I was able to make a Movable Python CD ... > It runs right off the CD, ___________________________________________________________________ Get Juno Platinum for as low as $4.97/month! Unlimited Internet Access with 250MB of Email Storage. Visit http://www.juno.com/half to sign up today! From francesconoschese at sbcglobal.net Fri May 20 06:13:16 2005 From: francesconoschese at sbcglobal.net (Frank Noschese) Date: Thu, 19 May 2005 21:13:16 -0700 (PDT) Subject: [Edu-sig] Movable Python CD Message-ID: <20050520041316.30059.qmail@web81609.mail.yahoo.com> How to Make a Movable Python CD with VPython, Numeric, and numarray: (1) The computer which is to burn the CD should have Python and VPython installed. (2) Download and unzip Movable Python Standard 0.4.6-2.4. The standard distribution comes with IPython, psyco, wxPython, IDLE, and SPE built in. Available at: (3) Next, go to C:\Python24\Lib\sitepackages\ and copy the folders numarray, Numeric, Visual, and the file Numeric.pth. (4) Paste them into the Movable Python movpy\lib\ folder. (5) Edit the syspaths.pth file located in movpy\lib\ to include the word Numeric. (6) Burn the movpy folder onto a CD and you're done! This is NOT at boot CD (like Knoppix). Windows must be up and running on the computer that is to execute Movable Python. To use Python on the CD, simply open the file idle.bat or spe.bat on the CD. It will take several seconds for either one to start. Recent testing has shown that the CD will work on CITRIX XP workstations, but Vpython is too slow to be useful. In addition, I have NOT had success using the CD on the Win98 workstations. XP workstations are fine. To the best of my knowledge, no MAC verison of Movable Python is available. For more info about Movable Python, see: Have fun! Frank Noschese John Jay High School Cross River, NY From ajsiegel at optonline.net Fri May 20 16:49:50 2005 From: ajsiegel at optonline.net (Arthur) Date: Fri, 20 May 2005 10:49:50 -0400 Subject: [Edu-sig] Good Ol' Mr. B Message-ID: <0IGS00D0OMJ842@mta5.srv.hcvlny.cv.net> >My sister forwarded to me some discussion on a school alumni site she came >across about a teacher she knows I loved Haphazardly just now re-establishing contact with the folks who shared the experience of Mr. B and who still recognize that experience as seminal over 40 years later - considering the extent to which that experience has influenced the thinking that I "share" here - is, well, pinky fingerish. Incredible that Mr. B is alive and active - he seemed quite the adult then, over 40 years ago. I had seen him once since leaving the home town nest - but that last re-union was itself some 20 years ago. Based on what my sister sent me I contacted Hal. Hal was by closest friend during this period. I know he had gone on to found an insurance company and serves as its Chairmen. Having recalled that when we were 12 we had decided that we were going to be business partners when we grew up (and came up with a name for our company), I wrote him reminding him we had shaken hands as partners - and asked him for an accounting. I hope he knows what ;) means. Python. Art From urnerk at qwest.net Sat May 21 01:14:50 2005 From: urnerk at qwest.net (Kirby Urner) Date: Fri, 20 May 2005 16:14:50 -0700 Subject: [Edu-sig] Back to continued fractions Message-ID: <20050520231452.D59FF1E4004@bag.python.org> This is continuing threads of a long time ago, when we explored Python and Continued Fractions (CFs). As I recall, Tim Peters showed me the non-recursive algorithms for doing them. In the module below, however, I'm doing recursive: http://mathforum.org/kb/thread.jspa?threadID=1153661&tstart=0 Note it's all set up for doctest unit testing, but I don't actually show that infrastructure being invoked. This is partly out of deference to Math Forum readers being non-Python readers in large degree -- there's only so much they need to know via that API. Kirby From urnerk at qwest.net Tue May 24 19:08:34 2005 From: urnerk at qwest.net (Kirby Urner) Date: Tue, 24 May 2005 13:08:34 -0400 Subject: [Edu-sig] On the road Message-ID: <20050524170840.249271E4002@bag.python.org> Greetings edu-siggers -- So I had a good meeting with Arthur over dinner yesterday evening, around 87th and Amsterdam on the upper west side (NYC). I posted a short blog entry mentioning that (as well as other details from my day) here: http://mybizmo.blogspot.com/2005/05/tree-house.html We also talked about the no open source software policies of the lower Hudson school district (which is where I am right now, in Barrytown, NY). Kirby From chuck at freshsources.com Wed May 25 01:32:23 2005 From: chuck at freshsources.com (Chuck Allison) Date: Tue, 24 May 2005 17:32:23 -0600 Subject: [Edu-sig] Need a Mentor Message-ID: <1910697801.20050524173223@freshsources.com> Hello edu-sig, Since this is an educational forum, perhaps I can ask if you can recommend a willing volunteer to answer some pretty reasonable questions for me. I am deepening my mastery of Python and have some intermediate-to-advanced level queries for someone. Any suggestions? I'll revert to private mail, of course, when I get a gracious volunteer. And I won't inundate anyone. Thanks. -- Best regards, -- Chuck Allison From urnerk at qwest.net Wed May 25 02:17:40 2005 From: urnerk at qwest.net (urnerk@qwest.net) Date: Tue, 24 May 2005 20:17:40 -0400 Subject: [Edu-sig] Need a Mentor Message-ID: <103650-22005532501740614@M2W069.mail2web.com> Hi Chuck -- You can try me. I'm traveling right now, but it's a pretty easy trip with plenty of connectivity. Was doing wireless in Grand Central Station last night, which was somehow very satisfying. The tutor list is also very helpful -- I've gotten many questions answered there over the years. But I'm game as well. You'll likely get other offers. The Python community is notoriously friendly. http://mail.python.org/mailman/listinfo/tutor Kirby Original Message: ----------------- From: Chuck Allison chuck at freshsources.com Date: Tue, 24 May 2005 17:32:23 -0600 To: edu-sig at python.org Subject: [Edu-sig] Need a Mentor Hello edu-sig, Since this is an educational forum, perhaps I can ask if you can recommend a willing volunteer to answer some pretty reasonable questions for me. I am deepening my mastery of Python and have some intermediate-to-advanced level queries for someone. Any suggestions? I'll revert to private mail, of course, when I get a gracious volunteer. And I won't inundate anyone. Thanks. -- Best regards, -- Chuck Allison _______________________________________________ Edu-sig mailing list Edu-sig at python.org http://mail.python.org/mailman/listinfo/edu-sig -------------------------------------------------------------------- mail2web - Check your email from the web at http://mail2web.com/ . From marilyn at deliberate.com Wed May 25 06:31:59 2005 From: marilyn at deliberate.com (Marilyn Davis) Date: Tue, 24 May 2005 21:31:59 -0700 (PDT) Subject: [Edu-sig] Need a Mentor In-Reply-To: <1910697801.20050524173223@freshsources.com> Message-ID: On Tue, 24 May 2005, Chuck Allison wrote: > Hello edu-sig, > > Since this is an educational forum, perhaps I can ask if you can > recommend a willing volunteer to answer some pretty reasonable > questions for me. I am deepening my mastery of Python and have some > intermediate-to-advanced level queries for someone. Any suggestions? > I'll revert to private mail, of course, when I get a gracious > volunteer. And I won't inundate anyone. Thanks. > Chuck, you want to join the tutor at python.org list. Folks there are wonderfully knowledgeable and patient with Python questions. http://mail.python.org/mailman/listinfo/tutor Good luck! Marilyn Davis > -- From chuck at freshsources.com Thu May 26 02:00:35 2005 From: chuck at freshsources.com (Chuck Allison) Date: Wed, 25 May 2005 18:00:35 -0600 Subject: [Edu-sig] Programming Exercises Message-ID: <08991054.20050525180035@freshsources.com> Hello edu-sig, Does anyone know of a good source of programming exercises/projects to use when teaching Python to people who already know another language? Solutions don't need to be available - I just need some good sample programming assignments. Thanks. -- Best regards, -- Chuck Allison From Scott.Daniels at Acm.Org Thu May 26 09:55:15 2005 From: Scott.Daniels at Acm.Org (Scott David Daniels) Date: Thu, 26 May 2005 00:55:15 -0700 Subject: [Edu-sig] Programming Exercises In-Reply-To: <08991054.20050525180035@freshsources.com> References: <08991054.20050525180035@freshsources.com> Message-ID: Chuck Allison wrote: > Hello edu-sig, > > Does anyone know of a good source of programming exercises/projects > to use when teaching Python to people who already know another > language? Solutions don't need to be available - I just need some > good sample programming assignments. Thanks. > You need to tell us what yu are interested in / would like to do. Do you want to find eigenvectors? Do you want to do GUI work? .... -- -- Scott David Daniels Scott.Daniels at Acm.Org From dooms at info.ucl.ac.be Thu May 26 10:47:36 2005 From: dooms at info.ucl.ac.be (=?ISO-8859-1?Q?Gr=E9goire_Dooms?=) Date: Thu, 26 May 2005 10:47:36 +0200 Subject: [Edu-sig] Programming Exercises In-Reply-To: <08991054.20050525180035@freshsources.com> References: <08991054.20050525180035@freshsources.com> Message-ID: <42958D28.6040209@info.ucl.ac.be> Chuck Allison wrote: >Hello edu-sig, > > Does anyone know of a good source of programming exercises/projects > to use when teaching Python to people who already know another > language? Solutions don't need to be available - I just need some > good sample programming assignments. Thanks. > > > You can find a few in my course at http://www.info.ucl.ac.be/~dooms/python/python.html Have a look at the slides at http://www.info.ucl.ac.be/~dooms/python/slides.pdf This is a 2 days course mostly followed by unemployed programmers or students looking for quick start with Python. The assignments are done as exercices in class so they are not big. All the best, -- Gregoire Dooms From chuck at freshsources.com Thu May 26 10:54:47 2005 From: chuck at freshsources.com (Chuck Allison) Date: Thu, 26 May 2005 02:54:47 -0600 Subject: [Edu-sig] Programming Exercises In-Reply-To: References: <08991054.20050525180035@freshsources.com> Message-ID: <24650577.20050526025447@freshsources.com> Hello Scott, Thursday, May 26, 2005, 1:55:15 AM, you wrote: SDD> Chuck Allison wrote: >> Hello edu-sig, >> >> Does anyone know of a good source of programming exercises/projects >> to use when teaching Python to people who already know another >> language? Solutions don't need to be available - I just need some >> good sample programming assignments. Thanks. >> SDD> You need to tell us what yu are interested in / would like to do. SDD> Do you want to find eigenvectors? Do you want to do GUI work? .... Good question. Mostly I need general assignments (using sequences, mappings, text processing, basic OO, launching processes for testing, etc.), but also simple mail apps and basic COM (like processing Microsoft Word docs). No higher math. Some basic GUI ones would be nice too (will be using wxPython). Thanks! -- Best regards, Chuck From ajsiegel at optonline.net Thu May 26 14:54:05 2005 From: ajsiegel at optonline.net (Arthur) Date: Thu, 26 May 2005 08:54:05 -0400 Subject: [Edu-sig] Lisping Message-ID: <0IH300IH5L69EP@mta4.srv.hcvlny.cv.net> Got through the first few chapters of "Practical Common Lisp". Whether I end up liking Lisp remains to be seen, but I have seen enough already to begin to appreciate Lisp. And have more confidence that my instincts where sensible - taking this detour as a way of getting to the next stage as a Python programmer. And the experience, so far, also reinforces my instincts about Python - as a learning language. With little other than some Python under my belt, I can make my way through the Lisp presentation feeling prepared and competent. So in my case, Python has been foundation for exploring first Java - and getting far enough into it that I felt I understood its fundamentals, and that I could become competent in it should I choose (and chose not to) - and now Lisp. I would think that the fact that Python has provided a foundation that could take me in each of these directions says a lot its utility as a learning language. I just wish, as always, we could disassociate "learning language" from the notion of "easy". I wouldn't expect an effort that provides the foundation for learning of approaches to programming as diverse as Java and Lisp to be easy. My sense is that in some important senses learning Java is easier than learning Python. But at the end of it I also suspect that one is a Java programmer - and little else. Which is why it is not a particularly good learning language. Art From chandrakirti at gmail.com Thu May 26 16:39:29 2005 From: chandrakirti at gmail.com (Lloyd Hugh Allen) Date: Thu, 26 May 2005 10:39:29 -0400 Subject: [Edu-sig] Lisping In-Reply-To: <0IH300IH5L69EP@mta4.srv.hcvlny.cv.net> References: <0IH300IH5L69EP@mta4.srv.hcvlny.cv.net> Message-ID: <24d253d905052607392206db22@mail.gmail.com> As a math teacher, I always fear that I am teaching my students a particular piece of technology rather than the concept that I am trying to teach. As a small example, I am confident that my students can find the point of intersection between two lines with a TI-83, but less confident that they can find it with a TI-92 or a Casio-whatever; and I often fear that they don't recognize that they would get the same answer by solving each equation for y, setting the y's equal to each other, and then solving for x. Geometry packages give an even clearer, more appropriate example. The two leading commercial products (one of these days I'll take a look at pyGeo and see what it does) are Gemoter's Sketchpad (GSP) and Cabri. Most high schools seem to use GSP, where I've heard that several universities use Cabri. The programs are opposite in orientation; GSP is more object oriented (click a pair of points, then choose the command to draw a line through them) where Cabri is more procedural (at least for the old version, you would say that you are in line-drawing mode, and then choose two points). I often fear that I am teaching GSP rather than geometry, and I know that (of those who use GSP) most of my colleagues within my own building are afraid of Cabri because they have only used GSP. It is fine and good to learn a single language, but this is not computer science. A single language is just a tool. It is necessary to learn several languages in order to have an idea of what computer science actually means. Different languages have different orientations, different tools, and different fundamental assumptions. I would want my students (indeed, myself) to be able to solve a problem/write a program satisfying particular criteria in ANY appropriate language, and also to recognize which languages are inappropriate for a given task. Prerequisite to this is knowledge and use of more than one language. Not a good language? Depends. What's the task? On 5/26/05, Arthur wrote: > > > Got through the first few chapters of "Practical Common Lisp". > > Whether I end up liking Lisp remains to be seen, but I have seen enough > already to begin to appreciate Lisp. > > And have more confidence that my instincts where sensible - taking this > detour as a way of getting to the next stage as a Python programmer. > > And the experience, so far, also reinforces my instincts about Python - as a > learning language. With little other than some Python under my belt, I can > make my way through the Lisp presentation feeling prepared and competent. > > So in my case, Python has been foundation for exploring first Java - and > getting far enough into it that I felt I understood its fundamentals, and > that I could become competent in it should I choose (and chose not to) - > and now Lisp. > > I would think that the fact that Python has provided a foundation that could > take me in each of these directions says a lot its utility as a learning > language. > > I just wish, as always, we could disassociate "learning language" from the > notion of "easy". I wouldn't expect an effort that provides the foundation > for learning of approaches to programming as diverse as Java and Lisp to be > easy. My sense is that in some important senses learning Java is easier > than learning Python. But at the end of it I also suspect that one is a > Java programmer - and little else. Which is why it is not a particularly > good learning language. > > Art > > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig > From Scott.Daniels at Acm.Org Thu May 26 19:10:31 2005 From: Scott.Daniels at Acm.Org (Scott David Daniels) Date: Thu, 26 May 2005 10:10:31 -0700 Subject: [Edu-sig] Programming Exercises In-Reply-To: <24650577.20050526025447@freshsources.com> References: <08991054.20050525180035@freshsources.com> <24650577.20050526025447@freshsources.com> Message-ID: Chuck Allison wrote: > Hello Scott, > > Thursday, May 26, 2005, 1:55:15 AM, you wrote: > > SDD> Chuck Allison wrote: > >>>Hello edu-sig, >>> >>> Does anyone know of a good source of programming exercises/projects >>> to use when teaching Python to people who already know another >>> language? Solutions don't need to be available - I just need some >>> good sample programming assignments. Thanks. >>> > > SDD> You need to tell us what yu are interested in / would like to do. > SDD> Do you want to find eigenvectors? Do you want to do GUI work? .... > > Good question. Mostly I need general assignments (using sequences, > mappings, text processing, basic OO, launching processes for testing, > etc.), but also simple mail apps and basic COM (like processing > Microsoft Word docs). No higher math. Some basic GUI ones would be > nice too (will be using wxPython). Thanks! > > First, do the Python tutorial if you have not. Try following Dive Into Python if it meets your tastes. For text processing: Create or obtain a couple of plain ASCII texts. One should be short for testing and development, and another long for fun and production. Look to Project Gutenberg if you don't have anything long yourself. Make a concordance (words to position) that you can save and restore w/o re-counting your text. Find the N (50 for big) most frequent words used. Once you have all that working, figure out how to show all instances of a selected word "in context". For extra credit, words, sorted by frequency or alphabetically (button selectable) presented on a wx window that show your "word in context" when clicking on a word. That should hold you for a day or two. --- My bias is to go test-forward, so (if you want to try that) here is a start (a first test to pass). Most of this is boilerplate, look at the body of test_words to see the only actual test here. Create a test_wordy.py file as so: import unittest from StringIO import StringIO import wordy # the module you are actually testing class TestWords(unittest.TestCase): def test_words(self): source = StringIO("a test") self.assertEqual(['a', 'test'], list(wordy.aswords(source))) if __name__ == '__main__': unittest.main() Now, when you run python on this file you will get a failure. The first one is that wordy.py doesn't exist. Keep fixing until your test passes. Then add tests for new behavior, watch them fail, and fix the source until it works. --Scott David Daniels Scott.Daniels at Acm.Org From chuck at freshsources.com Thu May 26 19:23:48 2005 From: chuck at freshsources.com (Chuck Allison) Date: Thu, 26 May 2005 11:23:48 -0600 Subject: [Edu-sig] Lisping In-Reply-To: <0IH300IH5L69EP@mta4.srv.hcvlny.cv.net> References: <0IH300IH5L69EP@mta4.srv.hcvlny.cv.net> Message-ID: <1751302776.20050526112348@freshsources.com> Hello Arthur, FWIW, being a fairly old hacker (started with FORTRAN in the 70s, then learned PL/I, APL, C, Lisp, C++, Java, Python, ML, Prolog -- probably missed a few), I'd like to make what I'm sure is an oft-repeated comment: Python is awesome! I see it as an ideal entry point to programming, but it is also very rich and incredibly powerful for most any task. I have been studying in depth "Python in a Nutshell", "Practical Python", and "Learning Python", and have decided that I could use Python as the key language in a senior-level analysis of programming languages course at the college. Even though I've used Python casually for over 3 years, going to the next level has been a real eye-opener. Knowing Lisp was very helpful, but I can easily see how going the other way would work just dandy. Thursday, May 26, 2005, 6:54:05 AM, you wrote: A> Got through the first few chapters of "Practical Common Lisp". A> Whether I end up liking Lisp remains to be seen, but I have seen enough A> already to begin to appreciate Lisp. A> And have more confidence that my instincts where sensible - taking this A> detour as a way of getting to the next stage as a Python programmer. A> And the experience, so far, also reinforces my instincts about Python - as a A> learning language. With little other than some Python under my belt, I can A> make my way through the Lisp presentation feeling prepared and competent. A> So in my case, Python has been foundation for exploring first Java - and A> getting far enough into it that I felt I understood its fundamentals, and A> that I could become competent in it should I choose (and chose not to) - A> and now Lisp. A> I would think that the fact that Python has provided a foundation that could A> take me in each of these directions says a lot its utility as a learning A> language. A> I just wish, as always, we could disassociate "learning language" from the A> notion of "easy". I wouldn't expect an effort that provides the foundation A> for learning of approaches to programming as diverse as Java and Lisp to be A> easy. My sense is that in some important senses learning Java is easier A> than learning Python. But at the end of it I also suspect that one is a A> Java programmer - and little else. Which is why it is not a particularly A> good learning language. A> Art A> _______________________________________________ A> Edu-sig mailing list A> Edu-sig at python.org A> http://mail.python.org/mailman/listinfo/edu-sig -- Best regards, Chuck From radenski at chapman.edu Thu May 26 22:45:59 2005 From: radenski at chapman.edu (Radenski, Atanas) Date: Thu, 26 May 2005 13:45:59 -0700 Subject: [Edu-sig] Lisping Message-ID: > It is fine and good to learn a single language, but this is not > computer science. A single language is just a tool. It is necessary to > learn several languages in order to have an idea of what computer > science actually means. I believe that introductory computer science should be taught with more than one language. Certainly, teaching several languages poses its own problems. I believe two languages are just right for CS1/2 courses. My personal choice has been Python for CS1 and Java for CS2. In this way, students get familiar with the two principal programming language cultures: interpreted languages and compiled languages. My experience shows that students learn Java easier after having been acquainted with Python. Also, teaching CS1 with Python and then CS2 with Java allows one to cover more concepts (than by using only Java for both CS1 and CS2) namely because the two languages are so different. > Different languages have different > orientations, different tools, and different fundamental assumptions. > I would want my students (indeed, myself) to be able to solve a > problem/write a program satisfying particular criteria in ANY > appropriate language, and also to recognize which languages are > inappropriate for a given task. Prerequisite to this is knowledge and > use of more than one language. Very well said, indeed. It can hardly be said better than this. Atanas Radenski mailto:radenski at chapman.edu http://www.chapman.edu/~radenski/ Thinking is the hardest work there is, which is probably why so few engage in it -- Henry Ford From dyoo at hkn.eecs.berkeley.edu Thu May 26 23:29:20 2005 From: dyoo at hkn.eecs.berkeley.edu (Danny Yoo) Date: Thu, 26 May 2005 14:29:20 -0700 (PDT) Subject: [Edu-sig] Python and OCaml (Was Lisping) In-Reply-To: Message-ID: On Thu, 26 May 2005, Radenski, Atanas wrote: > > It is fine and good to learn a single language, but this is not > > computer science. A single language is just a tool. It is necessary to > > learn several languages in order to have an idea of what computer > > science actually means. > > I believe that introductory computer science should be taught with more > than one language. Certainly, teaching several languages poses its own > problems. I believe two languages are just right for CS1/2 courses. My > personal choice has been Python for CS1 and Java for CS2. In this way, > students get familiar with the two principal programming language > cultures: interpreted languages and compiled languages. Hi Atanas, Rather than contrasting languages based on compiled vs. interpreted, I think a comparative course based on the treatment of types would be interesting. I've always been curious; has anyone heard of an approach that uses Python and OCaml? The two languages have such a different take on the value of typing; Python does type checking at runtime, and OCaml at compile time. From dyoo at hkn.eecs.berkeley.edu Fri May 27 03:57:58 2005 From: dyoo at hkn.eecs.berkeley.edu (Danny Yoo) Date: Thu, 26 May 2005 18:57:58 -0700 (PDT) Subject: [Edu-sig] An somewhat stale article about using Java for introductory programming; what can we as Python educators learn from them? Message-ID: Hi everyone, [Warning: I guess I ramble and rant here a bit. My apologies!] I picked up an interesting (if outdated) article on the "Use of Java as an Introductory Programming Language": http://www.acm.org/crossroads/xrds4-4/introjava.html It's written in the 1990's, so some of the comments are not relevant, but a surprising number of them are still quite pointed. Here's the jist of the article: Georgia Institute of technology switched to Java for their courses because: 1. They were concerned that Pascal wasn't up to date with current programming practice. 2. Java provided OOP, garbage collection, and exceptions. 3. Java was more marketable. They ran into the following problems: 1. Input and output routines in Java were hideous. They got around this by providing their own library. 2. Java error messages weren't helpful. They rewrote the error messages themselves to suit their students. 3. Students found it easier to plagerize, given the popularity of the language. 4. Introductory books were scarce at the time. 5. The division between primitive types and the other data types was difficult to explain to new users. 6. There was a high initial overhead due to Java's scaffolding code. (public static void main(String[] args) { ... }) The authors argue, finally, that the particular programming language chosen really isn't a factor, but that: 1. Teaching good design (modularity, coupling, abstraction, etc.) 2. Showing iterative program construction in the classroom were really more important. This I agree with, and thought the mention of Eductional Software Process (ESP), to use industry best practices, sounded very relevant, much like the introduction of unit testing as an educational technique. Yet... I know I shouldn't think this, but the tone felt a little half-hearted, considering that the author had just finished describing the factors that they said hampered their student's understanding of the system. I just found it sad that the majority of the article focused on all the problems Georgia Tech instructors ran into, but then again, it's easier to point out failures than successes. A lot of the cons in the problem section above are points in favor for Python, but there are some things that Python could benefit from. In particular, I thought Problem 2, on customizing error messages to make erroneous situations easier to understand, was a very interesting one. As I understand it, many of Python's error messages are hardcoded into modules and binaries. Would it be worth it to allow for easy error message customization through some external file resource? Last of all, I took a look at Georgia Tech's CS 1321 web page, just out of curiosity, and came with: http://www.cc.gatech.edu/classes/AY2005/cs1321_spring/ So perhaps language matters after all. *cough cough* From ajsiegel at optonline.net Fri May 27 04:32:40 2005 From: ajsiegel at optonline.net (Arthur) Date: Thu, 26 May 2005 22:32:40 -0400 Subject: [Edu-sig] An somewhat stale article about using Java for introductory programming; what can we as Python educators learn from them? In-Reply-To: References: Message-ID: <429686C8.3030603@optonline.com> Danny Yoo wrote: >Last of all, I took a look at Georgia Tech's CS 1321 web page, just out of >curiosity, and came with: > > http://www.cc.gatech.edu/classes/AY2005/cs1321_spring/ > > On the syllabus page linked from your cite: "Learning to program is like learning a sport." This is an observation I have made here before - meaning it in a literal way. And as an observation, not something I analyze - observing that for myself the process, and what it stimulates, and what motivates me, when learning to program seemed somehow familiar. And it took to me a while to realize why it seemed familiar. I came to programming late, but I have always been somethng of a jock . And maybe I came to programming late, only because and in substution for some of the satisfaction I have always gotten from athletics - having reached an age where in most athletics pursuits my abilities were declining from where they had once been. But I clearly missed the process. And learning to program is like learning a sport. So I'm back on the field, testing and stretching my abilities - just in a different way. Nice that the observation here is being made by a woman instructor. But strange that "geek" seems to have the almost opposite connotation - as someone actively disinterested in athletic activity. I guess I had speculated that those who get into programming deeply when young are those for whatever reason cut-off from physical gymnastics, so tend toward mental gymnastics. Or something. Art From tjd at sfu.ca Fri May 27 21:42:56 2005 From: tjd at sfu.ca (Toby Donaldson) Date: Fri, 27 May 2005 12:42:56 -0700 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: Message-ID: On 5/26/05 7:32 PM, "edu-sig-request at python.org" wrote: >> It is fine and good to learn a single language, but this is not >> computer science. A single language is just a tool. It is necessary to >> learn several languages in order to have an idea of what computer >> science actually means. > > I believe that introductory computer science should be taught with more > than one language. Certainly, teaching several languages poses its own > problems. I believe two languages are just right for CS1/2 courses. My > personal choice has been Python for CS1 and Java for CS2. In this way, > students get familiar with the two principal programming language > cultures: interpreted languages and compiled languages. My experience > shows that students learn Java easier after having been acquainted with > Python. Also, teaching CS1 with Python and then CS2 with Java allows one > to cover more concepts (than by using only Java for both CS1 and CS2) > namely because the two languages are so different. I've been involved with teaching CS1/CS2 style courses for the last couple of years where Python is used in the first course, and Java in the second. It's a good combination. Simple Python programs are usually much easier to read and simpler to write than simple Java programs, and so students new to programming really like it. Interestingly, some of the students who have programmed before sometimes complained that Python was just a toy scripting language, and why weren't we teaching them C++ (because that what video games are written in, don't you know). Python's clean syntax is also good as a pseudo-code; I use it all the time now in other courses that don't use Python as the implementation language. The Python interpreter is another big pedagogical plus. The interpreter makes it easy to play with Python and get immediate feedback. It also naturally encourages an incremental and modular programming style. (I don't think the compiled/interpreted distinction is that big a deal. Both Python and Java blur that distinction. The speed and ease of feedback seems to have a bigger impact on beginners.) Seeing all the basic ideas of programming in a friendlier and easier environment surely helps when it comes to learning Java. It makes dealing with Java's OO overhead and relative prolixity more palatable. On the down side, the Python IDEs I've seen are nowhere near as good as the Java IDEs such as Eclipse or IDEA. This is no problem for Catholic coders who dislike IDEs, and it is less of problem for Python because of its good syntax, but an IDE that supports refactoring and incremental compiling sure would be nice. Toby -- Dr. Toby Donaldson School of Computing Science Simon Fraser University From ajsiegel at optonline.net Sat May 28 00:25:03 2005 From: ajsiegel at optonline.net (Arthur) Date: Fri, 27 May 2005 18:25:03 -0400 Subject: [Edu-sig] Lisping In-Reply-To: <8daabe560505271234344f2cb5@mail.gmail.com> Message-ID: <0IH6001WR6A9J5@mta6.srv.hcvlny.cv.net> > -----Original Message----- > From: D. Hartley [mailto:denise.hartley at gmail.com] > Art, > > So Python was your foundation for exploring Java - Can I ask, by what > route? I began with Python, but lately have been exploring Jython as a > way to make use of Java libraries and so on while writing in Python > (with the option of eventually learning actual Java code--or not!), so > your post on the edu-sig list intrigued me. Well I also started into Java via Jython (it was JPython then - I always seem to be putting myself in the "old man" role but even if I were a younger man, I still feel like an "old man" of the Python community - I have been causing trouble in it for a decent number of years by now. But there are plenty of older men yet, within it - though most are younger than I.) I was particularly interested in getting at some of the 3d and GUI stuff available as Java libraries. One watershed for me was in exploring Java3d via Jython I ran into something that I couldn't get past, and by a fairly close analysis and boiling the issue down to its most basic manifestation I was able to conclude with some confidence that what I was running into was actually a bug in Jython, and was then able to report it to the Jython developers in a fairly concise manner. Probably the first time I was able to convince myself that I was at some level "getting it". Turns out that in the thousands of line of Jython code, somewhere a ">" should have been a ">=". *That* I would have never found. But was impressed that someone did, and the fact that that missing character manifested itself in the way that it did help teach me something else important about programming. But doing 3d stuff, I went further into Java so that I would be able to do directly in Java some of the more intensive stuff, and gain performance. One key learning project I undertook which taught me something of Java, more of Python, and a good deal about NumPy was a port I did of the Java3d javax matrix/vector library to Python and NumPy. I forgot why. Probably if I knew more I wouldn't have done it. But I certainly knew I was involved in a good learning experience, and was creating those kinds of experiences for myself as I could find them or think them up. Porting from and to Python and Java helped me better understand both, their similarities, and their differences. Good stuff. When VPython (a C++ library) came along a good deal of what I was doing with Jython and Java was mooted. What I was really looking for, or to create, in Jython and Java was in fact something amazingly like VPython. Though it never would have been as good as VPython. With VPython on the scene I have occasionally needed to try to get at least some idea of C++ so that I could understand that code to the extent I needed to. Which is the extent of my C++ expertise. I did accomplish something concrete. Found that "mag2" - the squared length of a VPython vector - was often being first calculated, and then the square root of mag2 was being exposed through the API to Python as "mag". And I often would be needing primarily its square - back to mag2, which was not exposed. So I did a patch that was accepted that exposed mag2 directly, and avoided taking its square root in C++ and squaring it in Python. But that's all a lot to try to fit on my tombstone. Art From ajsiegel at optonline.net Sat May 28 13:11:06 2005 From: ajsiegel at optonline.net (Arthur) Date: Sat, 28 May 2005 07:11:06 -0400 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: Message-ID: <0IH700CBB5SH0R@mta1.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Toby Donaldson > > On 5/26/05 7:32 PM, "edu-sig-request at python.org" > wrote: > > > I've been involved with teaching CS1/CS2 style courses for the last couple > of years where Python is used in the first course, and Java in the second. > It's a good combination. > > Simple Python programs are usually much easier to read and simpler to > write > than simple Java programs, and so students new to programming really like > it. Interestingly, some of the students who have programmed before > sometimes > complained that Python was just a toy scripting language, and why weren't > we > teaching them C++ (because that what video games are written in, don't you > know). If they serious about video games, they (I was surprised myself to find) should be learning Lisp ;). I am always interested in a language's 3d resources, so in investigating those of Lisp I was surprised to find the role it play in the development of modern video games. A direct link can be made between the early Lisp machines and Super Mario Brothers, a link which winds its way through Symbolics, Inc., to Nichimen Graphics, and is still quite alive at Izware http://www.izware.com Gaming consoles like Nintendo apparently developed as special purpose machines with a direct Lisp machine heritage. Who knew. Art From ajsiegel at optonline.net Sat May 28 14:14:35 2005 From: ajsiegel at optonline.net (Arthur) Date: Sat, 28 May 2005 08:14:35 -0400 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: Message-ID: <0IH700G1P8OIZE@mta5.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Toby Donaldson > > Simple Python programs are usually much easier to read and simpler to > write > than simple Java programs, and so students new to programming really like > it. Interestingly, some of the students who have programmed before > sometimes > complained that Python was just a toy scripting language, and why weren't > we > teaching them C++ (because that what video games are written in, don't you > know). The fact that CS students might resist Python on the basis of an impression that it is a "toy scripting language" surprises me not in the least. Of course that is a mis-impression. But one that has only been exasperated by an initiatives like CP4E. Perhaps Python would be better thought of more like Lisp had been - as something that a CS student *should* know. Because of its depth, but its ease. Do I have a right to resent the fact that I have needed to make myself into a pain-in-the-ass, and face insult, within the Python community in order to try to re-direct its thinking in approaching the educational community and positioning Python as a factor within it. Whether I do or not, I do. Art From missive at hotmail.com Sat May 28 14:57:34 2005 From: missive at hotmail.com (Lee Harr) Date: Sat, 28 May 2005 17:27:34 +0430 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 Message-ID: >The fact that CS students might resist Python on the basis of an impression >that it is a "toy scripting language" surprises me not in the least. > >Of course that is a mis-impression. > >But one that has only been exasperated by an initiatives like CP4E. > >Perhaps Python would be better thought of more like Lisp had been - as >something that a CS student *should* know. Because of its depth, but its >ease. > When I say that "python is easy" I don't mean it like "falling down is easy". It is more like "a nail gun is easy". Compared to pounding nails in with a hammer, a nail gun is much faster and much better. That does not mean that you can use it everywhere, and it certainly does not mean you can use it without some training. _________________________________________________________________ Don't just search. Find. Check out the new MSN Search! http://search.msn.click-url.com/go/onm00200636ave/direct/01/ From ajsiegel at optonline.net Sat May 28 15:36:52 2005 From: ajsiegel at optonline.net (Arthur) Date: Sat, 28 May 2005 09:36:52 -0400 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: Message-ID: <0IH700C2ZCJDFC@mta1.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Lee Harr > Sent: Saturday, May 28, 2005 8:58 AM > To: edu-sig at python.org > Subject: Re: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 > > When I say that "python is easy" I don't mean it like "falling down is > easy". > It is more like "a nail gun is easy". Compared to pounding nails in with > a > hammer, a nail gun is much faster and much better. That does not mean > that you can use it everywhere, and it certainly does not mean you can > use it without some training. Was Python your first language? Having had 5 years preparation for it, Lisp doesn't seem particularly hard. Something as easy as what "=" does in Python is hard - mutable, immutable, babble, huh, what? I think Andres had a recent bog entry on the subject. One of the things I think that we all like about Python is the fact that a lot of attention has been given to how it looks. Python looks easy. So what. Art From andre.roberge at gmail.com Sat May 28 16:03:59 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Sat, 28 May 2005 11:03:59 -0300 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: <0IH700C2ZCJDFC@mta1.srv.hcvlny.cv.net> References: <0IH700C2ZCJDFC@mta1.srv.hcvlny.cv.net> Message-ID: Arthur wrote: > [snip] > One of the things I think that we all like about Python is the fact that a > lot of attention has been given to how it looks. > > Python looks easy. > > So what. Well, this means that it allows the user to focus on the task at hand, rather than making sure that all extra syntactic material is added. Allow me to give a non-traditional example. Richard Pattis' Karel the Robot, designed to teach programming concepts using the metaphor of making a robot accomplish tasks. The simplest meaningful program one can ask Karel to do is to 1. Move (take one step) 2. Turn itself off (to avoid wasting energy :-) BlueJ is a programming environment designed to help *teach* programming in Java. Here's what the simplest robot program looks like in the BlueJ environment: ============================== import kareltherobot.*; public class Example01 implements RobotTask { public void task() { Robot Karel = new Robot(1, 1, East, 0); Karel.move(); Karel.turnOff() ; } } ============================== Contrast with two different versions of that program using a Python-like environment: ====== non-OOP version====== move() turn_off() ============================ ========= OOP version ====== Reeborg = UsedRobot() Reeborg.move() Reeborg.turn_off() ============================ I interpret "Python looks easy" to mean that Python allows one to focus on the task at hand, with a gentler learning curve. Easier to learn often translates with more ambitious projects being attempted ... and completed! It worked for me :-) Andr? From ajsiegel at optonline.net Sat May 28 18:57:11 2005 From: ajsiegel at optonline.net (Arthur) Date: Sat, 28 May 2005 12:57:11 -0400 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: Message-ID: <0IH700C4SLQC22@mta3.srv.hcvlny.cv.net> > Behalf Of Andr? Roberge > > Easier to learn often translates with > more ambitious projects being attempted ... and completed! > > It worked for me :-) I came to Python before the CP4E initiative. Much more important to me then, and much more important to me now, than how easy or not easy the effort is the extent to which the effort is worthwhile. Once I conclude the effort will be worthwhile, the effort will be made, and easy or hard have no more meaning. What attracted me to Python was - among other things- a sense of the spirit of the community. Hardcore geek. None of them were doing Python because it was easy. Fun, seemed to be the recurrent theme. Not easy. I happen to like fun, and wanted to see what all the fun was about. As it turns out, its easy to have fun with Python - though its hard work to get to that point. I honestly don't know how to rate Python versus Java on the easy scale. I think strong arguments might be made on either side. I guess someone, someplace might find Java more fun than Python - but I can only bet that someone has crooked teeth or something. Art From andre.roberge at gmail.com Sat May 28 21:31:06 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Sat, 28 May 2005 16:31:06 -0300 Subject: [Edu-sig] Python is fun (was: Re: Edu-sig Digest, Vol 22, Issue 26) In-Reply-To: <0IH700C4SLQC22@mta3.srv.hcvlny.cv.net> References: <0IH700C4SLQC22@mta3.srv.hcvlny.cv.net> Message-ID: Arthur wrote: >>Behalf Of Andr? Roberge >> >>Easier to learn often translates with >>more ambitious projects being attempted ... and completed! >> >>It worked for me :-) > > I came to Python before the CP4E initiative. > I came to Python totally unaware of CP4E! It is only *weeks* after I started my project that I came accross CP4E. (I have been programming in Python for less than a year; so *weeks* is a long time :-) > Much more important to me then, and much more important to me now, than how > easy or not easy the effort is the extent to which the effort is worthwhile. > Agreed! [snip] > As it turns out, its easy to have fun with Python - though its hard work to > get to that point. Well, I guess it all depends on what ones find "fun" to do. I had fun programming in Python (after having been away from computer programming for *years*) almost right away! Confession: before I stumbled upon Python, I considered buying Micromedia Flash and use that environment to teach my kids about programming. Flash looks like fun to me; but I've never tried it. > > I guess someone, someplace might find Java more fun than Python - but I can > only bet that someone has crooked teeth or something. If this were on comp.lang.python, I think it would be a strong contender for the Quote Of The Week :-) Andr? From ajsiegel at optonline.net Sun May 29 00:17:46 2005 From: ajsiegel at optonline.net (Arthur) Date: Sat, 28 May 2005 18:17:46 -0400 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: Message-ID: <0IH800JC50LQF2@mta4.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Andr? Roberge > > I interpret "Python looks easy" to mean that > Python allows one to focus on the task at hand, > with a gentler learning curve. > > Easier to learn often translates with > more ambitious projects being attempted ... and completed! That sounds right. But - In the last three months, as the fates have it, I have written more VB code than Python code. One can accuse VB of a lot of things - being (relatively) hard to learn I don't think is legitimately one of them. But I don't even include VB as a language I know. Essentially, mentally, I am solving the problem at hand in Python and then figuring out how to express the solution in VB. And I am working in VB in the most sophisticated of development environments, and with access to the most complete and wide-ranging libraries. I got tool tips up the kazoo, it completes my words, it's all there, it's efficiency personified, it's heaven on earth - except that I won't go near it unless you pay me, and I can't think of a single interesting thing to do with it all. Python and a text editor, and my imagination starts to come alive. I don?t know why, really. I do know I'm a fairly mainstream fellow, all-in-all. I'm not looking to beat a trail off the beaten track, for its own sake - I don't believe. What I *can* do is respect my experience - and since it has been loads of fun, try to find clues on how to make it reproducible. But I don't find "easy" a clue to anything. Art > > It worked for me :-) > > Andr? > > _______________________________________________ > Edu-sig mailing list > Edu-sig at python.org > http://mail.python.org/mailman/listinfo/edu-sig From ajsiegel at optonline.net Sun May 29 00:56:27 2005 From: ajsiegel at optonline.net (Arthur) Date: Sat, 28 May 2005 18:56:27 -0400 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: <0IH800JC50LQF2@mta4.srv.hcvlny.cv.net> Message-ID: <0IH800GYX2EKDC@mta6.srv.hcvlny.cv.net> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Arthur > Sent: Saturday, May 28, 2005 6:18 PM > To: 'Andr? Roberge'; edu-sig at python.org > > But I don't find "easy" a clue to anything. "transparency" is definitely a clue to something. but I'm looping - again. Art From noonan at cs.wm.edu Tue May 31 15:06:46 2005 From: noonan at cs.wm.edu (Bob Noonan) Date: Tue, 31 May 2005 09:06:46 -0400 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: References: Message-ID: <200505310906.46647.noonan@cs.wm.edu> Toby Donaldsoon writes: > I've been involved with teaching CS1/CS2 style courses for the last couple > of years where Python is used in the first course, and Java in the second. > It's a good combination. > Simple Python programs are usually much easier to read and simpler to write > than simple Java programs, and so students new to programming really like > it. I would love to switch our CS1 course to Python. It seems like I am always about 5-8 years ahead of my department. After starting in 1997, it took me until 2003 to get our CS1 course switched from C++ to Java. At the time we did it, I knew Python was a better choice, precisely because: 1. It is a good scripting language. 2. 50% of our CS1 students never take another CS course; clearly, these students are better off with Python than with Java. The one place where Python is clearly deficient IMHO is in GUI programming. Tkinter (and the TK toolkit) are nowhere near the quality and simplicity of Swing. Pack as a layout manager is difficult, at best. And yes, I am aware of other GUI interfaces such as wxPython, but the infrastructure is not there to support them. All of the Python textbooks that I am familiar with cover only Tkinter. Just my humble opinion from someone who does all his *real* programming in Python (which I like except for GUIs) and Perl (which I detest). Regards, Bob -- Robert Noonan Professor and Undergraduate Director Computer Science College of William and Mary From andre.roberge at gmail.com Tue May 31 17:04:00 2005 From: andre.roberge at gmail.com (=?ISO-8859-1?Q?Andr=E9_Roberge?=) Date: Tue, 31 May 2005 12:04:00 -0300 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: <200505310906.46647.noonan@cs.wm.edu> References: <200505310906.46647.noonan@cs.wm.edu> Message-ID: Bob Noonan wrote: > I would love to switch our CS1 course to Python. It seems like I am always > about 5-8 years ahead of my department. After starting in 1997, it took me > until 2003 to get our CS1 course switched from C++ to Java. > > At the time we did it, I knew Python was a better choice, precisely because: > > 1. It is a good scripting language. > > 2. 50% of our CS1 students never take another CS course; clearly, these > students are better off with Python than with Java. > > The one place where Python is clearly deficient IMHO is in GUI programming. > Tkinter (and the TK toolkit) are nowhere near the quality and simplicity of > Swing. Pack as a layout manager is difficult, at best. And yes, I am aware > of other GUI interfaces such as wxPython, but the infrastructure is not there > to support them. All of the Python textbooks that I am familiar with cover > only Tkinter. > Why not teach Python and, when it come to using GUI, switch to Jython? This can then be used as an introduction to Java... Andr? From urnerk at qwest.net Tue May 31 19:52:21 2005 From: urnerk at qwest.net (Kirby Urner) Date: Tue, 31 May 2005 10:52:21 -0700 Subject: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 In-Reply-To: <200505310906.46647.noonan@cs.wm.edu> Message-ID: <20050531175220.E9AC11E4003@bag.python.org> > -----Original Message----- > From: edu-sig-bounces at python.org [mailto:edu-sig-bounces at python.org] On > Behalf Of Bob Noonan > Sent: Tuesday, May 31, 2005 6:07 AM > To: edu-sig at python.org > Subject: Re: [Edu-sig] Edu-sig Digest, Vol 22, Issue 26 > The one place where Python is clearly deficient IMHO is in GUI > programming. For education purposes, you should be able to get away with using Qt4 under the GPL. Qt4 is a realistic focus for Python bindings, given its commercial use in upcoming KDEs (desktop ala Aqua). The underlying model is stable and mature, not inferior to Swing. Please correct me if my facts are wrong. Another opportunity with Python is simply to drive home that coding GUI apps forms an outer shell around a core language, and the same core language may support several libraries of this type. So in a Python CS0/CS1 course, you'd go through several GUI packages in quick succession (eg. Tk, wx, Qt, Swing via Jython, the .NET GUI very soon). We don't yet have the textbook for this, I agree (might be a CD/downloadable addendum, given the swift evolution of some of these APIs (others, like Tk's, have been essentially finalized)). The point you're making is not "you should become a master GUI programmer in this intro course" (that's not realistic), but "you should have hands-on experience with the mix-and-match nature of GUI libraries -- they're on a different level than a core language in many cases, even though languages like VB, Java, Access VBA, and VFP bundle them together. Kirby From shugarma at chapman.edu Fri May 27 20:10:26 2005 From: shugarma at chapman.edu (Shugarman, Arnold) Date: Fri, 27 May 2005 18:10:26 -0000 Subject: [Edu-sig] Python Workshop at Chapman University Message-ID: Chapman University is conducting a summer workshop, "Teaching Introductory Computer Science: The Python Way" for computer science teachers who want an alternative to either purely commercial languages, such as Java or C++, or purely educational languages, such as Scheme, for introductory computer science courses. The instructor, Professor Atanas Radenski has successfully used Python in the first semester introductory computer science course and Java in the second semester at Chapman University with increased student interest and comprehension of programming principles. Professor Radenski has developed comprehensive online study packs to support his courses. The online study packs substantially reduce the instructor's work load in two ways. First, the online study packs offer a variety of detailed self-guided labs that most students can do by themselves, without any, or with very little, help from the instructor. Second, the online study packs support a self-evaluation honor system based on online quizzes and lab reports which considerably reduces the amount of tedious grading. The program is designed for high school computer science instructors. College and university faculty will also benefit from learning about this dual language approach to teaching introductory computer science. Prior knowledge of the Python language is not required. The workshop consists of a three-day program on the Chapman campus, August 10 - 12, 2005, and an on-line program of web study-packs that can be completed any time between August 13 - December 15, 2005. The on-line portion of the workshop will require about 20 to 30 hours to complete. Please see http://www.chapman.edu/wcls/MathCS/sWorkshop/Python/default.asp for complete details on the Python workshop and an on-line registration form. Or contact Arnold Shugarman (Shugarman at chapman.edu ) for more information. Arnold Shugarman Arnold L. Shugarman, Ph.D. Administrator, Integrated Circuit & Embedded System Design Department of Mathematics and Computer Science Beckman 403 Chapman University One University Drive Orange, CA 92866 714-744-7862 714-628-7340 (fax) 714-206-6136 (cell) shugarman at chapman.edu -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.python.org/pipermail/edu-sig/attachments/20050527/7bc7dd2c/attachment.htm