> I want to call everyone's attention to RUR-PLE, another Karel successor that the students control with actual Python. I've used it quite successfully for 3 or 4 years now, it provides a great wading pool for trying out the basic concepts, and they get exposed to the real syntax from the first day.
>
> Check it out at http://rur-ple.sourceforge.net/.
I also like it a lot, so with experienced friend prepaired .deb package
https://sourceforge.net/forum/message.php?msg_id=5132850
and also theres some intro stuff http://en.wikipedia.org/wiki/RUR-PLE
ps.: http://webstervanrobot.com could someday be converted to be even
more visual
as http://scratch.mit.edu/about (which is top tool for programmin
introduction for all ages :)
html +js gives enough possibilities for drag and drop puzzle functionality
Hey everybody,
I just wanted to introduce myself and a little project that I'm working on that might be of interest to this audience.
My name is Steve Howell, and I was one of the early project leaders for Guido van Robot, which was introduced to this mailing list a little under five years ago by Jeff Elkner:
http://mail.python.org/pipermail/edu-sig/2003-October/003207.html
To paraphrase Jeff, Guido van Robot (aka GvR) brings "Pythonic" improvements to the teaching language Karel the Robot. Since 2003, the program continued to evolve, mostly under the stewardship of a Dutch programmer named Stas Z, who has helped to internationalize it, clean up its user interface, and maintain ports on four major platforms (Linux, OLPC, Mac, and Windows).
http://gvr.sourceforge.net/screen_shots/
Although I'm proud of the success of GvR, I've always been a little frustrated by its lack of adoption. Although you never know for sure how many people use an Open Source project, I think GvR, like many other desktop applications, has a high barrier for experimentation. Although the IDE and language itself are very simple, you have to have Python and PyGTK installed, and then you have to download the software itself.
I've always wanted to try out a Javascript port of GvR, post it on the web, and see if it got any more traction. This week I finally got a little time to do just that:
http://webstervanrobot.com/
Warning: the program has only been tested on Firefox 3 so far (IE is unfortunately broken).
Webster van Robot is currently is a programming language and free software application designed to introduce beginners to one of the most fundamental aspects of programming--looping. It allows novice programmers to graphically manipulate an environment of streets, avenues, and walls using a simple programming language. (BTW this blurb is mostly plagiarized from GvR.)
Here is a small Webster van Robot that uses all of its features:
do 2:
move
turnleft
build_wall_on_left
turnright
Here's how to see it in action:
go to http://webstervanrobot.com/
edit the program to say "do 2:" instead of "do 1:"
click on the run button
(try out Demo #2 as well if you like)
How is Webster van Robot different than Guido van Robot:
1) It runs directly out of the browser! No installation required.
2) It has only one programming construct now. This is mostly a function of where I am in the development process, but you can always argue that simplicity is a feature!
3) I have slightly different built-ins. I decide to build in both "turnleft" and "turnright," as well as a new builtin for "build_wall_on_left." I've always thought that Karel and Guido should start with a blank slate and build their own environment, without having to deal with "world" files.
When I've floated around the Webster idea before, people have suggested some kind of Python back end, but I found it was easy enough to implement the whole thing in Javascript. Javascript has its quirks, but it's not a terrible language to work in, and one of my goals for the new project is to make it ridiculously easy for people to install/distribute the software.
Although I think of Webster van Robot mostly as a toy at this point, it got me thinking about the deeper problems of programming language literacy. I really believe that most people should be able to learn Python in their lifetimes, but there needs to be a gentle progression to get there. I've seen Guido van Robot used in only a couple classrooms, but that experience was enough to convince me that there's still a quantum leap from minimalistic languages to Python itself.
I'm also a huge believer that web apps will always meet with less friction than desktop apps.
So here's my pie-in-the-sky goal--I'd like to have a Javascript virtual machine that can execute progressively more complicated subset/variants of Python. Or, to put it another way, I'd like a Javascript engine that allows easy, pluggable extensions of Webster van Robot as students gain more confidence. Here are the places where I see extensibility:
1) Plug in new model/views. Streets, avenues, and walls aren't for everybody.
2) Plug in new builtins. Move, turnright, and build_wall_on_left aren't for everybody.
3) Allow a gentle progression through flow constructs. Start with "do," then introduce "if," "while," etc.
4) Allow "def" fairly early in the process too.
5) Allow gentle introduction of data structures and variables. (This is the place where Karel the Robot and Guido van Robot don't have any ambition to fill a gap, and I think this is where the quantum leap comes into play. I also think the lack of basic variables and expressions make it harder to write "fun" robot programs too.)
So, I'm thinking Javascript has enough horsepower to create this basic framework, although you could still mostly drive the code from a Python back end. Although I haven't coded anything yet, Webster van Robot has some of the very basic pieces to get it started, and I've come up with a name--"tballsnake," which is an anagram of "blank slate." "T-Ball" is a metaphor similar to "training wheels," and then the "snake" refers to the end goal--Python proficiency.
Anyway, hope some of this is food for thought.
Steve
*** will also X-post to CLP so apologies in advance for duplicates ***
Need to get up-to-speed with Python as quickly as possible? Come join
me, Wesley Chun, author of Prentice-Hall's bestseller "Core Python
Programming," for another comprehensive intro course plus a 1-day
Internet programming course coming up in November in beautiful
Northern California! I look forward to meeting you!
(Comprehensive) Introduction to Python
Mon-Wed, 2008 Nov 10-12, 9am-5pm
Internet Programming with Python
Sat, 2008 Nov 15, 9am-5pm
courses can be taken separately or combined for a discounted price.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(COMPREHENSIVE) INTRODUCTION TO PYTHON
Although this course may appear to those new to Python, it is also
perfect for those who have tinkered with it and want to "fill in the
gaps" and/or want to get more in-depth formal training. It combines
the best of both an introduction to the language as well as a "Python
Internals" training course.
We will immerse you in the world of Python in only a few days, showing
you more than just its syntax (which you don't really need a book to
learn, right?). Knowing more about how Python works under the covers,
including the relationship between data objects and memory management,
will make you a much more effective Python programmer coming out of
the gate. 3 hands-on labs each day will help hammer the concepts home.
Come find out why Google, Yahoo!, Disney, ILM/LucasFilm, VMware, NASA,
Ubuntu, YouTube, and Red Hat all use Python. Users supporting or
jumping to Plone, Zope, TurboGears, Pylons, Django, Google App Engine,
Jython, IronPython, and Mailman will also benefit!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
INTERNET PROGRAMMING WITH PYTHON
This is a one-day course with lecture and lab exposing attendees to
FOUR distinct areas of Internet programming:
* Network Programming using Sockets -- we introduce client/server
architecture and how to program sockets using Python.
* Internet Client Programming -- we learn how to use Python's standard
library to create FTP, NNTP, POP3, and SMTP clients
* Web Programming -- before you jump on all the web framework
bandwagons, it's a good idea to learn basics and the basis of how all
web servers deliver dynamic content back to the client browser to
prepare you better when jumping to a full-stack web framework
* Intro to Django -- a lightweight introduction to the Django web
framework including whipping up a very simple blog application in
20min!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WHERE: near the San Francisco Airport (SFO/San Bruno), CA, USA
WEB: http://cyberwebconsulting.com (click "Python Training")
FLYER: http://starship.python.net/crew/wesc/flyerPP1combo.pdf
LOCALS: easy freeway (101/280/380) with lots of parking plus public
transit (BART and CalTrain) access via the San Bruno stations, easily
accessible from all parts of the Bay Area
VISITORS: free shuttle to/from the airport, free high-speed internet,
free breakfast and regular evening receptions; fully-equipped suites
See website for costs, venue info, and registration. Discounts are
available for multiple registrations as well as for teachers/students.
Hope to see you there!
-- wesley
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
"Core Python Programming", Prentice Hall, (c)2007,2001
http://corepython.com
"Python Web Development with Django", Addison Wesley, (c) 2008
http://withdjango.com
wesley.j.chun :: wescpy-at-gmail.com
python training and technical consulting
cyberweb.consulting : silicon valley, ca
http://cyberwebconsulting.com
This code segment is a bit on the esoteric side but shows how a
generator, an iterable like a list comprehension, may be pressed into
service to populate an SQL table using pysqlite's executemany command.
import rbf
def pop(con):
cur = con.cursor()
gen = (
(str(v), rbf.Vset[v].x, rbf.Vset[v].y, rbf.Vset[v].z)
for v in rbf.Vset
if v in "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
)
cur.executemany("insert into Vectors(label, x, y, z) values (?, ?,
?, ?)", gen)
con.commit()
Note we're not using %-operator dictionary substitution, but question
marks, with iterator as second parameter, playing the role of
tuple-generator (fill in the blanks).
What this looks like after running, in terms of raw data, is 26
"points of interest" used to anchor the aforementioned
whole-number-volumed polyhedra, tetrahedron as unit:
kirby@dell:~$ sqlite3 gnugeom
SQLite version 3.4.2
Enter ".help" for instructions
sqlite> select * from Vectors;
Z|0.707106781186547|0.707106781186547|0
A|0.353553390593274|0.353553390593274|0.353553390593274
C|-0.353553390593274|0.353553390593274|-0.353553390593274
B|-0.353553390593274|-0.353553390593274|0.353553390593274
E|-0.353553390593274|-0.353553390593274|-0.353553390593274
D|0.353553390593274|-0.353553390593274|-0.353553390593274
G|0.353553390593274|-0.353553390593274|0.353553390593274
F|0.353553390593274|0.353553390593274|-0.353553390593274
I|0|0|0.707106781186547
H|-0.353553390593274|0.353553390593274|0.353553390593274
K|0.707106781186547|0|0
J|0|0.707106781186547|0
M|0|-0.707106781186547|0
L|-0.707106781186547|0|0
O|0|0.707106781186547|0.707106781186547
N|0|0|-0.707106781186547
Q|-0.707106781186547|0|0.707106781186547
P|0.707106781186547|0|0.707106781186547
S|0|0.707106781186547|-0.707106781186547
R|0|-0.707106781186547|0.707106781186547
U|-0.707106781186547|0|-0.707106781186547
T|0.707106781186547|0|-0.707106781186547
W|-0.707106781186547|0.707106781186547|0
V|0|-0.707106781186547|-0.707106781186547
Y|0.707106781186547|-0.707106781186547|0
X|-0.707106781186547|-0.707106781186547|0
sqlite>
Here's a related graphic from:
Using Polyhedra to Teach OOP
and Coordinate Geometry Concepts
Chapter 7: Playing with Python
by Kirby Urner
First posted: August 28, 1999
Last modified: September 1, 1999
http://www.4dsolutions.net/ocn/oop7.html
A concept we're after here is primitive ORM (object-relational
mapping) in that we'll like have a Vector class, used to instantiate
each row of the Vectors table as a "vector object". Vector objects
support __add__ and scalar multiplication (__mul__), plus may have a
self.draw() method for outputting to VPython, or some text file in
preparation for rendering.
Of course the whole Polyhedron might well be a class, probably is.
I'm not saying there's a one-size-fits-all solution here, would
encourage groups of students to cobble together their own databases in
most cases, at least smallish ones, as half the fun is using CREATE
TABLE, defining the relationships.
Note that Vectors are included in some secondary school level
curricula, though that's been increasingly pushed to remedial college
as the universal college expectation begets grade / degree inflation.
Our purpose here is to give high schoolers more opportunities as
job-ready entrepreneurs per the LEP High model (a charter school in
Portland). Here's a paragraph I've shared with some of my
AlgebraFirst buddies:
"""
My angle is it's less the degree or credential that matters and more
the evidence of skills, something to brag about in a job interview,
that you know SQL, even though just fresh out of high school. I'm
aiming towards a local economy in which a high school degree might be
sufficient again, for some entry level job, with college and company
life really a lot congruent in future, as work/study people farm
themselves out to this or that training, including history and
geography when traveling to that region... ends up being very like a
college degree, but measured more in promotions within the company (an
old template, no original thinking here, except it all sounds kinda
retro, now that we take quasi-universal college for granted).
"""
Those of you who've seen my Chicago talk (Pycon, on Showmedo), may
also remember TECC, another charter in the wannabe category, wondering
of all the spotlight on Wasilla with help Anna's cause at all.
So all the information you'd need to actually draw a Tetrahedron in
VPython could be garnered from some a SELECT statement such as the
following:
sqlite> select m.shortname, f.facet_id, f.vertex_id, v.x, v.y, v.z
from polyhedra m, facets f, vectors v where m.shortname = f.shortname
and f.label = v.label and m.shortname = "tetra";
tetra|0|0|0.353553390593274|0.353553390593274|0.353553390593274
tetra|0|1|-0.353553390593274|-0.353553390593274|0.353553390593274
tetra|0|2|-0.353553390593274|0.353553390593274|-0.353553390593274
tetra|1|0|0.353553390593274|0.353553390593274|0.353553390593274
tetra|1|1|-0.353553390593274|0.353553390593274|-0.353553390593274
tetra|1|2|0.353553390593274|-0.353553390593274|-0.353553390593274
tetra|2|0|0.353553390593274|0.353553390593274|0.353553390593274
tetra|2|1|0.353553390593274|-0.353553390593274|-0.353553390593274
tetra|2|2|-0.353553390593274|-0.353553390593274|0.353553390593274
tetra|3|0|-0.353553390593274|-0.353553390593274|0.353553390593274
tetra|3|1|-0.353553390593274|0.353553390593274|-0.353553390593274
tetra|3|2|0.353553390593274|-0.353553390593274|-0.353553390593274
sqlite>
For those less familiar with SQLite 3, it gives you a MySQL-like
administrative environment with Pysqlite2 the SQLite3 driver (yeah,
confusing). You've got a pretty good implementation of SQL engine
syntax, so moving from this sandbox to something more robust is an
easy transition. Some low volume websites never need to make the
transition.
Kirby
This is just a quick (and final) reminder that the K12 Open Minds
conference is fast approaching. See http://www.k12openminds.org for more
details - this is one of the few conferences devoted to Free and Open
Source Software in K-12 education.
There are two updates worth mentioning. First, the preliminary sessions
list is now available at http://www.k12openminds.org/sessions - check it
out and consider joining us. Both Andy Harrington and I will be talking
about teaching Python, and Walter Bender from SugarLabs will also be
presenting.
Second, the deadline for rooms at the conference rate of $97 a night has
been extended to Tuesday, Sept 2. After that, the room rate will
increase dramatically. So if you are planning to attend, book a room now
(see the "Hotels" link on k12openminds.org). You should be able to book
online all through the weekend.
I know that time is short, but we hope you will consider joining us in
Indy for this event.
Cheers,
Vern Ceder, K12 Open Minds Planning Committee
--
This time for sure!
-Bullwinkle J. Moose
-----------------------------
Vern Ceder, Director of Technology
Canterbury School, 3210 Smith Road, Ft Wayne, IN 46804
vceder(a)canterburyschool.org; 260-436-0746; FAX: 260-436-5137