Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1176617.1176741acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

A novice's process of object-oriented programming

Published: 22 October 2006 Publication History

Abstract

Exposing students to the process of programming is merely implied but not explicitly addressed in texts on programming which appear to deal with 'program' as a noun rather than as a verb.We present a set of principles and techniques as well as an informal but systematic process of decomposing a programming problem. Two examples are used to demonstrate the application of process and techniques.The process is a carefully down-scaled version of a full and rich software engineering process particularly suited for novices learning object-oriented programming. In using it, we hope to achieve two things: to help novice programmers learn faster and better while at the same time laying the foundation for a more thorough treatment of the aspects of software engineering.

References

[1]
Back, R.-J., On the Correctness of Refinement Steps in Program Development, PhD thesis, Department of Computer Science, University of Helsinki, 1978.
[2]
Back, R.-J., Refinement Calculus: A Systematic Introduction, Springer-Verlag, 1998.
[3]
Beck, K. Extreme Programming Explained: Embrace Change, Addison-Wesley, 2000.
[4]
Beck, K., Test-Driven Development by Example, Addison-Wesley, 2003.
[5]
Bennedsen, J. and Caspersen, M. E., "Revealing the Programming Process", Proceedings of the thirty-sixth SIGCSE Technical Symposium on Computer Science Education, St. Louis, Missouri, USA, 2005, pp. 186--190.
[6]
Cohen, E., Programming in the 1990's, Springer-Verlag, 1990.
[7]
Dahl, O.-J., Dijkstra, E. W. and Hoare, C. A: R., Structured Programming, Academic Press, 1972.
[8]
Dijkstra, E. W., "A Constructive Approach to the Problem of Program Correctness", BIT 8, 1968.
[9]
Dijkstra, E. W., "Notes on Structured Programming", EWD 249, 1969. In {7}.
[10]
Dijkstra, E. W., A Discipline of Programming, Prentice-Hall, 1976.
[11]
Dr. Java, http://drjava.org, Accessed 12 July 2006.
[12]
Fowler, M., Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999.
[13]
Gries, D., "What Should We Teach in an Introductory Programming Course", Proceedings of the fourth SIGCSE Technical Symposium on Computer Science Education, 1974, pp. 81--89.
[14]
Gries, D., The Science of Programming, Springer-Verlag, 1981.
[15]
Hunt, A. and Thomas, D., Pragmatic Unit Testing in Java with JUnit, The Pragmatic Programmers, 2003.
[16]
JUnit. www.junit.org.
[17]
Kölling, M., Unit Testing in BlueJ. www.bluej.org/tutorial/ testing-tutorial.pdf. Accessed 12 July 2006.
[18]
Kölling, M., Quig, B., Patterson, A. and Rosenberg, J., "The BlueJ System and its Pedagogy", Computer Science Education, Vol. 13, No. 4, 2003, pp. 249--268.
[19]
Martin, R. C., Agile Software Development: Principles, Patterns, and Practices, Prentice-Hall, 2003.
[20]
Morgan, C., Programming from Specifications, Prentice-Hall, 1990. http://users.comlab.ox.ac.uk/carroll.morgan/PfS/ Accessed 12 July 2006.
[21]
Wirfs-Brock, R. and McKean, A., Object Design: Roles, Responsibilities, and Collaborations, Addison-Wesley, 2003.
[22]
Wirth, N., "Program Development by Stepwise Refinement", Communications of the ACM, Vol. 14, No. 4, April 1971, pp. 221--227.
[23]
Wirth, N., Systematic Programming, Prentice-Hall, 1973.

Cited By

View all
  • (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
  • (2013)Exploring the Educational Benefits of Introducing Aspect-Oriented Programming Into a Programming CourseIEEE Transactions on Education10.1109/TE.2012.220911956:2(217-226)Online publication date: 1-May-2013
  • (2009)A visualisation tool for the programming processACM SIGCSE Bulletin10.1145/1595496.156297641:3(328-332)Online publication date: 6-Jul-2009
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '06: Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
October 2006
530 pages
ISBN:159593491X
DOI:10.1145/1176617
  • General Chair:
  • Peri Tarr,
  • Program Chair:
  • William R. Cook
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 22 October 2006

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. CS1
  2. UML
  3. design by contract
  4. incremental development
  5. objects-first
  6. pedagogy
  7. programming education
  8. programming process
  9. refactoring
  10. representation invariant
  11. stepwise refinement
  12. systematic programming
  13. testing
  14. top-down design

Qualifiers

  • Article

Conference

OOPSLA06
Sponsor:

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)0
Reflects downloads up to 12 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (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
  • (2013)Exploring the Educational Benefits of Introducing Aspect-Oriented Programming Into a Programming CourseIEEE Transactions on Education10.1109/TE.2012.220911956:2(217-226)Online publication date: 1-May-2013
  • (2009)A visualisation tool for the programming processACM SIGCSE Bulletin10.1145/1595496.156297641:3(328-332)Online publication date: 6-Jul-2009
  • (2009)A visualisation tool for the programming processProceedings of the 14th annual ACM SIGCSE conference on Innovation and technology in computer science education10.1145/1562877.1562976(328-332)Online publication date: 6-Jul-2009

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