[Edu-sig] A case against GUIs in intro CS :-)

Toby Donaldson tjd at sfu.ca
Fri Jun 3 21:43:33 CEST 2005

Jeffrey Elkner wrote:

>On Fri, 2005-06-03 at 01:59 -0700, Toby Donaldson wrote:
>>When I taught VB (Visual BASIC), however, the GUIs were great, and
>>students almost universally said the course was more interesting and
>>enjoyable because of them. In part, they liked the fact that their
>>programs looked like real programs, and that there was some room for
>>creativity in how they organized their interfaces. Student were often
>>driven to do extra programming by a desire to add or fix features they
>>had seen in programs. I liked the fact that there was a very clear
>>design phase where you had to sketch out the interface. Talking about
>>the interfaces was a good way to talk about the program without
>>talking about the source code. This helped students organize their
>>source code, and to see first-hand the benefits of modularity, i.e.
>>they were always writing the code for widgets in specially-named
>>functions. Also, GUI widgets roughly correspond to programming
>>concepts, when deciding if you want to use a text book or a list
>>(say), you are indirectly deciding which data s!
>> tructure you want to use. Some students said they thought that
>>learning VB first made it easier to understand Java-like OO GUI
>Toby, check out pythoncard (http://pythoncard.sourceforge.net/).  I have
>a student this year, Daniel Caughran, who used it for his science fair
>project, and he compares the experience favorably to using VB (with
>which he is familiar).  He was able to put together a very useful GUI
>program with a minimum of effort.  Version 1.0 will be out soon.  It
>looks like teachers using Python can now offer their students the
>advantages of VB without the disadvantages.
Thanks, will do.

>>As much as I like Python and dislike the BASIC part of VB, I do have
>>to admit that my experiences with VB were probably the best I ever had
>>teaching introductory programming (although it wasn't quite a CS1
>>course, just a humble introduction to "event-driven" programming).
>I "taught" VB for a year, and was amazed to find out that I made it
>through the entire year without either myself or my students (naturally)
>learning much of anything about programming.  To be fair, that is not
>the fault of the tool itself (though the tool did contribute to the
>problem), but rather the fault of the approach used to teaching it (it
>was my fault, in other words, but let me explain ;-).
>We used a Shelly Cashman book as the textbook for the course (I had
>nothing to do with choosing it).  These books seem to be popular with
>some folks inside the school system because they keep students busy (and
>thus, the reasoning goes, out of trouble).  They also teach students
>almost nothing.  Long, complex procedures are illustrated step-by-step,
>with screen shots showing exactly what the screen should look like at
>each stage.  Students are able to follow the instructions step-by-step
>to achieve the desired result (thus they are kept busy), but the focus
>is almost exclusively on the environment and the procedures are way to
>complex for students to be able to extrapolate much of use from the
This is a good point ... I recall that many of the VB textbooks I looked 
at step-by-step procedures (with screenshots for every step) that guided 
the students through the creation of a program. It seems like a 
reasonable way to teach programming to beginners, although, as you say, 
if it is just about the mechanics of coding then it's nothing more than 
a VB package training course. Which is fine if you never use anything 
but VB, and never need to do anything too advanced.

I recall that the VB text I was using had a very elegant and 
sophisticated implementation of mergesort --- more elegant than the 
implementation given in the data structures and algorithms textbook I 
was using at the same time for a CS2 course. I suppose that's because CS 
courses are not really about programming, but about the underlying ideas 
and concepts. Implementation is sometimes treated as a necessary evil. I 
am surprised how frequently I hear CS people talk about their dislike of 

>It is my hope that the grass roots nature of the Python community will
>prevent this same kind of thing from happening with our teaching
>materials, particularly as more and more people are using Python.  The
>eclectic, cross platform, multi-environment nature of Python programming
>will make it difficult for a Shelly Cashman type book to be written.  Or
>at least we can hope...

More information about the Edu-sig mailing list