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

Teaching an object-oriented CS1 -: with Python

Published: 30 June 2008 Publication History

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.
[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.
[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.
[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.
[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.
[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.
[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.
[8]
W. Dann, S. Cooper, and R. Pausch. Learing to Program with Alice. Prentice Hall, 2006.
[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.
[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.
[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.
[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.
[13]
T. Gaddis. Starting Out with Python. Addison-Wesley, 2009.
[14]
M. H. Goldwasser and D. Letscher. Object-Oriented Programming in Python. Prentice Hall, 2007.
[15]
M. Guzdial. Introduction to Computing and Programming in Python: A Multimedia Approach. Prentice Hall, 2005.
[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.
[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.
[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.
[19]
J. Lewis and W. Loftus. Java Software Solutions: Foundations of Program Design. Addison-Wesley, fifth edition, 2007.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[29]
J. M. Zelle. Python Programming: An Introduction to Computer Science. Franklin, Beedle & Associates, 2003.

Cited By

View all
  • (2022)Exploring the Impact of Student Learning and Programming Pedagogy while Adjusting to COVID-19 (An HBCU Case Study)2022 International Conference on Computational Science and Computational Intelligence (CSCI)10.1109/CSCI58124.2022.00356(1983-1987)Online publication date: Dec-2022
  • (2019)A Comprehensive Comparison of GPU Implementations of Cardiac Electrophysiology ModelsFrom Reactive Systems to Cyber-Physical Systems10.1007/978-3-030-31514-6_2(9-34)Online publication date: 23-Sep-2019
  • (2018)Introduction to computingProceedings of the 22nd Pan-Hellenic Conference on Informatics10.1145/3291533.3291549(64-69)Online publication date: 29-Nov-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

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
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: 30 June 2008
Published in SIGCSE Volume 40, Issue 3

Check for updates

Author Tags

  1. cs1
  2. object orientation
  3. python

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)17
  • Downloads (Last 6 weeks)2
Reflects downloads up to 28 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2022)Exploring the Impact of Student Learning and Programming Pedagogy while Adjusting to COVID-19 (An HBCU Case Study)2022 International Conference on Computational Science and Computational Intelligence (CSCI)10.1109/CSCI58124.2022.00356(1983-1987)Online publication date: Dec-2022
  • (2019)A Comprehensive Comparison of GPU Implementations of Cardiac Electrophysiology ModelsFrom Reactive Systems to Cyber-Physical Systems10.1007/978-3-030-31514-6_2(9-34)Online publication date: 23-Sep-2019
  • (2018)Introduction to computingProceedings of the 22nd Pan-Hellenic Conference on Informatics10.1145/3291533.3291549(64-69)Online publication date: 29-Nov-2018
  • (2018)Python Versus C++Proceedings of the 49th ACM Technical Symposium on Computer Science Education10.1145/3159450.3160586(86-91)Online publication date: 21-Feb-2018
  • (2018)A Controlled Experiment on Python vs C for an Introductory Programming CourseACM Transactions on Computing Education10.1145/315289418:3(1-16)Online publication date: 9-Aug-2018
  • (2017)Business programming with REXX: Bringing programming to business students2017 8th International Conference on Information, Intelligence, Systems & Applications (IISA)10.1109/IISA.2017.8316397(1-5)Online publication date: Aug-2017
  • (2016)Some Trouble with TransparencyProceedings of the 2016 ACM Conference on International Computing Education Research10.1145/2960310.2960327(133-141)Online publication date: 25-Aug-2016
  • (2015)Learning Object-Oriented Programming in PythonProceedings of the 16th Annual Conference on Information Technology Education10.1145/2808006.2808017(59-64)Online publication date: 29-Sep-2015
  • (2015)Building WorldsProceedings of the 46th ACM Technical Symposium on Computer Science Education10.1145/2676723.2677249(144-149)Online publication date: 24-Feb-2015
  • (2021)Evaluating Face-to-Face vs.Virtual Pedagogical Coding Review Sessions in the CS classroom: An HBCU Case Study2021 Conference on Research in Equitable and Sustained Participation in Engineering, Computing, and Technology (RESPECT)10.1109/RESPECT51740.2021.9620586(1-5)Online publication date: 23-May-2021
  • Show More Cited By

View Options

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