This discussion document aims to highlight the role of programming in the Computer Science Curriculum, and to question whether learning to program is really the best introduction to Computer Science. It further questions whether programming is a simply-defined skill, as opposed to a combination of skills, some of which required advanced capabilities, not possible to teach in an introductory course.
The remainder of the document is broken down as follows.
- is programming fundamental?
Is Computer Science fundamentally about programming? Or is there more to the subject than that? Are there areas of Computer Science that can only be understood or learnt if you can program?
- what is programming?
Is programming something we can define in simple terms? Is it just coding (which Von Neumann derisively described as a clerical task)? Or is it the whole lifecycle?
- skills needed
To clarify the issues raised, lets think through the skills required for the programming task in the broader sense than merely coding.
- Blooms Taxonomy
In pre-university education, Blooms Taxonomy is widely recognized as an objective classification of cognitive skills. Blooms Taxonomy is useful to try to unpack programming skills, and understand which fit at various levels.
- early vs. late skills
To take the approach of using Blooms Taxonomy further, lets look at how to classify the levels of the hierarchy in terms of how soon or late they are typically mastered.
- where programming fits in
Programming consists of a variety of tasks at different cognitive levels. Lets try to place these tasks in Blooms Taxonomy.
- approach at University of the Witwatersrand
At the University of the Witwatersrand, Computer Science starts with less emphasis on programming than in many other programmes. Programming is introduced in terms of relatively low cognitive skills e.g., code an algorithm. However, we also start early with mathematical concepts, like proof by induction. Why? Because the mathematical concepts can be taught at an introductory level, and the more sophisticated cognitive skills we expect students to use in later years require a mathematical foundation.
- points for debate
The document ends by listing some questions about where programming should be in the curriculum, within the framework of identifying easy and hard cognitive skills, and which apply to different aspects of the programming task.
||Programming Early Considered Harmful SIGCSE 2001 23 March, Charlotte, NC