Jython vs Squeak for teaching multimedia

Mark Guzdial guzdial at cc.gatech.edu
Tue Jun 25 21:23:13 UTC 2002


I've actually been carrying on this conversation with Stephane 
off-list -- I hadn't realized that he'd started a thread critiquing my 
efforts here, too.  I'll try to answer the issues raised.

Yes, any fully parenthesized languages resolve precedence problems.  
Scheme forces that parenthesization, that avoids problems like the ones 
that I identify in Squeak.  But you're also right that that's a red 
herring.

In the end, I surrendered on Scheme.  Take a look at the student surveys 
linked off http://coweb.cc.gatech.edu/mediaComp-plan  I learned that 
Scheme has a really good reputation, but not good for my class.  The 
reputation is "Serious CS."  Non-majors aren't interested in serious 
CS.  (I actually had one English professor say to me, "You wouldn't use 
Scheme, would you?  Do you know that they use that at MIT?!?  That's not 
what we want for our students!")

Squeak's syntax isn't well-oriented to non-majors who MAY do future 
programming, but want to do as little as possible now.  (Again, see the 
student surveys.)  They want something that looks like Java or C++ or 
Visual Basic.  While Squeak's syntax is elegant and uniform, it's not 
obvious.  Object-message doesn't look like the IFs and WHILEs that 
students recognize as something that they may have to learn some day. 
(E-toys is obviously much easier to use, but students that we've shown 
it to perceive it as a "toy" -- not something that they can do what they 
consider to be serious activities.)  There is also the issue that the 
interface for other-than-etoy development isn't something that novices 
can easily use.  (And yes, I have seen the literature on constructs like 
"break"'s in loops, and they do significantly improve students' 
understanding of loops.) (On a COMPLETELY different path, I think that 
there's good evidence that GOTO's are actually developmentally much 
easier to get started with than recursion or iterative control 
structures, and lead to better understanding of the more traditional 
looping constructs later, but we don't need to go there. :-)

This is going to be a large class (~500 students a term) from a diverse 
set of majors.  Some of these students DO want to learn Java.  Some of 
the faculty in the various majors hope that their students will learn 
Java by the time that they get to their upper-level classes.  (Several 
pushed very hard for me to use Java from the start, which I had to fight 
really hard at.)  By introducing Java at the end, I can try to encourage 
some transfer of knowledge (e.g., "Not all of programming looks like 
what you've been seeing"), and start them on a road that will be 
valuable to some of them.  If you check out the detailed course plans at 
http://coweb.cc.gatech.edu/mediaComp-plan/Curriculum, you'll see that I 
generally want to introduce students to the notions of different 
notations, and then just use Java as one alternative example.

There are several reasons for Jython vs. Python:
- Python doesn't have a standard, cross-platform multimedia platform.  
The focus of the class is on manipulating, creating, and transforming 
multimedia.  I found that I could do pieces of that on each platform, 
but nothing that worked across platforms.  By using Jython, I get the 
Java API for free.  While it's horrendous to use, I'm slowly building 
the functionality that I need.  No, students won't talk directly to 
Java.  I'm building the Java classes and the Jython wrappers -- the 
students will use my wrappers.
- Several faculty pushed really hard for me to do Java -- they wanted 
students to be able to build servlets and applets and ODBC applications 
and...  By using Jython, I deflect those arguments -- anything one can 
do in Java, one can do in Jython.  I'm not going to teach all those 
Java-specific technologies, but the potential is there.
- We want a cross-platform, SIMPLE student development environment.  
There's not a good cross-platform UI-building environment for Python 
yet.  Tkinter has all kinds of problems.  Using Jython gives us Java 
Swing for free -- again, it's not great, but it's usable.  Cees is 
right -- there aren't any good IDE's for Jython.  So, we're building 
one -- screenshots are on the website.

Cees is also right that this all requires field testing.  That's built 
in to the process -- we've got a trial course planned for Spring 2003, a 
Summer to fix things, then Fall 2003 to go with 500 students.  The 
process for getting to Jython has been, uh, difficult.  It's not 
optimal, but we're satisficing here across issues from learning sciences 
to HCI to technology to politics.  The CONTENT of the course is what I'm 
focusing on now.  I see the language choice as something that we can fix 
down the road, but probably not for the first year or so.

What I'd really like to do is to build a Squeak-based scripting 
environment, but I don't have time to build the class AND 
define/implement a new scripting language, even in something that I'm as 
comfortable in as Squeak.  My plan is to get the class going, get some 
reasonable results, and then go for funding to take on the scripting 
language research issue.

Squeak will still be present in the class.  I want to provide students 
with a set of MediaTools (e.g., recording sounds, viewing waveforms, 
manipulating images and MPEGs).  I don't want to build all those in 
Java/Jython, so we're going to provide these as Squeak-based tools.  
(The development on these is also available on the course planning 
website.)

We are NOT giving up on Squeak for the Sophomore class 
(http://coweb.cc.gatech.edu/cs2340).  I'm still the organizer of the 
course, and I'm helping the instructors who are taking it on while I 
shift my focus.  And I am working toward a 3.2 appendix...whenever 3.2 
becomes official.

Overall, I've learned that CS1 is a BIG issue these days.  Computing is 
becoming critical in many fields these days (arguably, more critical 
than Calculus, which is already considered part of a general, liberal 
education).  This means that EVERY field has particular needs/desires 
with regard to how their students learn computing.  Mix a scarce 
resource (1 course) with a large number of interests and you get a 
political minefield.  I've been trying to keep notes on all the battles 
we've fought over this course (e.g., there was a bunch of pressure on me 
to use Visual Basic, from Architects who use tools that are VB based, 
from CS faculty who wanted to get Microsoft to like us more, and from 
Microsoft reps once they heard what was going on) -- there's got to be a 
conference paper or two in all of this :-)

Mark




More information about the Squeak-dev mailing list