[<-] [ ^ ] [->] Previous: The Role of Literate Computing in Undergraduate Curricula
TR-CS-94-01 Up: The Role of Literate Computing in Undergraduate Curricula
TR-CS-94-01 Next: Literate Programming and WEB
Introduction
Students in the early stages of a computer science degree endure a steady
bombardment of new practical tools in addition to the theoretical
foundations of the subject. These tools include new languages and system
utilities as well as text formatting and simple computer interfacing
skills. Their programming style is still in its formative stages and the
herculean task of getting working programs for their assignments overshadows any
attempts at careful design and documentation - regardless of the
pleadings of course lecturers. Nevertheless communication skills are highly
regarded by employers, and we need to maintain and improve our
standards in the area of design description and documentation.
Given, however, that the volume of material to be taught in second year
leaves
little latitude for specific training in
design, some intermediate goal is desirable. We propose that such an
intermediate goal might be program literacy. Knuth[1] proposed the term literate programming to
advocate a style for making a large program a readable document. Emphasis
on readability accords with the well-established
result that a large fraction of time spent on major software projects is in
the maintenance phases where the programmers may well not have
participated in the original design and coding. It also forces the
programmer to communicate what he or she is doing. A common failure of
students in the early years is to attempt to write code before having
thought through what they really want to do. Having to explain what they
are doing first is an excellent remedy!
The
essential features of Knuth's proposal are:
-
Intelligibility of the code
-
Incorporation of the design details with the source code.
-
Organisation of the program text in an order which makes sense to a reader.
Knuth designed the WEB programming system to meet both of these objectives,
and WEB is used herein. However, it is important to note, that the
concepts transcend this particular implementation. With the much more
sophisticated display facilities now available, it seems rather likely that
some form of electronic hypertext will displace page-based systems such as WEB.