February 1, 2012
NOTE: This article may be reproduced and circulated freely, as long as the copyright credit is included.
Fifteen years ago I observed that beginning students of programming should start with the procedural paradigm, because sequential procedural programming:
Although the examples I cited in 1997 may be obsolete, the principle is unchanged and I stand by that advice today.
Many beginning-level courses, however, try to build upon the object paradigm from the first day! Students are shown how to organize a program into classes and pseudo-classes. They may get their programs to work, but they often emerge without a firm grasp of what the object paradigm is or what objects are for. It may not occur to them that it's possible to develop a high-quality program that doesn't use classes at all.
If the students' first language is Java, the object paradigm is further complicated by:
mainfunction and dozens of the most commonly used standard library routines,
Although Java began as a small and simple programming language it has evolved into one of the largest and most complicated languages in the history of programming.1 Is that a suitable vehicle for introducing a beginner to programming?
Given a choice between
|Criteria for source-code readability||the Quicksort algorithm|
|Module cohesion and coupling||format codes for |
|Debugging strategies||precedence among boolean, relational, and arithmetic operators|
Of course all of the above are important for a Computer Science student to understand, but only the concepts are needed for nearly every program one writes. A good programmer ought to know about the other items and know where to find the details, but needn't be fluent in their use, especially in the early stages of learning. It follows that a beginning or intermediate programming course must emphasize the concepts and then test the students' ability to apply those concepts.
Last modified February 17, 2012
Return to IDI home page
Professional Education articles