Teaching principles of computer programming

  • Authors:
  • H. D. Mills;V. R. Basili;J. D. Gannon;R. G. Hamlet

  • Affiliations:
  • IBM Corporation and University of Maryland;University of Maryland;University of Maryland;Oregon Graduate Center

  • Venue:
  • CSC '87 Proceedings of the 15th annual conference on Computer Science
  • Year:
  • 1987

Quantified Score

Hi-index 0.00

Visualization

Abstract

We describe a first course of two semesters in computer science that is based on mathematical principles of computer program analysis and design, rather than on apprenticeship programming. The course is modeled on elementary mathematics courses in both content and pedagogy. The content is based on a calculus of programs in which the functional semantics of programs and program parts are derived from the character valued functions that define the texts of programs. The first semester uses a minimal, but practical, subset of Pascal that has only character and character file data types, called CF Pascal, and is treated as a ruler and compass language for pedagogical advantage. This simple language, with no numbers, no arrays, no gotos, permits a complete and exact treatment of its operational semantics before the functional semantics is developed. The second semester begins with a treatment of data abstractions in order to provide an intellectual basis for the introduction of additional Pascal data types such as Boolean and integer, and the remainder of Pascal. Arrays, pointers, and gotos are introduced late in the course as advanced topics because of the complex mathematical treatments they require for program part verification and correct program design.