[Edu-sig] PyWhip - Keep on crackin' it!!

kirby urner kirby.urner at gmail.com
Sun Mar 8 16:41:30 CET 2009


On Sun, Mar 8, 2009 at 5:02 AM, David MacQuigg <macquigg at ece.arizona.edu> wrote:
> At 10:51 PM 3/6/2009 -0400, Andre Roberge wrote:
>>David MacQuigg wrote:
>
>>>I started to do this as a downloadable program, then Athar jumped in and said he could do it just as easily in Google App Engine.  He did in one weekend what took several weeks on my own server in an earlier project.
>>>
>>>The advantage of a web-based program is you don't have to download or install anything.
>>
>>I completely agree.  I will definitely have to mention it during my Pycon talk about Crunchy.
>>
>>Well done!
>
> The credit so far, goes 90% to Athar, and of course, Nick Parlante (JavaBat.com) for inspiring us to even think of it.  Now we need community input.  We have 6 problems so far.  I'll do strings.  We still need math, logic, lists, dictionaries, and recursion.  Let's make this the most popular Python site on the planet!!
>

The Software Association of Oregon used to run, maybe still runs, this
annual contests for high school aged kids at Willamette University.
There's a professor there who'd every year come up with this quite
clever little challenges, like "sort these words alphabetically but
within length i.e. all 3-letter words before 4-letter" and stuff like
that.  He let me have his sheet of problems one year.  I'm wondering
if challenges such as these would be suitable as well.

What I'm seeing at your site so far is a very low level workout in
Python basics -- not a criticism in any way, just suggesting you could
apply the same technique to more challenging problems.

Here's one I like:

Write a Python generator so you get successive rows of Pascals
triangle, like this:

o = Pascal()  # o for object
>>> next(o)
[1]
>>> next(o)
[1, 1]
>>> next(o)
[1,2,1]
>>> next(o)
[1,3,3,1]
....
and so on (Pascal's triangle).  Note I'm using Python 3.x syntax.

One of the best solutions is:

def pascal():
	row = [1]
	while True:
		yield row
		row = [i + j for (i,j) in zip([0]+row, row+[0])]


> At 10:34 PM 3/6/2009 -0800, kirby urner wrote:
>>David MacQuigg wrote:
>
>>>The advantage of a web-based program is you don't have to download or install anything.
>>
>>This is true, but I think if you're not going to download Python and
>>actually run it locally, then you're mostly just kidding yourself if
>>you think you're committed to learning it.
>
> We need both - Python running on our own computers to do quick interactive tests, and PyWhip to see if we got the problem solved, track our progress, etc.  PyWhip is not an interpreter, but a test environment.  Let's say you are asked to find a particular sequence in a list, and you don't remember Python's indexing syntax.  Much easier to try a few quick tests in IDLE, then write the complete solution in PyWhip.

OK, I'm less of a skeptic now that you've said both.  I thought you
were falling into that trap of "all web all the time" where the local
machine doesn't get to run anything except a web browser, ala some
ways of learning with Squeak.  I'm generally suspicious of moves to
Squeakify Python, thought you might be moving in this direction.

>
> I even use Python/IDLE to solve problems in JavaBat!!  I find in much easier to work out the solution in Python, then translate to Java.  This is especially true for more complex problems, even big projects in Java.  I have used Python as an Interface Description Language, and it beats the IDL tools I am aware of.  I don't use UML diagrams anymore.
>

Yes, that Software Association of Oregon contest was open to teams
using whatever language they wished, I'm pretty sure.  Just come to
the judges with a working program that gets the right answers, and
you'll be the winner of that round (if you're first).  I'm guessing a
team using Python would have an instant big advantage over the Java
users for challenges of this variety, but at the time I observed the
process I don't think any were using Python yet.  This was years ago
and since then I've lost track.  I'm under the impression that Python
has spread quite a bit since those days, but I'm not a clearing house.

> I wish Java had an environment like IDLE.  The closest I've found is Eclipse, and that is rather cumbersome compared to IDLE.
>

Having a shell that's really capable, such as IDLE, is extremely
useful.  PLT Scheme comes to mind, plus they have this whole idea of
"language levels" where you just import bits and pieces.  I've not
missed that in Python, given import is much the same idea (in terms of
limiting access).

>>That being said, having a server running locally (including GAE, which
>>is designed to work on your laptop as well) is a great idea.  If
>>you're connected to some remote curriculum using this configuration,
>>well, that's what Subversion is for (like with Django, just ask for an
>>update and ye shall receive).
>
> Subversion is very cool, but it won't keep track of user logins, session state, etc.  It's all that "framework" stuff that took so long on my previous project.  When you write a program in App Engine, Google provides it all for you, along with Django templates, database support, and a bunch of other stuff you don't have to develop yourself.
>

Yes, understood.  I wrote a very simple engine ( osgarden.appspot.com
) with no need for logins, very crude template, but enough to
appreciate the ease of use.  DemocracyLab is far more ambitious, comes
from an Eclipse background (in terms of programmer pedigree).  Have
you open sourced your code, or do you plan to?  Students at a higher
level could be using your thing as a self tester, plus learn more
appengine.

>>I'm more interested in students than teachers.  I'd encourage them to
>>download Python locally, update curriculum source using some checkout
>>procedure, if that's what's required.
>
> How do you handle testing?  Seems like automation is essential if you have more than a few students.
>
> -- Dave

Yeah, that's a good question.  I'm not doing a CS course, have a heavy
eye candy component, so it's more like a lab in most cases:  import
scaffolding, eyeball it to start learning Python, while interacting in
the shell, then start getting the whiz bang graphics thanks to VPython
and/or POV-Ray (lots of pre-written code).

The tests are mostly self posed, the mode exploratory.  All I have to
do is walk around giving assistance and helping them record their work
for posterity in some cases.  Sometimes there's a YouTube as a result,
suitable for more public syndication.

Our students get a certificate that's respected in the Silicon Forest,
plus we also have internship programs giving high schoolers time in
the private sector pre-college sometimes.

In this particular school, it's a goal to not have to share computers
i.e. the ratio of student to computer is 1:1.  That's a change for
many of them, coming from regular public school.

We only get them on weekends, which is why it's called Saturday
Academy (except in summers, when it could be any day).

So yeah, a niche market and maybe not that applicable to your situation.

Kirby

> ************************************************************     *
> * David MacQuigg, PhD    email: macquigg at ece.arizona.edu   *  *
> * Research Associate                phone: USA 520-721-4583   *  *  *
> * ECE Department, University of Arizona                       *  *  *
> *                                 9320 East Mikelyn Lane       * * *
> * http://purl.net/macquigg       Tucson, Arizona 85710          *
> ************************************************************     *
>
>
> _______________________________________________
> Edu-sig mailing list
> Edu-sig at python.org
> http://mail.python.org/mailman/listinfo/edu-sig
>


More information about the Edu-sig mailing list