An introductory course on programming based on formal specification and program calculation

We report on our experience in teaching introductory courses on programming based on formal specification and program calculation, in two different Computer Science programmes. We favour the use of logic as a tool, the notion of program as a formal entity, as well as some issues associated with efficiency. We also review and use in practical cases some program transformation strategies, such as generalisation, tupling and modularisation. We describe our approach, its advantages and drawbacks. Furthermore, we present some preliminary results from an ongoing qualitative research which intends to characterise, describe and understand the students' experiences when taking these courses.

[1]  Edsger W. Dijkstra,et al.  Predicate Calculus and Program Semantics , 1989, Texts and Monographs in Computer Science.

[2]  유창조 Naturalistic Inquiry , 2022, The SAGE Encyclopedia of Research Design.

[3]  Colin Myers,et al.  The Dys-Functional Student , 1995, FPLE.

[4]  Edsger W. Dijkstra,et al.  A method of programming , 1988 .

[5]  Orit Hazzan,et al.  Qualitative research in computer science education , 2006, SIGCSE '06.

[6]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[7]  ShahNimish Program Construction: Calculating Implementations from Specifications by R.C. Backhouse, John Wiley & Sons, 2004 , 2004 .

[8]  E. Guba,et al.  Naturalistic inquiry: Beverly Hills, CA: Sage Publications, 1985, 416 pp., $25.00 (Cloth) , 1985 .

[9]  RR Rob Hoogerwoord The design of functional programs : a calculational approach , 1989 .

[10]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[11]  Roland Carl Backhouse Program Construction: Calculating Implementations from Specifications , 2003 .

[12]  Barbara Liskov,et al.  Program Development in Java - Abstraction, Specification, and Object-Oriented Design , 1986 .

[13]  Edward Cohen,et al.  Programming in the 1990s: An Introduction to the Calculation of Programs , 1990 .

[14]  Anne Kaldewaij,et al.  Programming - the derivation of algorithms , 1990, Prentice Hall international series in computer science.

[15]  Fred B. Schneider,et al.  A Logical Approach to Discrete Math , 1993, Texts and Monographs in Computer Science.

[16]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .