Asee peer logo

A Theory Of Programming For Engineers

Download Paper |

Conference

2002 Annual Conference

Location

Montreal, Canada

Publication Date

June 16, 2002

Start Date

June 16, 2002

End Date

June 19, 2002

ISSN

2153-5965

Conference Session

Issues in Computer Education

Page Count

7

Page Numbers

7.123.1 - 7.123.7

DOI

10.18260/1-2--10886

Permanent URL

https://peer.asee.org/10886

Download Count

414

Request a correction

Paper Authors

author page

Juris Reinfelds

Download Paper |

Abstract
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

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