Teaching Mathematics to Software Engineers

Based on my experience in teaching formal methods to practicing and aspiring software engineers, I present some of the common stumbling blocks faced when writing formal specifications. The most conspicuous problem is learning to abstract. I address all these problems indirectly by giving a list of hints to specifiers. Thus this paper should be of interest not only to teachers of formal methods but also to their students.

[1]  James E. Tomayko,et al.  The CMU Master of Software Engineering Core Curriculum , 1995, CSEE.

[2]  Martín Abadi,et al.  A logic of authentication , 1990, TOCS.

[3]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[4]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[5]  Scott Nettles,et al.  Real-time replication garbage collection , 1993, PLDI '93.

[6]  D. Kapur TOWARDS A THEORY FOR ABSTRACT DATA TYPES , 1980 .

[7]  Nancy A. Lynch,et al.  Hierarchical correctness proofs for distributed algorithms , 1987, PODC '87.

[8]  David Garlan Preconditions for understanding , 1991, IWSSD '91.

[9]  Mahadev Satyanarayanan,et al.  Using belief to reason about cache coherence , 1994, PODC '94.

[10]  Stephen J. Garland,et al.  Larch: Languages and Tools for Formal Specification , 1993, Texts and Monographs in Computer Science.

[11]  Barbara Liskov,et al.  Abstraction and Specification in Program Development , 1986 .

[12]  G. M. Karam,et al.  Principles of Computer Systems , 1992 .

[13]  David Garlan Preconditions for understanding (formal specification) , 1991, Proceedings of the Sixth International Workshop on Software Specification and Design.

[14]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[15]  Henry G. Baker,et al.  List processing in real time on a serial computer , 1978, CACM.