What do beginners need to practice and retain?

Priorities for Learning to Program

©Conrad Weisert
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:

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?

Retaining versus referring

Given a choice between

  1. a concept a programmer applies (or should apply) to nearly every program he or she develops and
  2. a detailed technique or algorithm that can be looked up whenever it's needed,
which should the student commit to memory and habit at an early stage? For example, is it more useful for a beginner to understand and remember the concepts in the left column below or the details in the right column?

Concepts Details
Criteria for source-code readability the Quicksort algorithm
Module cohesion and coupling format codes for System.out.printf
Debugging strategiesprecedence 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.

1—David Flanagan's classic book Java in a Nutshell has now grown (5th edition) to over 1200 pages!
2—The differences are so wide that Java is sometimes characterized as two separate languages.

Last modified February 17, 2012

Return to IDI home page
Professional Education articles