“I want to teach someone’s first programming class” my geek friends have heard me make this comment far too many times. So I reckon I better explain myself …Being out of uni for less than 5 years means I can still vividly remember my struggle to understand and find the relevance to real life in what my lecturers were continuously and tirelessly trying help me understand.
Ok so this is not a rant on my lecturers I believe they did the best they could. This piece is more of a rant on the programming curricula or course plans.
I believe the issue of high drop out rates in programming courses is due to a fundamental flaw of how programming is taught: The aim of most programming courses are to teach students to write programs [in a, b and x languages] but maybe the aim of any programming course should be to teach a student to solve problems using programming principles.
I believe the issue of high drop out rates in programming courses is due to a fundamental flaw of how programming is taught: The aim of most programming courses are to teach students to write programs [in a, b and x languages] but maybe the aim of any programming course should be to teach a student to solve problems using programming principles.
So here in lies our problem, teaching students how to only write programs means that programming principles and constructs like recursion , data structures , hashing are taught as informative exercises rather than as an exercise to teach why these principles are important and in what ways they are needed to solve real life problems.
I remember struggling to understand why I was writing a programming assignment to loop through and output the values 1-10 or programming to traverse a tree structure or to add and delete nodes from a linked listI am not saying these exercise didn’t help in the long run I am just saying it might have helped give the couple the hundreds who drop out or failed their programming classes a better chance. Maybe? Or is it more a case of survival of the fittest?
I am no educationist but this is my 2 cents if first year programming classes were more about teaching students problem solving through programming whilst leaning heavily on giving students the knowledge and skills to write good solid algorithms, I might have enjoyed my first year and second years of programming in the university before the light bulb came on in my third year.
Like anyone who has being the same boat, once the light bulbs came on [I took enough internships to give me real life programming experience] I came to understand the underlying principles, why they were necessary and where they could be best applied. By learning this switching between programming languages became much easier.
So back to my original statement why do I want to teach someone’s first programming class? Having survived C++ in my first semester and Java in my second, I have being through and understand the struggle of being a first time programmer. I now understand the reasons why that was such a struggle and understand what is important for a programming course i.e. problem and solving and making programming fun as opposed to a chore …So next semester then…
Go on what was your first programming class like? Did you enjoy it? If not what could have being done to make it a better experience?
This entry was posted
on Thursday, October 9th, 2008 at 12:39 am and is filed under Education, Inspiration.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.

do you have suggestions for someone who actually understands data structures and principles, but couldn’t write codes along those principles? i would understand but when i code, there’s bug in every code line and there was no way to trace each one..
how do you recommend the other way around, where someone has a grasp on principles, but just don’t know how to write actual codes for the principles?
The thing is that the curricula is designed in such a way which seems more commercial than educational. For instance, first year students are taught Java (which is highly dynamic) which is based on C/C++ but if only they are taught C/C++ first, it would be easier to understand the underlying principles of Java which wouldn’t be much different from C/C++. Secondly, first time programmers need to be taught what can they actually do with what they are learning, as in, what’s the real-world scope in it? Many people say that one can make a lot of money working in IT industry or something similar but that’s not what they need to be taught in terms of real scope. When they are given assignments, that’s the only way they can visualise what can programming be used to do.
Keep up the effort!
i love the different comment the purpose was to draw debate from all side students past and present and academia
@helena puglsey almost everyone i know had a similar experience related with how to problem solve as their ‘aha’ moment and thats the key really
@rob miles thanks for your comments i was hoping to get reactions from academia so whats your take on the complaints from recruiting organizations that IT students seem to leave school without the correct skill sets?
I teach programming as “The Science of the Happy Ending”. The starting point should be you finding out what the customer wants (without upsetting them in the process) and the end point should be a customer with a working solution and you with an appropriately large lump of money.
You wouldn’t teach someone to drive without mentioning that you can use this ability to take yourself and other people around the place, so teaching programming without mentioning the idea of solving problems for people (or even yourself) seems just silly to me.
I taught myself programming in my teens so by the time I got to college I was pretty far ahead of most people. It clicked for me because I was inventing the problems I wanted to solve for myself. I question the efficacy of any formal beginners’ programming training compared with just sitting down and trying to write basic games and utilities independently. By the time you get to class you’ll know what problems those data structures solve because you have already run into them.
I don’t think problem solving is something you can easily teach people; believe me, I’ve tried. I’ve always been one to help the people through CS classes that really shouldn’t have been there in the first place. Programming is a creative and highly individualized process which is completely dependent on how your brain recognizes patterns. People who have systematic abstract thought processes by nature will have a much easier time of it than those who do not.
The biggest favor you can do for first year programming students is to give them a problem and a manual and only help them when they get stuck. That’s how it works in the real world anyway. Perseverance is the most important skill to pick up at the beginning.
How about some lessons on basic written English first?
I so totally agree! In fact I wrote part of my MSc dissertation on just that issue.
And when we were given more real life examples they weren’t particularly anything the majority of the population could associate with. The ‘aha’ moment when everything clicked for me was when someone was teaching me UML and instead of thinking about how to programme I was thinking about the problem and how to solve it… after that the turning it into a program was easy (or easier anyway!).