Asee peer logo

A Theory Of Programming For Engineers

Download Paper |


2002 Annual Conference


Montreal, Canada

Publication Date

June 16, 2002

Start Date

June 16, 2002

End Date

June 19, 2002



Conference Session

Issues in Computer Education

Page Count


Page Numbers

7.123.1 - 7.123.7



Permanent URL

Download Count


Request a correction

Paper Authors

author page

Juris Reinfelds

Download Paper |

NOTE: The first page of text has been automatically extracted and included below in lieu of an abstract

Main Menu

Session 3120

A Theory of Programming for Engineers

Juris Reinfelds

Klipsch School of EE &CE, New Mexico State University


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