Issues with programming
We list issues that are common with programming courses.
- fiddling, no design, no sketching
After only a brief introduction on (part) of the programming language they start to program. This programming is really mocking something up in a editor and try running it. There is absolutely no design and no sketching of a solution, and there is even nothing in the introduction about this. - particular language
The focus on a particular language very often results in programs based on particular features of that language. Some of the features are ment to make the programming easier, but often they have a counterpart that is not dealed with at all. For instance, variable sized arrays. If you do not have to deal with boundaries of an array, an important part of the problem is taken away, but the downside is that it can take up a lot of memory and a lot of processing time. - using libraries as if they are language features
The choice of programming language is based on some features which really are just a bunch of functions (or something similar) from a library that could have been added to any programming language. - fun exercises
To make it all more enjoyable for the students, they get assignment that are supposed to be fun or appealing. This often takes the focus from (the quality of) the programming and from the particular goals of the assignments. - no levels of abstraction
No dealing with complexity, no refinement.
- no goal
Teaching at the wrong level (not university level, and certainly not computer science). -
At whatever level a course in programming is given, it should be made clear what this level is (before, during, and afterwards), and what more is needed to reach a higher level. - the program as a goal The program (a result of an exercise)is not the goal, but the way the program is developed.
- large exercises with ready made components, web-apps and other stuff for which they do not know the technology, often accompanied by a guide on what steps to take.
- no notion on what is really going on (computational model, memory model, machine model)
- bootstrapping skills in programming by showing code, but not by showing design
- ...