Sunday, March 06, 2011

C# Teaching Results

So what was the result of teaching C#? Well...in some points better than I had hopped, the students were able to get a grasp on the syntax and get programs running. But...I wouldn't say that they had an 'integrated' idea of what they are doing, just a bare minimum ability to execute a program.

What didn't work at all well was the book. The book was, strictly speaking, good, but it adhered to the 'classic' approach - editing and running programs from the command line first - with no visual interface. The language proved to be as much a problem as I was worried that it might be. It simply isn't possible to introduce brand spanking new programmers to C# and expect them to do well. By the end of the course the students could get a program to run but a lot of it was by rote - they hadn't internalized the syntax... C# uses four different kinds of brackets <> () [] and {} and they can all be on the screen at the same time.

The book also focused on the 'object approach' which is common in programming but this emphasis while important - caused no end of confusion - almost every example had a mainline program and then customized code that did the example that the student was working on was done in a class. Then the student created an instance of the class in the mainline and executed a method to run the code. Now, this is technically correct - but it was introduced immediately - without showing why it needed to be done. Object oriented programming was a response to a need - it's important to communicate what that need was.

So why am I writing this now? Because I'm coming up in a few months, on training this course again. This time it will be a larger class of around 30 to perhaps as many as 35. I've changed the language in the course to Visual Basic.net and the book for VB has been updated to use only visual programming, no command line work (a point they specifically mentioned in the update notes to this new version of the book.

Out of my original 11 in my course 8 passed and of that 5-6 actually could write a program. I'll spend much more time when I teach this again setting context and trying to 'connect' my students to the activity of programming. These students are not in a pure computer/ it program, it's a business skills mix, with programming only as a part of it. So the effort needs to be made to help the students see the relevance to their lives and career.

I'll update you again as I teach VB.net