Teaching


When I teach I try to interject as much real life experiences into my lecture. Sometimes these border on somewhat cynical, but none the less realistic (especially my project management lectures). But, these are classic and and if you stick with it, Joel has a serious good lesson in there. The best lessons learned in college are not the ones intended to be learned and learn to communicate well.

Here is part 1, part2 and part 3 of his talk.

When teaching Project Management, I often have the feeling I am struggling to make the class interesting and relevant.   Since my audience consists of senior undergraduate level students and it is a required course I face two hurdles:  1) Many would not choose this course if they did not have to take it; 2) Most (99%) have no experience in Project Management, even as someone who had worked under a project manager.   I do have an occasional adult student who has some experience.   So enough whining, what is my point anyway…

I do stick pretty close to the book with my lectures, the very good book from Kathy Schwalbe, I am always giving a lot of thought to what I can do as a value-add and make the course more interesting.   Most of these students have not started their careers yet, not even sure where they want to go with their careers and certainly are not looking for a PMP certification.  One thing I do is assign a group exercise where they are required to research and present an assigned topic such as eXtreme Programming, RUP, Scrum, MSF (Microsoft Solutions Framework, etc.   This gives them an insight into the software developmnent lifecycle and differing methodologies.

Since the book mainly uses MS Project as a software project planning software example, I have decided this semester to show some other examples.   I am not knocking MS Project, I also decided to go over some lightweight methods of organizing projects verse the heavier method MS Project provides.

So, I have chosen two examples.   These are:

1) Basecamp – a blurb taken from their website states: Basecamp turns project management and collaboration on its head. Instead of Gantt charts, fancy graphs, and stats-heavy spreadsheets, Basecamp offers message boards, to-do lists, simple scheduling, collaborative writing, live chat, and file sharing.

2) Zoho Projects – again from thee product website a short description of their goal.  Zoho Projects help teams organize their work & track progress. Most of the project management software takes longer time to setup & it becomes a overhead in a project. Zoho Projects is designed to make sure Planning & Management takes lesser time than the actual work.
Basecamp is from the same company that brought the world the Ruby On Rails phenomenon.  They have several other collaboration products available such as Campfire, Backpack, Writeboard and Ta-Da List.

A couple of notes/disclaimer.  First, you may ask what problems these are products trying to solve?   Microsoft Project works fine, it has all the functionality I need from a project planning software tool.  Again I repeat, I am not slamming MS Project it is a great tool for many projects.  This is only a different perspective.  You are right, that is the point.  It can have too much functionality.   These products are trying to be effective by being simple.   A software planning tool should assist the development team in delivering software, not become a project in themselves.  Often maintaining the project plan becomes a horrendous task taking up way too much time.  I have experienced this myself, all the charts, reports and task lists (Work Breakdown Structure) become tedious to maintain.  These products are providing a lightweight manner to maintain tasks, resource assignments and the communication.  These products would work great with a development methodology such as Scrum which is meant to be lightweight.
The disclaimer is that I have used the free versions of 37Signals products for my own use and am a big fan of them.  Basecamp is a very capable product that has been available for some time, Zoho Projects is in beta.  I am not going to compare the two (though will be inevitable it may happen) but attempt to explain my view of how each works.

In installment two I will start looking deeper into these two lightweight project management products.

I am just coming into day two of teaching the Programming I course. This course should be a real challenge, there are 21 students!!!  That is by 6 the most I have ever had in this course.  My project management course had 28, but that requires less one on one interaction.

By the way, one of the things I love about teaching the University of Phoenix online courses is that I have students who live in places ranging from the northwest, CA, across the USA, the east cost and even Guam (actually 2 of them who found out they know each other and live there but didn't know they were attending the U of Phx!).

Anyway, in the first few days the main gaol is to get everyone to the same level. This involves getting everyone with the same JDK installed,downloading a text editor and getting their first app running. For a text editor I recommend JGrasp but don't enforce it.  The next step they need to create a program that prints their name or the proverbial "Hello World" just to show they have everything installed.  The students, though generally very experienced in their careers, quite possibly have not had a lot of experience programming.  Most have done one other programming course in C at this point.  Therefore some get frustrated when they cannot get their programs working.  This is 99% of the time 1 of 2 problems. 

1) They did not name their public class the same as their Java file.

2) They had something in lower case or at least the wrong case.  For instance system.out.println instead of System.out.println. 

You can imagine this becomes very frustrating when you first start out.  Therefore I have always recommended when you reach the boiling point to walk away and do something else for awhile or at least go away and write it down on paper.  This always worked for me and seems to be a great method to see the "forest through the trees".

Therefore I was really happy to see this entry on the Hacknot.info website.  Especially the portion with the text Take A Break as this was almost word for word what I tell my students.   

What other useful hints do people have that I could pass on to my students? 

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

Arrays

· Explain arrays.

Objects

· 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.