Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Test-driven design for introductory OO programming

Published: 04 March 2009 Publication History

Abstract

Test-Driven Design (TDD) has been shown to increase the productivity of programming teams and improve the quality of the code they produce. However, most of the introductory curricula provide no introduction to test design, no support for defining the tests, and do not insist on a comprehensive test coverage that is the driving force of the TDD.
This paper presents a curriculum, pedagogy, and the software support for introductory object-oriented program design that uses the TDD consistently from the very beginning. The testing software does not increase the program complexity and is designed to work with the simplest programs. It has been used by hundreds of students at several colleges and is freely available on the web.
Our experiences show that besides improving the quality of code students produce, TDD combined with the novice-appropriate test libraries reinforces students' understanding of the object oriented program design.

References

[1]
D. J. Barnes and M. Koelling. Objects First with Java: A Practical Introduction Using BlueJ. Prentice Hall, 2003.
[2]
K. Beck. Test Driven Development: By Example. Addison Wesley, 2003.
[3]
R. V. Binder. Testing Object-Oriented Systems: Models, Patterns, and Tools. Addison Wesley, 2000.
[4]
S. H. Edwards. Rethinking computer science education from a test-first perspective. In Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, Anaheim, CA, pages 148--155, Oct, 2003.
[5]
S. H. Edwards. Using software testing to move students from trial-and-error to re ection-in-action. SIGCSE Bulletin, 36(1):26--30, 2004.
[6]
R. B. Findler, C. Flanagan, M. Flatt, S. Krishnamurthi, and M. Felleisen. DrScheme: A pedagogic programming environment for Scheme. In H. Glaser, P. Hartel, and H. Kuchen, editors, Programming Languages: Implementations, Logics, and Programs, volume 1292 of LNCS, pages 369--388, Southampton, UK, September 1997. Springer.
[7]
K. E. Gray and M. Flatt. ProfessorJ: a gradual introduction to Java through language levels. In Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, Anaheim, CA, pages 170--177, Oct, 2003.
[8]
D. Gries. A principled approach to teaching OO first. SIGCSE Bulletin, 40(1), 2008.
[9]
B. Hanks, T. Reichlmayr, C. Wellington, and C. Coupal. Integrating agility in the CS curriculum: Practices through Values. SIGCSE Bulletin, 40(1), 2008.
[10]
D. S. Janzen and H. Saiedian. Test-driven learning in early programming courses. SIGCSE Bulletin, 40(1), 2008.
[11]
M. Koelling. Unit testing in BlueJ. http://www.bluej.org/tutorial/testing-tutorial.pdf.
[12]
J. Langr. Evolution of test and code via test-first design. www.objectmentor.com/resources/articles/tfd.pd.
[13]
R. Pecinovský, J. Pavlíčkova, and L. Pavliček. Let's modify the objects-first approach into design-patterns-first. SIGCSE Bulletin, 40(1), 2008.
[14]
V. K. Proulx and K. E. Gray. An introduction to OO program design. SIGCSE Bulletin, 38(1), 2006.
[15]
V. K. Proulx and R. Rasala. Java IO and testing made simple. SIGCSE Bulletin, 36(1), 2004.
[16]
J. Spacco and W. Pugh. Helping students appreciate test-driven development (TDD). In Companion of the 21st annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, Portland OR, pages 907--913, Oct, 2006.
[17]
M. Thornton, S. H. Edwards, R. P. Tan, and M. Peréz-Quinones. Supporting student-written tests of GUI porgrams. SIGCSE Bulletin, 40(1), 2008.
[18]
D. West, P. Rostal, and R. P. Gabriel. Apprenticeship agility in academia. In Companion of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, San Diego, CA, pages 371--373, Oct, 2005.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGCSE Bulletin
ACM SIGCSE Bulletin  Volume 41, Issue 1
SIGCSE '09
March 2009
553 pages
ISSN:0097-8418
DOI:10.1145/1539024
Issue’s Table of Contents
  • cover image ACM Conferences
    SIGCSE '09: Proceedings of the 40th ACM technical symposium on Computer science education
    March 2009
    612 pages
    ISBN:9781605581835
    DOI:10.1145/1508865
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 04 March 2009
Published in SIGCSE Volume 41, Issue 1

Check for updates

Author Tags

  1. cs1/2
  2. design
  3. pedagogy
  4. programming education
  5. test driven design

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)13
  • Downloads (Last 6 weeks)0
Reflects downloads up to 03 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2013)Test-first design pedagogy in introductory Java programmingJournal of Computing Sciences in Colleges10.5555/2460156.246017528:6(98-99)Online publication date: 1-Jun-2013
  • (2013)Test-first design in introductory Java programming (abstract only)Proceeding of the 44th ACM technical symposium on Computer science education10.1145/2445196.2445525(765-765)Online publication date: 6-Mar-2013
  • (2012)Software testing (in Java) from the beginningJournal of Computing Sciences in Colleges10.5555/2184451.218445427:6(7-9)Online publication date: 1-Jun-2012
  • (2011)SoundlibJournal of Computing Sciences in Colleges10.5555/1968521.196855326:6(149-155)Online publication date: 1-Jun-2011
  • (2011)Introductory computingProceedings of the 5th international conference on Informatics in Schools: situation, Evolution and Perspectives10.1007/978-3-642-24722-4_16(177-188)Online publication date: 26-Oct-2011
  • (2010)From phenomenography study to planning teachingProceedings of the fifteenth annual conference on Innovation and technology in computer science education10.1145/1822090.1822096(13-17)Online publication date: 26-Jun-2010
  • (2009)Test-driven design in Java for novice programmersJournal of Computing Sciences in Colleges10.5555/1529995.153001924:6(115-116)Online publication date: 1-Jun-2009
  • (2009)Unit testing in JavaACM SIGCSE Bulletin10.1145/1595496.156299041:3(349-349)Online publication date: 6-Jul-2009
  • (2009)Unit testing in JavaProceedings of the 14th annual ACM SIGCSE conference on Innovation and technology in computer science education10.1145/1562877.1562990(349-349)Online publication date: 6-Jul-2009
  • (2022)Teaching Test-Writing As a Variably-Scaffolded Programming PatternProceedings of the 27th ACM Conference on on Innovation and Technology in Computer Science Education Vol. 110.1145/3502718.3524789(498-504)Online publication date: 7-Jul-2022
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media