skip to main content
10.1145/2591062.2591158acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article

Teaching students to understand large programs by understanding historical context

Published: 31 May 2014 Publication History

Abstract

Program comprehension is one of the most important challenges that new software developers face. Educators have sought to prepare students for this challenge through hands-on software development projects. These projects teach students effective software engineering principles. But, students often struggle to see the value of these principles in class projects, and therefore struggle to recognize them outside the classroom. The inevitable result is that these students have difficulty comprehending large programs after graduation. In this paper, we argue that a remedy to this problem is to teach the history of how software development principles were created. In this collaborative work with the Notre Dame Department of History, we present a course that blends a discussion of this history with a hands-on software project. We present a summary of the history covered in our course, and reflect on our teaching experience.

References

[1]
M. Abadi and L. Cardelli. A Theory of Objects. Springer-Verlag, Secaucus, NJ, USA, 1996.
[2]
B. Adelson and E. Soloway. The role of domain expenence in software design. IEEE TSE, 11(11):1351–1360, Nov. 1985.
[3]
A. Akera and W. Aspray. Using History to Teach Computer Science and Related Disciplines. CRA, 2004.
[4]
E. Allen, R. Cartwright, and C. Reis. Production programming in the classroom. In Proc. of SIGCSE, pages 89–93, 2003.
[5]
A. Begel and B. Simon. Struggles of new college graduates in their first software development job. In SIGCSE’08.
[6]
T. J. Biggerstaff. Design recovery for maintenance and reuse. Computer, 22(7):36–49, July 1989.
[7]
M. Black. Models and Metaphors: Studies in Language and Philosophy. Cornell University Press, 1962.
[8]
E. Brannock and N. Napier. Real-world testing: using foss for software development courses. In SIGITE’12, pages 87–88.
[9]
E. Brechner. Things they would not teach me of in college: what microsoft developers learn later. In OOPSLA’03.
[10]
M. Campbell-Kelly. From Airline Reservations to Sonic the Hedgehog (History of Computing Series): A History of the Software Industry. MIT Press, Cambridge, MA, USA, 2003.
[11]
M. Campbell-Kelly, W. Aspray, N. Ensmenger, and J. R. Yost. Computer: A History of the Information Machine. 2013.
[12]
S. R. Chidamber and C. F. Kemerer. A metrics suite for object oriented design. IEEE TSE, 20(6):476–493, June 1994.
[13]
A. Cockburn. Agile software development. 2002.
[14]
U. Dekel and J. D. Herbsleb. Notation and representation in collaborative object-oriented design: an observational study. SIGPLAN Not., 42(10):261–280, Oct. 2007.
[15]
E. W. Dijkstra. Letters to the editor: go to statement considered harmful. Commun. ACM, 11(3):147–148, Mar. 1968.
[16]
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design patterns: elements of reusable object-oriented software. Addison-Wesley, Boston, MA, USA, 1995.
[17]
J. D. Gobert and B. C. Buckley. Introduction to model-based teaching and learning in science education. IJSE, 2000.
[18]
T. Gyimothy, R. Ferenc, and I. Siket. Empirical validation of object-oriented metrics on open source software for fault prediction. IEEE TSE, 31(10):897–910, Oct. 2005.
[19]
A. Hunt and D. Thomas. The pragmatic programmer: from journeyman to master. Addison-Wesley, 1999.
[20]
S. H. Kan. Metrics and Models in Software Quality Engineering. Addison-Wesley, 2002.
[21]
A. J. Ko, B. A. Myers, M. J. Coblenz, and H. H. Aung. An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE TSE, 32(12):971–987, Dec. 2006.
[22]
D. M. Kurland and R. D. Pea. Children’s mental models of recursive logo programs. Edu. Comp. Res., 1(2):235, 1985.
[23]
T. D. LaToza, G. Venolia, and R. DeLine. Maintaining mental models: a study of developer work habits. In ICSE’06.
[24]
D. C. Littman, J. Pinto, S. Letovsky, and E. Soloway. Mental models and software maintenance. J. Syst. Softw., 7(4), 1987.
[25]
C. Liu. Smalltalk, Objects, and Design. iUniverse, 2000.
[26]
M. S. Mahoney. What makes the history of software hard. Annals of the History of Computing, IEEE, 30(3):8–18, 2008.
[27]
R. Marmorstein. Open source contribution as an effective software engineering class project. In ITiCSE’11.
[28]
J. E. Mathieu, T. S. Heffner, G. F. Goodwin, E. Salas, and J. A. Cannon-Bowers. The influence of shared mental models on team process and performance. Journal of App. Psy., 2000.
[29]
NCTM. Agenda for Action. NCTM, 1980.
[30]
S. Papert. Mindstorms: children, computers, and powerful ideas. Basic Books, Inc., New York, NY, USA, 1980.
[31]
C. Ponder and B. Bush. Polymorphism considered harmful. SIGSOFT Softw. Eng. Notes, 19(2):35–37, Apr. 1994.
[32]
V. Rajlich. Teaching developer skills in the first software engineering course. In Proc. of ICSE, pages 1109–1116, 2013.
[33]
T. Roehm, R. Tiarks, R. Koschke, and W. Maalej. How do professional developers comprehend software? In ICSE’12.
[34]
W. Rouse and N. Morris. On looking into the black box: prospects and limits in the search for mental models. Psychological Bulletin, 100(3):349–363, 1986.
[35]
J. Singer, T. Lethbridge, N. Vinson, and N. Anquetil. An examination of software engineering work practices. In CASCON’07.
[36]
C. Tzanakis, A. Arcavi, C. Sa, M. Isoda, C.-K. Lit, M. Niss, J. Carvalho, M. Rodriguez, and M.-K. Siu. Integrating history of mathematics in the classroom: an analytic survey. History in Mathematics Education, 6:201–240, 2002.
[37]
A. von Mayrhauser and A. Vans. Program comprehension during software maintenance and evolution. Computer, 28(8):44–55, 1995.
[38]
V. M. Williamson and M. R. Abraham. The effects of computer animation on the particulate mental models of college chemistry students. Journal of Res. in Sci. Tea., 32(5), 1995.

Index Terms

  1. Teaching students to understand large programs by understanding historical context

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ICSE Companion 2014: Companion Proceedings of the 36th International Conference on Software Engineering
    May 2014
    741 pages
    ISBN:9781450327688
    DOI:10.1145/2591062
    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 the author(s) 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

    In-Cooperation

    • TCSE: IEEE Computer Society's Tech. Council on Software Engin.

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 31 May 2014

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. history
    2. software engineering education

    Qualifiers

    • Article

    Conference

    ICSE '14
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 276 of 1,856 submissions, 15%

    Upcoming Conference

    ICSE 2025

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 198
      Total Downloads
    • Downloads (Last 12 months)1
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 20 Jan 2025

    Other Metrics

    Citations

    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