skip to main content
research-article

Teaching an object-oriented CS1 -: with Python

Published:30 June 2008Publication History
Skip Abstract Section

Abstract

There is an ongoing debate regarding the role of object orientation in the introductory programming sequence. While the pendulum swings to and fro between the "objects first" and "back to basics" extremes, there is general agreement that object-oriented programming is central to modern software development and therefore integral to a computer science curriculum. Developing effective approaches to teach these principles raises challenges that have been exacerbated by the use of Java or C++ as the first instructional language.

In this paper, we recommend Python as an excellent choice for teaching an object-oriented CS1. Although often viewed as a "scripting" language, Python is a fully object-oriented language with a consistent object model and a rich set of built-in classes. Based upon our experiences, we describe aspects of the language that help support a balanced introduction to object orientation in CS1. We also discuss the downstream effects on our students' transition to Java and C++ in subsequent courses.

References

  1. E. Allen, R. Cartwright, and B. Stoler. DrJava: A lightweight pedagogic environment for Java. In Proc. 33rd SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 137--141, Covington, Kentucky, Feb. 27?Mar. 3, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. O. Astrachan, K. Bruce, , E. Koffman, M. Kölling, and S. Reges. Resolved: Objects early has failed. In Proc. 36th SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 451--452, St. Louis, Missouri, Feb. 2005. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. F. Bailie, M. Courtney, K. Murray, R. Schiaffino, and S. Tuohy. Objects first ? does it work? J. Computing Sciences in Colleges, 19(2):303--305, Dec. 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. D. Blank, L. Meedan, and D. Kumar. Python robotics: An environment for exploring robotics beyond LEGOs. In Proc. 34th SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 317--321, Reno, Nevada, Feb. 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. K. B. Bruce. Controversy on how to teach CS 1: A discusion on the SIGCSE-members mailing list. SIGCSE Bulletin, 37(2):111--116, June 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. K. B. Bruce, A. Danyluk, and T. Murtaugh. A library to support a graphics-based object-first approach to CS 1. In Proc. 32nd SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 6--10, Charlotte, North Carolina, Feb. 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. Cooper, W. Dann, and R. Pausch. Teaching objects-first in introductory computer science. In Proc. 34th SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 191--195, Reno, Nevada, Feb. 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. W. Dann, S. Cooper, and R. Pausch. Learing to Program with Alice. Prentice Hall, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. R. Decker and S. Hirshfield. The top 10 reasons why object-oriented programming can?t be taught in CS1. In Proc. 25th SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 51--55, Phoenix, Arizona, Mar. 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Z. Dodds, C. Alvarado, G. Kuenning, and R. Libeskind-Hadas. Breadth-first CS 1 for scientists. In Proc. 12th Annual Conf. on Innovation and Technology in Computer Science (ITiCSE), pages 23--27, Dundee, Scotland, June 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. A. B. Downey, J. Elkner, and C. Meyers. How to Think Like a Computer Scientist: Learning with Python. Green Tea Press, Needham, MA, 2002.Google ScholarGoogle Scholar
  12. A. E. Fleury. Programming in Java: Student-constructed rules. In Proc. 31nd SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 197--201, Austin, Texas, May 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. T. Gaddis. Starting Out with Python. Addison-Wesley, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. H. Goldwasser and D. Letscher. Object-Oriented Programming in Python. Prentice Hall, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. M. Guzdial. Introduction to Computing and Programming in Python: A Multimedia Approach. Prentice Hall, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Joint Task Force on Computing Curricula. Computing Curricula 2001: Computer Science Final Report. IEEE Computer Society and the Association for Computing Machinery, Dec. 2001. http://www.computer.org/education/cc2001/final.Google ScholarGoogle Scholar
  17. M. Kölling, B. Quig, A. Patterson, and J. Rosenberg. The BlueJ system and its pedagogy. J. Computer Science Education, 4(13):249--268, Dec. 2004.Google ScholarGoogle Scholar
  18. E. Lahtinen, K. Ala-Mutka, and H.-M. Järvinen. Early programming: A study of the difficulties of novice programmers. In Proc. Tenth Annual Conf. on Innovation and Technology in Computer Science (ITiCSE), pages 14--18, Monte da Caparica, Portugal, June 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. J. Lewis and W. Loftus. Java Software Solutions: Foundations of Program Design. Addison-Wesley, fifth edition, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. A. Radenski. "Python first": A lab-based digital introduction to computer science. In Proc. 11th Annual Conf. on Innovation and Technology in Computer Science (ITiCSE), pages 197--201, Bologna, Italy, June 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. D. Ranum, B. Miller, J. Zelle, and M. Guzdial. Successful approaches to teaching introductory computer science courses with Python. In Proc. 37th SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 396--397, Houston, Texas, Mar. 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. R. Rasala, J. Raab, and V. K. Proulx. Java Power Tools: Model software for teaching object-oriented design. In Proc. 32nd SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 297--301, Charlotte, North Carolina, Feb. 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. S. Reges. Back to basics in CS1 and CS2. In Proc. 37th SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 293--297, Houston, Texas, Mar. 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. R. J. Reid. The object oriented paradigm in CS1. In Proc. 24th SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 265--269, Indianapolis, Indiana, Feb. 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. E. Roberts, K. Bruce, R. Cutler, J. H. Cross II, S. Grissom, K. Klee, S. Rodger, F. Trees, I. Utting, and F. Yellin. The ACM Java task force: Final report. In Proc. 37th SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 131--132, Houston, Texas, Mar. 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. C. Shannon. Another breadth-first approach to CS I uisng Python. In Proc. 34th SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 248--251, Reno, Nevada, Feb. 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. M. Temte. Let?s begin introducing the object-oriented paradigm. In Proc. 22nd SIGCSE Technical Symp. on Computer Science Education (SIGCSE), pages 73--77, San Antonio, Texas, Mar. 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. I. Utting. Problems in the initial teaching of programming using Java: The case for replacing J2SE with J2ME. In Proc. 11th Annual Conf. on Innovation and Technology in Computer Science (ITiCSE), pages 193--196, Bologna, Italy, June 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. J. M. Zelle. Python Programming: An Introduction to Computer Science. Franklin, Beedle & Associates, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Teaching an object-oriented CS1 -: with Python

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGCSE Bulletin
        ACM SIGCSE Bulletin  Volume 40, Issue 3
        ITiCSE '08
        September 2008
        362 pages
        ISSN:0097-8418
        DOI:10.1145/1597849
        Issue’s Table of Contents
        • cover image ACM Conferences
          ITiCSE '08: Proceedings of the 13th annual conference on Innovation and technology in computer science education
          June 2008
          394 pages
          ISBN:9781605580784
          DOI:10.1145/1384271

        Copyright © 2008 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 30 June 2008

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!