Montreal, Canada
June 16, 2002
June 16, 2002
June 19, 2002
2153-5965
7
7.123.1 - 7.123.7
10.18260/1-2--10886
https://peer.asee.org/10886
474
Main Menu
Session 3120
A Theory of Programming for Engineers
Juris Reinfelds
Klipsch School of EE &CE, New Mexico State University
Introduction
A theory is a concise set of precisely defined concepts and notation-symbols that can be used to reason about a much larger, much more complicated and less precisely defined system. A good theory captures the essential structure of the system that we want to study and reason about.
An elegant theory is simple in concept, yet wide in scope. For example, Kepler’s theory of ellipti- cal planetary orbits is more elegant than the epicycle theory of the same orbits. A theory is more useful to engineers and scientists if it is expressed in terms of concepts that are already at least partly familiar from the day-to-day work of these engineers or scientists. For example, thermody- namic theory of molecular motions is much less effective in the derivation of the period of the pendulum than Newton’s Laws of Motion.
Mathematicians have developed theories of computability that we now refer to as “theory of com- puter science”, but these theories are not directly useful to practicing programmers who want to reason about their programs, because they are based upon mathematician’s concepts such as Tur- ing machines and lambda calculus.
The First Programmer’s Theory of Programming
Some 30 years ago Edsger W. Dijkstra 1, 2 developed a simple, yet very effective theory, which programmers could use to reason about simple imperative single-thread programs. Earlier, Robert Floyd 3 had introduced the notions of preconditions, postconditions and loop invariants in mathe- matical terms and Sir Anthony Hoare FRS 4 had incorporated these concepts into a mathemati- cally oriented, precisely defined programming language. However such a mathematical theory was not directly useful to programmers and very little use of these concepts was made until Dijk- stra and Peter Naur 5 expressed the theory in programmer’s terminology.
The core of Dijkstra’s theory is very simple. First he observes that a program is a sequence of statements. Second, he observes that wherever a statement appears in a program, we can replace Proceedings of the 2002 American Society for Engineering Education Annual Conference & Exposition Copyright © 2002, American Society for Engineering Education
Main Menu
Reinfelds, J. (2002, June), A Theory Of Programming For Engineers Paper presented at 2002 Annual Conference, Montreal, Canada. 10.18260/1-2--10886
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2002 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015