On the shape of mathematical arguments
On the shape of mathematical arguments
Programming: the derivation of algorithms
Programming: the derivation of algorithms
Teaching calculation and discrimination: a more effective curriculum
Communications of the ACM
A logical approach to discrete math
A logical approach to discrete math
SIGCSE '93 Proceedings of the twenty-fourth SIGCSE technical symposium on Computer science education
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Incorporating problem-solving patterns in CS1
SIGCSE '98 Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education
An undergraduate course in formal methods: “description is our business”
SIGCSE '98 Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education
A survey of methods used to evaluate computer science teaching
ITiCSE '98 Proceedings of the 6th annual conference on the teaching of computing and the 3rd annual conference on Integrating technology into computer science education: Changing the delivery of computer science education
Embedding instructive assertions in program design
Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education
Another approach for resisting student resistance to formal methods
ACM SIGCSE Bulletin
Engaging students in specification and reasoning: "hands-on" experimentation and evaluation
ITiCSE '09 Proceedings of the 14th annual ACM SIGCSE conference on Innovation and technology in computer science education
Some optimisation problems revisited
IW-FM'99 Proceedings of the 3rd Irish conference on Formal Methods
Hi-index | 0.00 |
The integration of formal methods into the undergraduate curriculum has been slow considering the benefits they offer. One reason for this is that the limited number of relevant textbooks, although excellent, are rather terse. As a result, we have developed various techniques for teaching formal programming in which each step is fully justified by appealing to a design rule or heuristic. Another technique we have developed is 'programming by rule' using generic templates to solve problems of similar structure---rather like differentiation by rule. Our experience to date has been encouraging. We outline some of these techniques and give examples of them in practice.