Monday November 14, 2005
We've been having lots of fun at home with my favorite "other" Java IDE: BlueJ.
It's an IDE specifically designed around teaching programming. It's used
extensively in Universities, High Schools and Middle Schools. It takes
the rather unusual tack of teaching programming by not starting off with
programming: instead they start with objects and have a visual way to
enable students to manipulate them directly. This develops intuitions
about the nature of objects. They also have a great
textbook that goes with it.
My wife (who was a programmer aeons ago, but in Fortran) has been teaching herself and our 7 year old how to program using BlueJ. They've been real happy with it. The 7 year old's biggest problem is that her reading isn't quite good enough. Gotta work on that.
When I was a kid, I was considered a freak, starting to program when I was 13. These days, it's normal. Coolness...
However for him NetBeans is really overkill and something simpler would be more appropriate. I've pulled a copy of BlueJ and it looks pretty ideal from my 10 minute play. The only hiccough was the menu item to start the web browser didn't work but all that was required was an edit of lib/bluej.defs to change 'Mozilla' to 'Firefox'.
Thanks!
Posted by Alan Burlison on November 14, 2005 at 03:18 PM PST #
1. First, Simple is beauty and speed is power. Never forget it.</br>
2. Why did you add this feather? it's just you 'core Java team's thinking, Or the feedback of all java developers around the world?</br>
3. About this feather: Does it make java beauty or power? NO. First, a developer should not define static fields and methods in an interface, If he has to or like to. For example, Define an interface 'Light'. I think 'Light.Speed' is better than 'Speed'. Second, if a developer complains it's complex to type(although I think it's few and not good). the problem should be resolved in IDE, NOT IN JAVA, JAVA IS THE BASE BUILT.</br>
4. Add a feather is easy(People likes change or new, but change or new isn't always invent or developing.), but remove it is difficult. You should be more and more cautions to add the new feathers</br>
Posted by lihaiyang on November 14, 2005 at 08:08 PM PST #
Very cool! Thanks for highlighting this. I have been teaching Java and OO-think to beginners and non-beginner-programmers for about 8 or 10 years now (a sideline activity - I am still practising developer).
The last few years I have been teaching beginners at high-school level, and thought I was just the odd-one-out by teaching Objects First, and the conventional "structured" stuff as incidental to getting objects working.
The approach was first suggested by watching my son teach himself Java at about 12-years old (he's now 21, and a very-in-demand Java developer). One day, after he had been writing all sorts of little programs for about 18 months, he came to me with the question, <strong>"Dad, where are the methods for ints documented?"</strong> The implications of his question stunned me. I was delighted, but had to face the (sticky) task of explaining to him that "some things in Java are not objects". He was floored! He went very quiet for a few days while he processed this new concept, until he grokked it. (Incidentally, to this day using reflection comes more naturally to him than using arrays.)
Over the years I have experimented with various takes on the "Objects First" approach, with varying levels of success (due to my own inattentions and limitations). Final confirmation was this year: I buckled to pressure from other parties to teach the new CS schoolkids using a conventional approach - first simple sequential logic, then some gentle flow-control, then arrays, etc.
It's been a dismal disaster! This year's batch of kids are at least 6-months retarded in their development as programmers compared to the previous-year's kids. They are still struggling with the elementary OO concepts. This is a stark contrast to the previous-years kids who "just get it". (My star pupil has just implemented a multi-user client-server chat app with almost no help from me! He has not yet been programming for 2 years.) Never again will anybody persuade me to follow the conventional approach.
The problem, though, has always been tools. As one previous poster has mentioned, Netbeans is way too heavyweight for a beginner. Most of the other options are just crappy. So! Thank you again for providing a much-needed pointer to BlueJ, and thereby also helping me confirm my thinking on teaching programming "correctly".
Posted by Mike Morris on November 15, 2005 at 06:00 AM PST #
Posted by Tom Copeland on November 21, 2005 at 06:57 AM PST #