 |
Java and Education: BlueJ
Posted by rstephe on June 13, 2003 at 01:09 AM | Comments (9)
In a session Thursday afternoon, Michael Kölling and John Rosenberg demonstrated
BlueJ, a Java IDE they had developed over the last seven years for teaching O-O
programming.
BlueJ's guiding philosophy is to make it possible to teach object-oriented
concepts first, before students even begin to write code. It does so by representing
the objects in a UML-like graphical format, and showing their instances as boxes
on a tray at the bottom of the screen. Clicking on an instance brings up a list
of its methods, which may be executed directly. The result is so stunning that,
once you see it demonstrated, you wonder how we could ever have taught programming
any other way.
BlueJ has been adopted by at least 500 schools. In fact, since they usually
have no way of knowing when it has been adopted, the number may be much higher.
Kölling and David Barnes have authored an excellent textbook: Objects
First with Java: A Practical Introduction using BlueJ (PrenticeHall 2003).
BlueJ is free (as in free beer) to use for use in schools or businesses, or
for any other purpose so long as it is not resold. It can be downloaded from
http://www.bluej.org/ It is not open source
-- specifically , as they explained, to prevent folks from adding their favorite
improvements and spoiling its zen-like simplicity in the process. But don't
go off to teach Java without it!
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Using BlueJ
I've been using BlueJ in teaching for a year. I completely agree with Robert Stephenson's comments. It is superb for allowing students to understand how objects work, particularly the Collections classes.
Posted by: jhpaterson on June 13, 2003 at 03:08 AM
-
Missing a foundation in the basics
I'm not sure I'm sold on BlueJ. There is something more to being a good programmer than understanding OO concepts.
Having to type some commands in a shell force you to learn some very basic concepts. Things like filesystems, what the OS actually goes through to lanuch a program, etc. There are some basic principals that are much more deeply rooted than those of OO programming that should be understood before you try to hide them behiind the curtain of cute boxes linked to gether on your screen.
It's this lack of understanding about what is behind those objects that is the same basis for why VB programmers get no respect.
Is teaching with BlueJ a way to make programmers that think they can program without really knowing what they are doing? The result being a program with a pretty UML graph that performs poorly or has other fundamental problems because the programmer didn't have true understanding of how computer systems work.
I understand that the goal is to teach good OO habits from the beginning so the programmer is tainted with a history of 'old-style' icky procedural techniques, but does it really result in better programmers?
Posted by: swpalmer on June 13, 2003 at 05:51 AM
-
It's been done before, and it's been done better. (Sorry)
BlueJ might be a good introduction to Java, but I wouldn't use it to teach object-orientation.
When I used to teach students about object technology, I found that modelling and UML aren't a good place to start because they're too abstract. The trouble with Java and BlueJ is that they're not consistent enough.
Programming and the application of polymorphism are at the heart of object-technology.
When I write "Hello World" in Java, I don't want to explain "static", "main" or why arrays aren't really obects to my students. There are too many vestigial features from the nasty, C-based bit-shuffling days of the seventies.
I don't want to explain about classpaths, or files either.
I suppose what I'm really looking for is a powerful, consistent language that's so simple it could be taught to schoolchildren.
Wait a minute, didn't Xerox do that in the late 70's? ;-)
Java is fine if you want to earn a living, but
if you're going to propose a different language for education, you might as well pick one that's designed to use the concepts simply and consistenly, rather than invent a "lite dialect" of a conservative, commercial language like Java.
Posted by: dafyddrees on June 13, 2003 at 10:26 AM
-
It's been done before, and it's been done better. (Sorry)
So simple it could be taught to school children.. hmmm reminds me of BASIC which I learned when I was in grade 5... (LOGO made cute pictures, but after a few boxes and snowflakes all interest was gone..)
The C-based bit-shuffling days of the 70's are the foundation on which the fancy-pants OO languages must be built. It is essential for a good programmer to understand such things fluently. At least I've noticed that the poor programmers are the ones that don't.
Posted by: swpalmer on June 15, 2003 at 08:18 PM
-
Missing a foundation in the basics
I accept that there's more to programming than understanding OO concepts, but it is pretty important to be able to do that. BlueJ does MUCH more than show a pretty UML graph - it allows students easily to delve deep into an object and the references ito contains to other objects. For example, try creating a class with a HashMap variable and inspecting it - you can get a pretty good demo of how a HashMap stores its data - then do the same with a TreeMap.
Unlike VB, BlueJ does not hide many things. It doesn't build a GUI for you, for example. It doesn't generate code other than a basic class or method skeleton. It emphatically does not produce programmers who don't know what they are doing!
Posted by: jhpaterson on June 16, 2003 at 03:45 PM
-
Yes, about 7 years ago, I thought that too.
I used to believe the statements you make. It's taken me seven years to get over my prejudice against Smalltalk.
I used to share the belief that "I'm so tough, because I can handle C/C++ and even Perl". Nobody cares about that. People just want their software simply and concisely, and delivered on time. People also want their software changed - something that's hard to do when you've written large, low-level volumes of code with all sorts of implicit inter-dependencies.
It's really true - they were ahead, and they are still ahead... and they really did teach it to children... and it has been used successfully by many businesses.
Posted by: dafyddrees on June 17, 2003 at 01:15 AM
-
DrJava
Another student-focused Java development environment is DrJava (http://www.drjava.org), which is available under the GPL. Quoting from the Web page:
"DrJava is a lightweight development environment for writing Java programs. It is designed primarily for students, providing an intuitive interface and the ability to interactively evaluate Java code. It also includes powerful features for more advanced users."
It even now has a built-in debugger that allows you to evaluate arbitrary expressions and statements in the context of where the debugger is stopped.
Full disclosure: I was one of the primary developers on DrJava as a graduate student but I no longer work on it.
-brian
Posted by: brianstoler on June 18, 2003 at 10:04 AM
-
Robocode rocks
I'd like to suggest a different approach for introducing OO to younger students...
Getting students interested is half the battle. I have found that Robocode is particularly effective in snagging teenagers (particularly the males of the species).
Posted by: johnreynolds on September 23, 2003 at 08:43 AM
-
It's been done before, and it's been done better. (Sorry)
One of the advantages of BlueJ is that you don't have to get into that at the beginning. It is designed so that the first lecture can be about objects, their properties and methods.
>When I write "Hello World" in Java, I don't want to explain
> "static", "main" or why arrays aren't really obects to my
> students. There are too many vestigial features from the
> nasty, C-based bit-shuffling days of the seventies.
> I don't want to explain about classpaths, or files either.
Not sure what you were referring to below, but BlueJ is not a "lite" dialect of Java but a lite IDE.
> rather than invent a "lite dialect" of a conservative,
> commercial language like Java.
Posted by: rstephe on September 23, 2003 at 02:51 PM
|