ACM Home Page
Please provide us with feedback. Feedback
Inculcating invariants in introductory courses
Full text PdfPdf (124 KB)
Source International Conference on Software Engineering archive
Proceedings of the 28th international conference on Software engineering table of contents
Shanghai, China
SESSION: Education papers: software engineering education fundamentals table of contents
Pages: 673 - 678  
Year of Publication: 2006
ISBN:1-59593-375-1
Authors
David Evans  University of Virginia
Michael Peck  Johns Hopkins University
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 5,   Downloads (12 Months): 34,   Citation Count: 1
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1134285.1134388
What is a DOI?

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Mike Barnett, K. Rustan M. Leino, and Wolfram Schulte. The Spec# Programming System: An Overview. Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, LNCS Volume 3362, Spring 2004.
 
2
 
3
Object Technology International. Eclipse Platform Technical Overview. Feb 2003. http://www.eclipse.org/whitepapers/eclipse-overview.pdf
 
4
 
5
6
7
 
8
 
9
Google Web APIs. http://www.google.com/apis/
 
10
 
11
 
12
 
13
Jeremy W. Nimmer and Michael D. Ernst. Static verification of dynamically detected program invariants: Integrating Daikon and ESC/Java. First Workshop on Runtime Verification, July, 2001.
14
 
15
Mark Allen Weiss. Data Structures and Algorithm Analysis in Java. Addison Wesley Longman, 1999.
 
16
17
 
18
19


Collaborative Colleagues:
David Evans: colleague listing is not available.
Michael Peck: colleagues