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
|