Program construction and verification
Program construction and verification
Eiffel: the language
An axiomatic basis for computer programming
Communications of the ACM
Ancient Egyptian numbers: a CS-complete example
Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education
The Science of Programming
A Discipline of Programming
Computer
Making Components Contract Aware
Computer
Program Construction: Calculating Implementations from Specifications
Program Construction: Calculating Implementations from Specifications
Communications of the ACM - Why CS students need math
Mathematical reasoning in software engineering education
Communications of the ACM - Why CS students need math
Studying program correctness by constructing contracts
Proceedings of the 8th annual conference on Innovation and technology in computer science education
Learning computer science in the "comfort zone of proximal development"
Proceeding of the 44th ACM technical symposium on Computer science education
Hi-index | 0.00 |
Although computer scientists understand the importance of discrete mathematics to the foundations of their field, computer science (CS) students do not always see the relevance. Thus, it is important to find a way to show students its relevance. The concept of program correctness is generally taught as an activity independent of the programming process, hence many CS students perceive it as unnecessary, and even irrelevant. The concept of contracts, on the other hand, is generally taught as an integral part of the programming process. Most CS students have little difficulty understanding the need to establish contracts via preconditions and postconditions. In order to improve teaching program correctness concepts, we implemented ProVIDE, an enhanced integrated development environment (IDE). ProVIDE assists student programmers in contract construction. Rather than asking for both a precondition and postcondition for each of the student's methods, ProVIDE asks the student to simply supply a postcondition. ProVIDE then helps the student construct the appropriate precondition by leading him or her through an axiomatic proof of the method's correctness. Thus, the proof of of the method's correctness is a side-effect of the student's need to construct an appropriate precondition.