I am making final preparation for another online University of Phoenix course today and it has put me in a reflective mode on teaching and learning Java. Maybe because I am also burying myself in the world of JSF and AJAX this weekend in connection with a project I am working on I am thinking more about learning new topics.

Anyway, I am teaching a Programming I course (POS 406) where I usually teach the Programming II course. This semester I have been assigned the predecessor and I have been updating my discussion questions, exercises and syllabus all day. Here is the 5 week class layout (note there are simple programming assignments at each step):

Java Basics

· Explain the Java Virtual Machine.

· Explain the terminology of object-oriented terminology.

· Explain documenting, coding, compiling, executing, testing, and debugging Java programs.

Data Types

· Define data types.

· Explain classes and methods

Selection and Repetition

· Explain selection

· Explain repetition


· Explain arrays.


· Explain objects.

The challenge in teaching this course are many. One is creating an interesting and fun environment for students to learn in. The other is the diversity of backgrounds of the students. Some come with many years of practical experience and are finally taking time to get their degree where others are newbies to CS and development. Finally, for this class is not to make it a Learn Java only but to teach the topics generically while using Java as a tool. This was why I was looked at integrating BlueJ, but decided against it as strays too far from the norm for the Univerisity.

The challenges for this course are really different for my GMU IT 443 Course. This course is not a selective but a mandatory course. Also, I believe it contains a lot of theoretical information which you need to teach differently. Finally, when programming in Java you can see a result from a program fairly quickly, in project management this is hard to do in a 15 week, 1 night a week format. Don't get me wrong, I think each is as important as the other, just find teaching Java much easier.

Speaking of teaching Java, the company I work for the FDM Group is looking for Java programmers. I will blog about this later but in the meantime check out the FDM Academy.

I attended the Northern Virginia Ruby User Group last night.  The presentation was an interactive live example of the capabilities of Ruby and well done by Devin Mullins (Thank you!).  Being very much on the beginning end I had the feeling I was probably one of the least experienced people.  There were 4 guys from Steve Case’s new healthcare company there and they are using Ruby (well Ruby on Rails) in production.  Their company Revolution Health Group is looking for Ruby developers.  A quick search on Hotjobs for “Ruby” returned 678 jobs.  Of course a share of these have nothing to do with the programming language Ruby such as companies located on “Ruby Street” but will be interesting to see any developments in this area (and I don’t have the time to weed out the non IT ones so lets just stick with 678).
Ruby appealed to me first of all with the “everything is an object” concept.  I skirted with Smalltalk in the early 90’s before being pulled head first into a C++ project.  By the time I emerged from that project Smalltalk had disappeared from the radar.  It has everything an OO language should have and what I have seen and the little bit I have done, it is fun.  Yes fun.  Not challenging like Java but you catch yourself going “wow, that was cool” a lot.  There is a good overview of Ruby on If you are using Windows there is a one click installer located here.  As of writing, my favorite part is Modules or Mix-ins.  Modules are like classes except they have no instance and are not allowed to create a subclass from them.  You can think of these as a collection of similar methods in one place.  The other use of modules is as a mix-in (and this is really cool).  Ruby does not have multiple inheritance, but you can include one or more modules in a class and the class has access to the methods in that module. And, (drumroll please) it can be done at runtime.  Why if multiple inheritance is so bad do all new languages have a way to cheat the system and do it?  Just a thought.
I have read that Ruby, besides other uses, would be effective as a tool for teaching programming.  Hmmm, not sure about that one as; 1) I think learning should be done in a stricter language and; 2) Once students use Ruby they will be ruined for life as they will have had so much fun.  Would there be enough Ruby jobs out there to keep them going for their whole career?
Ah, the old IDE wars… 

Ian Skerret in his blog is claiming market share increase for Eclipse.  This is according to SD TImes.  This is not really new news as the blog from Ian was March 11th.  What is interesting in first Netbeans response.  Romaun Strobl a Sun Netbeans evangelist has responded in his blog.  Interesting is the two methods used to come to their conclusions. I think both are telling the truth in respect to their data gathering methods.  However, I have to say the Netbeans argument and method convinced me more.  They are using a unique ID for each IDE and not counting people begind firewalls etc.  Eclipse has certainly a large market share and it is a great open platform.  But Netbeans 5.0 has put the pressure on them. And don’t you just love the competition.  I mean the winner will be us, the users.
Last, in my line of work, in teaching at the University or just because I work in the field I am often asked about IT as a career.  Personally I think this is one of the best times to be in this business right now.  Here is an interesting article on the subject in Computerworld.   It basically backs up what I always say, if you are good, motivated and interested in not only the technology but in the business you are working in (don’t live in a bubble!!!) then you will be in demand and successful.
Bye for now….