Archive for August 14, 2009

Lisp and Smalltalk are dead: It’s C all the way down.

Georgia Tech’s College of Computing is now considering a proposal to remove Smalltalk from the required curriculum in favor of C++.  When I got here in 1993, we taught Pascal (mostly) and had required courses in C, Lisp, and Smalltalk.  The faculty explicitly valued that students see more than one school of programming thought. I took over the Smalltalk-using course from John Schilling and Richard LeBlanc, and moved it from ObjectWorks to Squeak. When we moved to semesters in 1999, Lisp got dropped, and we’d moved from Pascal to Java as our main teaching language.  When we drop Smalltalk (now using VisualWorks), we will have a first semester in Python, and the rest of the required curriculum will be Java, C, C++, and C#.  We will explicitly tell students “C and C-like languages are all that there is.”

Why drop Smalltalk?  Students and teachers view it as “a dead language, not worth learning.”  It is the case that there are concepts in Objects and Design (the name of the course) which can most easily be discussed in C++. C++ is wildly popular in industry, so it’s not surprising that some language-specific techniques have developed, techniques that our students should probably know.

It’s reasonable to teach a course on object-oriented analysis, design, and programming in C++ rather than Smalltalk.  I’m more disappointed that we will have a curriculum that is all about C.

Richard Gabriel has been thinking a lot about the C-ness of our discipline.  If you have not read Richard Gabriel’s articles on “Worse is Better,” I recommend them. Dan Weinreb has a nice overview, and there’s a list of all the various pieces in Gabriel’s debate (some of which was with himself!). Gabriel has been trying to understand why Lisp, despite its many measurable benefits over C (e.g., Lisp programmers are more productive and generate fewer bugs, Lisp environments are amazingly powerful, Lisp code is small and runs fast), has so clearly lost the battle over hearts and minds.

Gabriel contrasts two design philosophies, the MIT/Stanford philosophy (which he calls “the right thing“) and the “New Jersey” C/UNIX philosophy (which he calls “worse is better”).  In short form, the MIT/Stanford philosophy (which he associates with Lisp, and which I also associate with Smalltalk) is that correctness and consistency are the most important design quality. In Lisp and Smalltalk, we have S-expressions and objects consistently.  The C/UNIX philosophy places simplicity in interface and implementation as the most important design quality.

Python is a mishmash of the two design philosophies.  Yes, you get lambda and map/reduce and objects and classes.  But you lose the consistency and syntactic flexibility of Lisp and Smalltalk.  What’s interesting is that Python, being the least C-like of the popular languages in computing education today, is mostly seen as a language for the NON-computing major.  It’s like faculty are saying, “Oh sure, those simpler and more conceptual ways of programming are fine for people who won’t be real programmers.  For our students, it’s C all the way.”

I don’t dispute that Unix/C philosophy has won the marketplace. I worry about only teaching that to our students. I think it’s important for Computing  majors to understand Gabriel’s debate, to understand what’s valuable about Lisp, Smalltalk, APL, and other high-power, lots-done-in-few-lines-of-code, flexible languages and environments.  We want our students to be thought leaders, to think about possibilities that aren’t currently in vogue in the marketplace. They should know about lessons of history, to avoid repeating mistakes and to resurrect old ideas when technology and opportunities fit.

The political forces are lined up to make the Georgia Tech change likely.  In comparison with the departments that I had contact with this summer, we’re late.  The C-only train has left the station.  Few departments teach surveys of programming languages anymore, and I don’t know of any department that teaches a required course in history of computing. I worry about what this means for our discipline.  Are we really going to tell students that the peak of human expressibility for computation was in 1973?  That all programming language research from here on out is wasted energy?  That simplicity is all that we can ever hope for, and correctness and consistency just aren’t worth working on? Are we forever stuck with 30+ year old ideas and don’t even teach that anything else is possible?

August 14, 2009 at 12:09 pm 64 comments

Fashion counts: Cell phones vs. Calculators

My advisor, Elliot Soloway, appeared in the Atlanta Journal Constitution this week, which made me proud. Education columnist Maureen Downey wrote a piece on “Cellphone as Teacher” in which she talked about Elliot and his quest to make cell phones into useful and powerful educational tools. The idea is to “capitalize on children’s natural affinity for technology and the omnipresence of cellphones.”  The article talks about how the cell phones might be used: “Students measured the area of a school hallway, recorded the geologic stages of the rock cycle and found mean, median, mode and range from a group of numbers. They sketched and even animated on the phones.”

My kids started school this week (Georgia starts waaay early), so I’ve been spending lots of time in Target and Office Depot picking up school supplies — including calculators.  Have you looked at calculators lately?  They are amazingly powerful!  A $30 calculator provides a list interface to input sets of numbers, and then does regression analysis and solves simultaneous equations.  The $100 calculator that’s required for the high school does graphing, animation, and includes a digital periodic table.  These calculators can easily be used for everything Maureen describes.  A $100 calculator is way cheaper than a cell phone plus minutes. There’s a huge amount of curricular materials for calculators, and the teachers now do welcome calculators into the classroom, unlike cell phones. Maureen quotes Elliot saying, “Now, we truly, finally have personal computers that are going to fit in our pockets.” Calculators have been there for years.

So why not push calculators, rather than cell phones?  They are cheaper, more powerful, the curricula already exist, and teachers already accept them.  I’m pretty sure that I know how Elliot would answer: you start from where the kids are.  Calculators are not cool, are not interesting.  They are out of fashion.  As Maureen’s piece says:

“Laptops are very ’90s,” says University of Michigan researcher Elliot Soloway. “They are your daddy’s computers.”

He might as well have said, “Calculators are very ’80’s.  They’re your grandfather’s computers.”

I think about that with respect to computing education (and the next blog post I’m planning).  I’ve argued that no student gets engaged anymore by seeing the word “Hello World!” appear on the screen.  In MediaComp, the equivalent of “Hello World!” is to open a picture and play a sound.  That’s a minimally interesting unit of computation.  But what will it be next year? In five years? In ten years?

In contrast, I look at my kids’ math books, and social science texts, and even science books.  I recognize the pedagogical methods, even some of the figures and diagrams.  There is change there, but there is also a sense for what makes education work.

Will we ever get there with computing education and educational technology?  Our field is so influenced by fashion, by the latest and greatest thing.  What’s cool engages. What’s out of fashion is rejected by students.  Why does fashion seem to influence other disciplines less?  Maybe it does influence engagement there, too, and not changing is a downfall.  On the other hand, there are lots of kids taking Calculus AP, and few taking CS AP.  Math Ed seems not to be a slave to fashion.  How do we get to the point where we can talk about computing education that works, period, and that we can keep using for decades?  Or does the continual upheaval in the field force us to always be on a treadmill of creating the next trendy educational technology or computing education initiative, none of which will last long?

August 14, 2009 at 11:31 am 3 comments

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,185 other subscribers


Recent Posts

Blog Stats

  • 2,060,332 hits
August 2009

CS Teaching Tips