The most disappointing reality of this negative attitude is when we acknowledge that programming is not only an essential part of any degree-level education in computing but progressively the same presence is taking root in other degrees. This is particularly true when students across a variety of other disciplines will at some stage in their studies come across HTML programming.
This deeply rooted perception held by students towards programming makes the task of lecturers who teach this subject truly challenging. A lecturer's role is not only about communicating knowledge and skills but also to work out ways of overcoming students lack of interest and poor motivation. Lecturers need to play the dual role of communicator/educator and motivator.
To achieve this enviable goal lecturers will have to work out why programming is difficult. This is a million dollar question. The other million dollar question is then to find what to do about it. Solutions or easing the problems faced by students would impact their employability chances.
Extensive amounts of studies have been carried out to understand the problem. Whatever advances made by psychologists and cognitive scientists are offset by even more complex programming approaches and tools. OOP languages such as Java and VB.NET are now widely used for teaching introductory programming modules in many universities.
However, feedback received from students would tell you that despite the fact the OO paradigms and principles are intuitive, nevertheless, their attitude to programming itself has not changed. It becomes apparent that we need to go back to the basics, more like square one, and re think what programming is and how we should approach it and teach it.
Programming is traditionally seen to be about solving problems. Programming is also seen as art; it involves a great deal of creativity, it applies accumulated knowledge to the world, it requires skill and ingenuity, and it produces objects of beauty. Richard Gabriel, distinguished engineer at Sun Microsystems, says: 'Writing software should be treated as a creative activity'. Best solutions are the ones that you can access and exercise your creative capabilities freely without hindrance.
This rethinking would require us to take the intuitiveness and expressive power of OOP and package it in enjoyable environment such that a student would view him/ herself as an artist creating a rich reality and manipulating it freely. This would be a major step forward to helping students overcome their negativity towards programming.
Now, why is that some of the popular programming environments are not moving our students towards such a goal? I have been teaching programming for a number of years at different universities and have used a number of programming tools such as BlueJ, Jbuilder, etc. My students have always struggled with these tools.
My own assessment of the difficulties with these tools is that they inhibit creativity and fluidity of thinking. They do so because of the gulf between the logic (algorithm) and the application or real wold semantics and requirements.
In the first semester of this year students worked with BlueJ and their principle difficulty was they could not engage their thinking (algorithm) in an uninterrupted fashion with the problem they were working on. This interruption was to attend to fixing the syntax of the language. The cumulative result of this was the re enforcement of the perception that programming is difficult.
In the second term of this year I introduced Alice 3D programming environment to the same group of students who worked with BlueJ in their first term. The impact was immediate. Students who struggled with their first assessment working with BlueJ were now fully engaged, and with confidence, in complex programming scenarios in their very first session working with Alice.
One student commented that they were able to simultaneously manipulate the logic of the program and think about the application or the task (In Alice this is called the world). The intermediate signs are very encouraging indeed.
Alice brings in a combination of fun, creativity, 3D manipulation, powerful programming techniques (recursion, lists and list processing, inheritance, and many more).
The lesson learned from this change of approach is that Alice should be adopted as students first exposure to programming so that confidence is restored and embedded in students approach to programming. Other programming environments should then come next where syntax and more detailed level of programming is to be learned.