Reaction for: Object Oriented Programming by Lucas

I must admit that during the first few lectures when Andy alluded to the "magic" of Java, I had absolutely no idea as to what he was talking about. Magic? Where was all the code that took care of positioning things at x,y, animating frames, drawi ng things. Then I realized that this magic was a way of introducing virgin programmers to that monsterous thing known as programming. No more "Hello World!" programs; our first efforts in CS15 would be graphical eye-candy that gave a much more satisfact ory feeling than their text-based counterparts. For a time I believed that this was just an interesting quirk of this particular CS course.

After reading this article, it becomes clear to me what a radical stance van Dam et. al had taken in 1981 when they introduced a graphical approach to introductory programming. However, this presents some major issues, especially when the desire of real- world experience (as is discussed in paper 1) is thrown into the mix. Sure, GP is easy do deal with and understand, but if a student wants to apply their programming knowledge to a third party project, chances are they'll be dealing with AWT, a much less user-friendly package around which GP is a wrapper. (As a side note, this leads me to question why the AWT is taught in CS4, a supposed "kid brother" to CS15.) However, the point of having fluffy nice support code is to force the students to focus more on the OO concepts that they're learning, and CS15 does that quite nicely. Polymorphism and inheritance are made easy and (dare I say?) fun.

It seems like 15 hasn't changed too much in the four years since this article's writing. The "Second Attempt" outlines my experience last semester (except for the OOPas vs. Java). But that's what this GISP is for; to figure out what can be improved in C S15. OOP is definitely the way to go in the intro class. CS15 does a good job of teaching it -- it just needs to be tuned up and kept current. The use of Java, that "hot new language for the internet," seems to be a good platform language, with its bui lt-in safety nets.


Reactions

Jon's Reaction
One thing I have thought about when teaching cs15 (and cs4, and cs32) is that GP and the "magic" does allow you to do a lot of cool things, and have much more interesting programs, than you could do without it. However, I sometimes think that there is a problem in that cs15 never write a program completely by themself. I know that any program you write will always use some sort of support code (unless you're hacking machine code), but I think there is a psychological difference when all the programs that students write is on top of TA-written support code. I have seen/felt the idea of "would I be able to write things without GP?" I don't know how big a problem this is, or if the solution would be worse than the problem.

Also, cs4 teaches AWT because cs4 does not have quite the same ideals and purpose as cs15 does. Its purpose is more to be a "one-shot" CS class, that teaches people "useful" knowledge, instead of teaching things that are preparation for further CS classes. Also, cs4 was developed and taught by different people than cs15, so different decisions were made, and different techniques were used.


Andrew Schulak

First off, I do not think it is a safe assumption to say that anyone who uses Java in the real world will be using AWT. Already there exist other graphics packages and toolkits for use with Java that may or may not be easier to use. As long as a language exists there will be many ways to do things graphically. To say not using what the language provides is bad is a little naive I think. I mean, look at CS32. We do not make everyone use X, or whatever is more native than that. We provide and allow all kinds of different graphics packages for student use. Granted, most of them are not in-house productions (GO BAUM!), but the effect is the same. I think the arguement about using GP instead of (insertyourfavoriteGPhere) is almost moot. We teach object oriented programming. Period. Frankly, AWT in its first incarnation was not a good model of object-oriented programming, so it was not used. The new Java Foundation Classes are actually constructed more like our own GP is written and is considered to be more OO than the previous package.


[BACK]