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

skip to main content
10.1145/1121341.1121451acmconferencesArticle/Chapter ViewAbstractPublication PagessigcseConference Proceedingsconference-collections
Article

An innovative approach to teaching refactoring

Published: 03 March 2006 Publication History

Abstract

Refactoring is the process of transforming the internal structure of existing code while keeping the integrity of the code's functional requirements. Refactoring is proven to increase program maintainability, flexibility, and understandability and is recognized as a best practice in the software development community. However, with the exception of courses or lectures on extreme programming, refactoring is overlooked in the computer science curriculum. This paper helps demystify refactoring by introducing an incremental approach for teaching refactoring on the college level. Through this hands-on approach, refactoring can become an integral component in the computer science curriculum and an innovative means of reinforcing software engineering principles and good development practices. The approach and three introductory lessons are presented in this paper.

References

[1]
Roberts, D., Brant, J., and Johnson, R., A refactoring tool for Smalltalk. Theory and Practice of Object Systems Special Issue: Object-Oriented Software Evolution and Re-Engineering, 3, 4 (1997), 253--263.
[2]
Gane, C., and Sarson, T., Structured Systems Analysis: Tools and Techniques. Prentice-Hall, Englewood Cliffs, NJ, 1979.
[3]
Beck, K., Extreme Programming Explained: Embrace Change. Addison-Wesley, Reading, MA, 2000.
[4]
Fowler, M., Beck, K., Brant, J., Opdyke, W., and Roberts, D., Refactoring: Improving the Design of Existing Code. Addison-Wesley, Reading, MA, 1999.
[5]
Goldman, A., Kon, F., Silva, P.J.S., and Yoder, J., Being extreme in the classroom: experiences teaching XP. Journal of the Brazilian Computer Society, 10, 2 (2004) 1--17.
[6]
Keef, K. and Martin, D., Using extreme programming in a capstone course. In Proceedings of Sixth Conference on Australian Computing Education (Dunedin, New Zealand). 30, 2004, 151--160.
[7]
Kivi, J, Haydon, D., Hayes, J., Schneider, R., and Succi, G., Extreme programming: a university team design experience. In Proceedings of Canadian Conference on Electrical and Computer Engineering, 2 (March 2000) 816--820.
[8]
Muller, M. M. and Tichey, W.F., Case study: extreme programming in a university environment. 23rd International Conference on Software Engineering, Toronto, Canada, IEEE Computer Society, 2001.
[9]
Shukla, A. and Williams, L.D., Adapting extreme programming for a core software engineering course. Conference on Software Engineering Education and Training, Covington, KY, 2002, 184--190.
[10]
Smith, S. and Stoecklin, S., What we can learn from extreme programming. Journal of Computing Sciences in Colleges, 17, 2 (December 2001), 144--151.
[11]
Baecker, R.M. and Marcus, A., Human Factors and Typography for More Readable Programs. Addison-Wesley, Reading, MA, 1990.
[12]
Deimel, L.E., Kunz, L., Makoid, L., and Perry, J., The effects of comment placement and reading times on program reading comprehension. In Proceedings 19th Annual Conference on Information Sciences and Systems. Baltimore: The Johns Hopkins University Department of Electrical Engineering and Computer Science, 1985, 595--601.
[13]
Nurvitadhi, E., Leung, W.W., and Cook, C., Do class comments aid Java program understanding? 33rd ASEE/IEEE Frontiers in Education Conference, Boulder, Colorado, 2003, 1--5.
[14]
Elshoff, J.L., and Marcotty, M., Improving computer program readability to aid modification. Communications of the ACM, 25, 8 (August 1982), 512--521.
[15]
Gellenbeck, E.M. and Cook, C.R., Does signaling help professional programmers read and understand computer programs?, Empirical Studies of Programmers - IV, Ablex Inc., Norwood, NJ, 1991, 82--98.
[16]
IEEE Standard Glossary of Software Engineering Terminology (IEEE Std 610.12-1990), IEEE Computer Society, December 10, 1990.
[17]
Weisfeld, M., The Object-oriented Thought Process. Sams Publishing, Indianapolis, IN, 2003.
[18]
www.refactoring.com

Cited By

View all
  • (2024)Auglets: Intelligent Tutors for Learning Good Coding Practices by Solving Refactoring ProblemsProceedings of the 2024 on ACM Virtual Global Computing Education Conference V. 110.1145/3649165.3690119(95-101)Online publication date: 5-Dec-2024
  • (2024)Automating Source Code Refactoring in the ClassroomProceedings of the 55th ACM Technical Symposium on Computer Science Education V. 110.1145/3626252.3630787(60-66)Online publication date: 7-Mar-2024
  • (2021)Refactoring‐based learning for fine‐grained lock in concurrent programming courseComputer Applications in Engineering Education10.1002/cae.2246930:2(505-516)Online publication date: 18-Oct-2021
  • Show More Cited By

Index Terms

  1. An innovative approach to teaching refactoring

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    SIGCSE '06: Proceedings of the 37th SIGCSE technical symposium on Computer science education
    March 2006
    612 pages
    ISBN:1595932593
    DOI:10.1145/1121341
    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: 03 March 2006

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. computer science curriculum
    2. extreme programming
    3. object-oriented design
    4. refactoring
    5. software engineering

    Qualifiers

    • Article

    Conference

    SIGCSE06
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 1,595 of 4,542 submissions, 35%

    Upcoming Conference

    SIGCSE Virtual 2024
    1st ACM Virtual Global Computing Education Conference
    December 5 - 8, 2024
    Virtual Event , NC , USA

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)20
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 30 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Auglets: Intelligent Tutors for Learning Good Coding Practices by Solving Refactoring ProblemsProceedings of the 2024 on ACM Virtual Global Computing Education Conference V. 110.1145/3649165.3690119(95-101)Online publication date: 5-Dec-2024
    • (2024)Automating Source Code Refactoring in the ClassroomProceedings of the 55th ACM Technical Symposium on Computer Science Education V. 110.1145/3626252.3630787(60-66)Online publication date: 7-Mar-2024
    • (2021)Refactoring‐based learning for fine‐grained lock in concurrent programming courseComputer Applications in Engineering Education10.1002/cae.2246930:2(505-516)Online publication date: 18-Oct-2021
    • (2020)RefacTutor: An Interactive Tutoring System for Software RefactoringComputer Supported Education10.1007/978-3-030-58459-7_12(236-261)Online publication date: 10-Nov-2020
    • (2019)How Teachers Would Help Students to Improve Their CodeProceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education10.1145/3304221.3319780(119-125)Online publication date: 2-Jul-2019
    • (2016)Analyzing students' software redesign strategiesProceedings of the 16th Koli Calling International Conference on Computing Education Research10.1145/2999541.2999559(110-119)Online publication date: 24-Nov-2016
    • (2007)Teaching students to build well formed object-oriented methods through refactoringACM SIGCSE Bulletin10.1145/1227504.122736439:1(145-149)Online publication date: 7-Mar-2007
    • (2007)Teaching students to build well formed object-oriented methods through refactoringProceedings of the 38th SIGCSE technical symposium on Computer science education10.1145/1227310.1227364(145-149)Online publication date: 7-Mar-2007
    • (2021)Refactoring‐based learning for fine‐grained lock in concurrent programming courseComputer Applications in Engineering Education10.1002/cae.2246930:2(505-516)Online publication date: 18-Oct-2021
    • (2015)Reflections on Teaching RefactoringProceedings of the 2015 ACM Conference on Innovation and Technology in Computer Science Education10.1145/2729094.2742617(225-230)Online publication date: 22-Jun-2015
    • 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