skip to main content
article

Teaching quality object-oriented programming

Published: 01 March 2005 Publication History

Abstract

Computer science students need to learn how to write high-quality software. An important methodology for achieving quality is design-by-contract, in which code is developed together with its specification, which is given as class invariants and method pre- and postconditions. This paper describes practical experience in teaching design-by-contract and other principles of object-oriented programming and design by a comprehensive set of programming exercises. These are implemented in Java, augmented with a design-by-contract tool. The conceptual gap between the theoretical principles taught in the course and the capabilities of this programming environment causes pedagogical problems; these problems and some solutions are discussed in this paper.

References

[1]
Abelson, H. and Sussman, G. J. 1996. Structure and Interpretation of Computer Programs, 2nd ed. MIT Press, Cambridge, MA.
[2]
Aho, A. V., Hopcroft, J. E., and Ullman, J. D. 1976. The Design and Analysis of Computer Algorithms. Addison-Wesley, Reading, MA.
[3]
Brown, F. M., Ed. 1987. The Frame Problem in Artificial Intelligence. Morgan Kaufmann.
[4]
Cormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. 2001. Introduction to Algorithms, 2nd ed. MIT Press, Cambridge, MA.
[5]
Detlefs, D. L., Leino, K. R. M., Nelson, G., and Saxe, J. B. 1998. Extended static checking. Research Report 159, Compaq Systems Research Center. See http://research.compaq.com/SRC/esc/papers.html.
[6]
Feldman, Y. A. 1997--2004. Object-oriented software construction course web site. http://www1.idc.ac.il/oosc.
[7]
Fowler, M. 2000. Refactoring: Improving the Design of Existing Code. Addison-Wesley, Reading, MA.
[8]
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA.
[9]
Hellesoy, A. 2001--2004. iDoclet. http://icplus.sourceforge.net/iDoclet.html.
[10]
Kramer, R. 1998. iContract---the Java design by contract tool. In Proc. Technology of Object-Oriented Languages and Systems, TOOLS-USA. IEEE Press, New York.
[11]
Laddad, R. 2003. Aspect in Action: Practical Aspect-Oriented Programming. Manning.
[12]
Man Machine Systems. 2002. Design by contract tool for Java---JMSAssert. http://www.mmsindia.com/JMSAssert.html.
[13]
Meyer, B. 1997. Object-Oriented Software Construction, 2nd ed. Prentice Hall, Englewood Cliffs, NJ.
[14]
Mitchell, R. and McKim, J. 2002. Design by Contract, by Example. Addison-Wesley, Reading, MA.
[15]
Neumann, P. G. 1995. Computer-Related Risks. ACM Press, New York.
[16]
Okasaki, C. 1998. Purely Functional Data Structures. Cambridge Univ. Press, Cambridge, MA.
[17]
Parasoft Corp. 2002--2004. Jcontract home page. http://www.parasoft.com/jsp/products/home.jsp?product=Jcontract.
[18]
Winston, P. H. 1992. Artificial Intelligence, 3rd ed. Addison-Wesley, Reading, MA.

Cited By

View all
  • (2021)DrPython–WEB: A Tool to Help Teaching Well-Written Python ProgramsSoftware Engineering and Formal Methods. SEFM 2021 Collocated Workshops10.1007/978-3-031-12429-7_20(277-286)Online publication date: 6-Dec-2021
  • (2020)Improving students’ programming quality with the continuous inspection process: a social coding perspectiveFrontiers of Computer Science: Selected Publications from Chinese Universities10.1007/s11704-019-9023-214:5Online publication date: 1-Oct-2020
  • (2017)Integrating Components, Contracts, and Reasoning in CS Curricula with RESOLVE: Experiences at Multiple Institutions2017 IEEE 30th Conference on Software Engineering Education and Training (CSEE&T)10.1109/CSEET.2017.40(202-211)Online publication date: Nov-2017
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Journal on Educational Resources in Computing
Journal on Educational Resources in Computing  Volume 5, Issue 1
March 2005
50 pages
ISSN:1531-4278
EISSN:1531-4278
DOI:10.1145/1101670
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 March 2005
Published in JERIC Volume 5, Issue 1

Permissions

Request permissions for this article.

Check for updates

Author Tag

  1. Software quality

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)0
Reflects downloads up to 03 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2021)DrPython–WEB: A Tool to Help Teaching Well-Written Python ProgramsSoftware Engineering and Formal Methods. SEFM 2021 Collocated Workshops10.1007/978-3-031-12429-7_20(277-286)Online publication date: 6-Dec-2021
  • (2020)Improving students’ programming quality with the continuous inspection process: a social coding perspectiveFrontiers of Computer Science: Selected Publications from Chinese Universities10.1007/s11704-019-9023-214:5Online publication date: 1-Oct-2020
  • (2017)Integrating Components, Contracts, and Reasoning in CS Curricula with RESOLVE: Experiences at Multiple Institutions2017 IEEE 30th Conference on Software Engineering Education and Training (CSEE&T)10.1109/CSEET.2017.40(202-211)Online publication date: Nov-2017
  • (2007)Learning computer programming and role of errors in designACM SIGCSE Bulletin10.1145/1272848.127289839:2(142-145)Online publication date: 1-Jun-2007
  • (2006)JoseProceedings of the Fourth IEEE International Conference on Software Engineering and Formal Methods10.1109/SEFM.2006.26(80-89)Online publication date: 11-Sep-2006

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media