[Bluej-discuss] formatter extension?
Lon Levy
lxl at oregon.k12.wi.us
Sun Oct 14 19:14:27 BST 2007
Hello Aryeh and all,
I'm going to be a bit off topic on a few points, but it really all does relate back to BlueJ.
Lon Levy, MS-CSEd
Computer Science Teacher
Volunteer Computer Club Advisor
Oregon High School
608-835-1316
LXL at oregon.k12.wi.us
cs at levytree.net
non somnos requiem
>>> "Aryeh M. Friedman" <aryeh.friedman at gmail.com> 10/13/07 11:00 PM >>>
> I couldn't agree more but for other reasons that have been tempered by a
> slightly different way I came to user BlueJ:
> When I went back to school (for various reasons my local community
> college and since then transfered to a 4 year) I already had 15 years
> experience in C/C++ from the command line (never used an IDE before).
> Since I had no previous college credit and my school doesn't allow for
> prior experience I had do the entire programming sequence starting with
> Java I and continuing through with 2 more Java classes plus the normal
> C/C++/ASM stuff thrown in. Suffice it to say the profs and dept head
> very quickly saw I was their equal and arranged for me to tutor all
> computer classes (apps, networking/web, CS). Due to budget reasons I
> was not able to tutor via the school this semster but still do some
> private stuff. At the same time I decided to start a small Java
> Developer Tools software house to pay for grad school.
> Through out all this I discovered the only IDE I can tolerate
> (BlueJ). The reason I can tolerate it is *STAYS OUT OF MY WAY*; namely
> it has just enough stuff needed to allow for IDE style development (plus
> some very useful convince things like the class diagram) but it doesn't
> attempt to dictate any kind of style issue towards me (I even turn off
> auto ident in the editor). So as a result because I work on a platform
> that historically (upto about 3 months ago) had very poor support for
> BlueJ and my personal preferences do 99% of my work from the command
> line but use BlueJ for prototyping and/or sketching out skeletal code.
At the risk of sounding like I am arguing with myself 8-) , I'm going to suggest that there is a great deal of value to a tool like Eclipse. It is my understanding that if one takes the time to really learn and understand Eclipse (I don't have that kind of spare time), one can modify it to do exactly as much or as little as one desires. This investment in learning can pay off tremendously for the professional programmer. That having been said, I still believe that one should choose initial tools for the programming student very carefully ... auto-indenting does not, I believe, stop students from learning but offers suggestions of what to do as opposed to pop-up method selection which limits what students think about. I think BlueJ is at the right level for my students beginning Java.
> Some things I learned from tutoring (sorry to say but I think profs
> often don't really understand the depth of issues the students who need
> tutoring face):
> 1. Java is likely already too complex for a true beginners language but
> since qbasic is not around any more it is the best we have
Here I disagree directly. There are a number of other languages that are in continuing development (unlike QBasic which did not fit neatly in to the structured programming paradigm and much less into any modern paradigm). Among these are DrScheme which I use with my students (see www.drscheme.org ), Python which a number of universities are using, Ruby on Rails which other universities are using, and many other possibilities. Java is a great development language. Michael K. and I disagree on the value of teaching Java first ... which he firmly believes in and has created great tools to make the clumsy language of Java far more manageable, and I am grateful to Michael and the BlueJ team.
Java is too complex, in part because it is not a completely object oriented language. Even worse than including primitives which are not wrapped in objects, Java allows something that I forbid my students from using ... an evil four-letter N*** word that is neither an object nor a primitive, but a reference that isn't. There are completely object oriented languages (SmallTalk and Squeak come to mind), but none are currently in vogue. It is much easier to teach and learn within a single paradigm.
Reality is that Sun Microsystems did a fantastic job of marketing a professional-level language. It caught on with most universities (at least for quite a while) and has been the Advanced Placement language for five years so far. Making it multi-platform and allowing us use it for free is certainly brilliant. It was never intended to be a first language.
> 2. Control flow is the single most confusing part of learning
> programming for most students . Specifically how to construct
> logically correct conditions (I was amazed when I found not a single one
> of my class mates or tutoring students [about 150 total] had ever heard
> of DeMorgan's Law).
I have been told that I am wasting time in requiring that my students learn truth tables. I don't introduce students to de Morgan's Law until their second high school computer science class (data structures in Java), but we can argue the merits of the pedagogical sequencing in a different set of messages. 8-)
> 3. Almost all beginners have a very hard time mentally visualizing how
> there program is executed. What I mean by this is they often get then
> and else clauses mixed up and such or complex statements completely
> baffle them.
This is one of the things I like about DrScheme ... a built-in "Stepper". I don't know that I would want the same tool in BlueJ, since the number of classes and instances to do things that are interesting makes the size of each step somewhat overwhelming. Another argument to start students in another language/paradigm and move later to Java with an excellent tool like BlueJ.
> For reasons 2 and 3 I **HIGHLY** discourage any kind of style generator
> and/or checker (at least avialabe to the student). Learning the reason
> for proper indenting goes a long way to help the student understand
> control flow and visualiazation skills.
Someone else mentioned having this available as a separate download. I think that is the best idea. There are some teachers who will gain value from it early (I am a little dubious, but there is no single correct way to teach or learn). I certainly agree that it should not be part of the regular BlueJ download bundle.
Again, kudos to Michael and everyone involved in the ongoing support of BlueJ. Even where we have professional disagreements on a few details, I am very appreciative for your hard work to make learning so much easier for my students. When we get to Java, BlueJ with its current tool set is a great starting point.
Regards,
Lon.
More information about the bluej-discuss
mailing list