{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:42:13Z","timestamp":1750308133727,"version":"3.41.0"},"reference-count":18,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2005,3,1]],"date-time":"2005-03-01T00:00:00Z","timestamp":1109635200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["J. Educ. Resour. Comput."],"published-print":{"date-parts":[[2005,3]]},"abstract":"<jats:p>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.<\/jats:p>","DOI":"10.1145\/1101670.1101671","type":"journal-article","created":{"date-parts":[[2006,2,6]],"date-time":"2006-02-06T15:07:09Z","timestamp":1139238429000},"page":"1","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":5,"title":["Teaching quality object-oriented programming"],"prefix":"10.1145","volume":"5","author":[{"given":"Yishai A.","family":"Feldman","sequence":"first","affiliation":[{"name":"The Interdisciplinary Center, Herzliya, Israel"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2005,3]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Abelson H. and Sussman G. J. 1996. Structure and Interpretation of Computer Programs 2nd ed. MIT Press Cambridge MA.   Abelson H. and Sussman G. J. 1996. Structure and Interpretation of Computer Programs 2nd ed. MIT Press Cambridge MA."},{"key":"e_1_2_1_2_1","unstructured":"Aho A. V. Hopcroft J. E. and Ullman J. D. 1976. The Design and Analysis of Computer Algorithms. Addison-Wesley Reading MA.   Aho A. V. Hopcroft J. E. and Ullman J. D. 1976. The Design and Analysis of Computer Algorithms. Addison-Wesley Reading MA."},{"key":"e_1_2_1_3_1","unstructured":"Brown F. M. Ed. 1987. The Frame Problem in Artificial Intelligence. Morgan Kaufmann.   Brown F. M. Ed. 1987. The Frame Problem in Artificial Intelligence. Morgan Kaufmann."},{"key":"e_1_2_1_4_1","unstructured":"Cormen T. H. Leiserson C. E. Rivest R. L. and Stein C. 2001. Introduction to Algorithms 2nd ed. MIT Press Cambridge MA.   Cormen T. H. Leiserson C. E. Rivest R. L. and Stein C. 2001. Introduction to Algorithms 2nd ed. MIT Press Cambridge MA."},{"key":"e_1_2_1_5_1","volume-title":"Research Report 159, Compaq Systems Research Center. See http:\/\/research.compaq.com\/SRC\/esc\/papers.html.","author":"Detlefs D. L.","year":"1998","unstructured":"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. 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."},{"key":"e_1_2_1_6_1","unstructured":"Feldman Y. A. 1997--2004. Object-oriented software construction course web site. http:\/\/www1.idc.ac.il\/oosc.  Feldman Y. A. 1997--2004. Object-oriented software construction course web site. http:\/\/www1.idc.ac.il\/oosc."},{"key":"e_1_2_1_7_1","volume-title":"Refactoring: Improving the Design of Existing Code","author":"Fowler M.","year":"2000","unstructured":"Fowler , M. 2000 . Refactoring: Improving the Design of Existing Code . Addison-Wesley , Reading, MA . Fowler, M. 2000. Refactoring: Improving the Design of Existing Code. Addison-Wesley, Reading, MA."},{"key":"e_1_2_1_8_1","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma E.","year":"1994","unstructured":"Gamma , E. , Helm, R. , Johnson , R. , and Vlissides , J . 1994 . Design Patterns: Elements of Reusable Object-Oriented Software . Addison-Wesley , Reading, MA . Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA."},{"key":"e_1_2_1_9_1","unstructured":"Hellesoy A. 2001--2004. iDoclet. http:\/\/icplus.sourceforge.net\/iDoclet.html.  Hellesoy A. 2001--2004. iDoclet. http:\/\/icplus.sourceforge.net\/iDoclet.html."},{"volume-title":"Proc. Technology of Object-Oriented Languages and Systems","author":"Kramer R.","key":"e_1_2_1_10_1","unstructured":"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 . 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."},{"key":"e_1_2_1_11_1","unstructured":"Laddad R. 2003. Aspect in Action: Practical Aspect-Oriented Programming. Manning.   Laddad R. 2003. Aspect in Action: Practical Aspect-Oriented Programming. Manning."},{"key":"e_1_2_1_12_1","unstructured":"Man Machine Systems. 2002. Design by contract tool for Java---JMSAssert. http:\/\/www.mmsindia.com\/JMSAssert.html.  Man Machine Systems. 2002. Design by contract tool for Java---JMSAssert. http:\/\/www.mmsindia.com\/JMSAssert.html."},{"key":"e_1_2_1_13_1","volume-title":"Object-Oriented Software Construction","author":"Meyer B.","unstructured":"Meyer , B. 1997. Object-Oriented Software Construction , 2 nd ed. Prentice Hall , Englewood Cliffs, NJ . Meyer, B. 1997. Object-Oriented Software Construction, 2nd ed. Prentice Hall, Englewood Cliffs, NJ.","edition":"2"},{"volume-title":"Design by Contract, by Example","author":"Mitchell R.","key":"e_1_2_1_14_1","unstructured":"Mitchell , R. and McKim, J. 2002. Design by Contract, by Example . Addison-Wesley , Reading, MA . Mitchell, R. and McKim, J. 2002. Design by Contract, by Example. Addison-Wesley, Reading, MA."},{"key":"e_1_2_1_15_1","unstructured":"Neumann P. G. 1995. Computer-Related Risks. ACM Press New York.   Neumann P. G. 1995. Computer-Related Risks. ACM Press New York."},{"volume-title":"Purely Functional Data Structures","author":"Okasaki C.","key":"e_1_2_1_16_1","unstructured":"Okasaki , C. 1998. Purely Functional Data Structures . Cambridge Univ. Press , Cambridge, MA . Okasaki, C. 1998. Purely Functional Data Structures. Cambridge Univ. Press, Cambridge, MA."},{"key":"e_1_2_1_17_1","unstructured":"Parasoft Corp. 2002--2004. Jcontract home page. http:\/\/www.parasoft.com\/jsp\/products\/home.jsp?product=Jcontract.  Parasoft Corp. 2002--2004. Jcontract home page. http:\/\/www.parasoft.com\/jsp\/products\/home.jsp?product=Jcontract."},{"key":"e_1_2_1_18_1","volume-title":"Artificial Intelligence","author":"Winston P. H.","unstructured":"Winston , P. H. 1992. Artificial Intelligence , 3 rd ed. Addison-Wesley , Reading, MA . Winston, P. H. 1992. Artificial Intelligence, 3rd ed. Addison-Wesley, Reading, MA.","edition":"3"}],"container-title":["Journal on Educational Resources in Computing"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1101670.1101671","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1101670.1101671","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T16:08:31Z","timestamp":1750262911000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1101670.1101671"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2005,3]]},"references-count":18,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2005,3]]}},"alternative-id":["10.1145\/1101670.1101671"],"URL":"https:\/\/doi.org\/10.1145\/1101670.1101671","relation":{},"ISSN":["1531-4278","1531-4278"],"issn-type":[{"type":"print","value":"1531-4278"},{"type":"electronic","value":"1531-4278"}],"subject":[],"published":{"date-parts":[[2005,3]]},"assertion":[{"value":"2005-03-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}