Inculcating invariants in introductory courses

Download: PDF.

“Inculcating invariants in introductory courses” by David Evans and Michael Peck. In ICSE 2006, Proceedings of the 28th International Conference on Software Engineering, (Shanghai, China), May 2006, pp. 673-678.
A previous version appeared as “Simulating critical software engineering” by David Evans and Michael Peck. University of Virginia Computer Science Department technical report CS-2004-03, (Charlottesville, VA, USA), Feb. 2004.

Abstract

One goal of introductory software engineering courses is to motivate and instill good software engineering habits. Unfortunately, practical constraints on typical courses often lead to student experiences that are antithetical to that goal: instead of working in large teams and dealing with changing requirements and maintaining programs over many years, courses generally involve students working alone or in small teams with short projects that end the first time the program works correctly on some selected input. Small projects tend to reinforce poor software engineering practices. Since the programs are small enough to manage cognitively in ad hoc ways, effort spent more precisely documenting assumptions seems wasteful. It is infeasible to carry out full industrial software development within the context of a typical university course. However, it is possible to simulate some aspects of safety critical software engineering in an introductory software engineering course. This paper describes an approach that focuses on thinking about and precisely documenting invariants, and checking invariants using lightweight analysis tools. We describe how assignments were designed to emphasize the importance of invariants and to incorporate program analysis tools with typical software engineering material and report on results from an experiment measuring students understanding of program invariants.

Download: PDF.

BibTeX entry:

@inproceedings{EvansP2006,
   author = {David Evans and Michael Peck},
   title = {Inculcating invariants in introductory courses},
   booktitle = {ICSE 2006, Proceedings of the 28th International
	Conference on Software Engineering},
   pages = {673--678},
   address = {Shanghai, China},
   month = may,
   year = {2006}
}

Back to Publications whose methodology uses invariant detection.