Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3576882.3617918acmconferencesArticle/Chapter ViewAbstractPublication PagescompedConference Proceedingsconference-collections
research-article

Teaching Programmers to Think of Program Dynamics

Published: 05 December 2023 Publication History

Abstract

Many students in their first year in the University have some idea of programming based on courses in high school and grade school. Such knowledge, however, is highly unsystematic. Their behavior in practice is to choose variables, loops and other constructs by some form of trial and error, and use a debugger to beat the code into shape.
Teaching systematic programming has followed an arc starting from formal approaches in the early days to current ideas like recipes for systematic programming and tool based approaches that show language statements and their dynamic behavior together to build intuition relating statics and dynamics.
In this position paper, we present a different approach that asks students to program by first planning a trace, and then choosing statements that generate that trace. This approach allows us to explain the choices of variables, ordering of program statements, and loop invariants in a natural way. Our experience is that students think more systematically, and have a better understanding of causal aspects of program statements.

References

[1]
Ralph-Johan Back. 2009. Invariant based programming: basic approach and teaching experiences. Formal aspects of computing 21, 3 (2009), 227--244.
[2]
Engineer Bainomugisha, Andoni Lombide Carreton, Tom van Cutsem, Stijn Mostinckx, and Wolfgang de Meuter. 2013. A survey on reactive programming. ACM Computing Surveys (CSUR) 45, 4 (2013), 1--34.
[3]
Frederick P Brooks Jr. 1995. The mythical man-month (anniversary ed.). Addison-Wesley.
[4]
Venkatesh Choppella, Kasturi Viswanath, and Mrityunjay Kumar. 2021. Algodynamics: Algorithms as systems. In 2021 IEEE Frontiers in Education Conference (FIE). IEEE, 1--9.
[5]
Keith D. Cooper and Linda Torczon. 2011. Engineering a compiler. Elsevier.
[6]
Kathryn Cunningham, Sarah Blanchard, Barbara Ericson, and Mark Guzdial. 2017. Using tracing and sketching to solve programming problems: replicating and extending an analysis of what students draw. In Proceedings of the 2017 ACM Conference on international computing education research. 164--172.
[7]
Lionel E Deimel Jr. 1985. The uses of program reading. ACM SIGCSE Bulletin 17, 2 (1985), 5--14.
[8]
Françoise Détienne and Elliot Soloway. 1990. An empirically-derived control structure for the process of program understanding. International Journal of Man-Machine Studies 33, 3 (1990), 323--342.
[9]
Edsger W Dijkstra. 1965. Solution of a problem in concurrent programming control. Commun. ACM 8, 9 (1965), 569.
[10]
Edsger W. Dijkstra. 1968. Letters to the editor: go to statement considered harmful. Commun. ACM 11, 3 (1968), 147--148.
[11]
Desmond F D'Souza and Alan Cameron Wills. 1998. Objects, Components, and Frameworks with UML: the Catalysis approach. Addison-Wesley.
[12]
Benedict Du Boulay. 1986. Some difficulties of learning to program. Journal of Educational Computing Research 2, 1 (1986), 57--73.
[13]
David Gries. 2012. The science of programming. Springer Science & Business Media.
[14]
David Gries and Paul Gries. 2005. Multimedia introduction to programming using Java. Springer Science & Business Media.
[15]
Eric C.R. Hehner. 2012. A practical theory of programming. Springer-Verlag. https://www.cs.utoronto.ca/∼hehner/aPToP/
[16]
Matthew Hertz and Maria Jump. 2013. Trace-based teaching in early programming courses. In Proceeding of the 44th ACM technical symposium on Computer science education. 561--566.
[17]
C.A.R. Hoare. 2003. Assertions: A personal perspective. IEEE Annals of the History of Computing 25, 2 (2003), 14--25.
[18]
Markus Hohenwarter and Zsolt Lavicza. 2011. The strength of the community: How GeoGebra can inspire technology integration in mathematics. In Model-Centered Learning. Brill, 7--12.
[19]
Danial Hooshyar, Rodina Binti Ahmad, Mohd Hairul Nizam Md Nasir, Shahaboddin Shamshirband, and Shi-Jinn Horng. 2015. Flowchart-based programming environments for improving comprehension and problem-solving skill of novice programmers: a survey. International Journal of Advanced Intelligence Paradigms 7, 1 (2015), 24--56.
[20]
Takayuki Kimura. 1979. Reading before composition. ACM SIGCSE Bulletin 11, 1 (1979), 162--166.
[21]
Frederick S Klotz. 1987. Turtle graphics and mathematical induction. The Mathematics Teacher 80, 8 (1987), 636--654.
[22]
Marja Kuittinen and Jorma Sajaniemi. 2004. Teaching roles of variables in elementary programming courses. In Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education. 57--61.
[23]
Amruth N Kumar. 2015. Solving code-tracing problems and its effect on code-writing skills pertaining to program semantics. In Proceedings of the 2015 ACM Conference on Innovation and Technology in Computer Science Education. 314--319.
[24]
Leslie Lamport. 1994. The temporal logic of actions. ACM Transactions on Programming Languages and Systems (TOPLAS) 16, 3 (1994), 872--923.
[25]
Craig Larman. 2005. Applying UML and Patterns 3 ed.). Prentice Hall.
[26]
Raymond Lister, Elizabeth S Adams, Sue Fitzgerald, William Fone, John Hamer, Morten Lindholm, Robert McCartney, Jan Erik Moström, Kate Sanders, Otto Seppälä, et al. 2004. A multi-national study of reading and tracing skills in novice programmers. ACM SIGCSE Bulletin, Vol. 36, 4 (2004), 119--150.
[27]
Raymond Lister, Colin Fidge, and Donna Teague. 2009. Further evidence of a relationship between explaining, tracing and writing skills in introductory programming. ACM SIGCSE Bulletin 41, 3 (2009), 161--165.
[28]
Mike Lopez, Jacqueline Whalley, Phil Robbins, and Raymond Lister. 2008. Relationships between reading, tracing and writing skills in introductory programming. In Proceedings of the fourth international workshop on computing education research. 101--112.
[29]
Andrew Luxton-Reilly, Ibrahim Albluwi, Brett A Becker, Michail Giannakos, Amruth N Kumar, Linda Ott, James Paterson, Michael James Scott, Judy Sheard, and Claudia Szabo. 2018. Introductory programming: a systematic literature review. In Proceedings Companion of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education. 55--106.
[30]
Steve McConnell. 2004. Code complete. Pearson Education.
[31]
Michael McCracken, Vicki Almstrum, Danny Diaz, Mark Guzdial, Dianne Hagan, Yifat Ben-David Kolikant, Cary Laxer, Lynda Thomas, Ian Utting, and Tadeusz Wilusz. 2001. A multi-national, multi-institutional study of assessment of programming skills of first-year CS students. In Working group reports from ITiCSE on Innovation and technology in computer science education. 125--180.
[32]
Bertrand Meyer. 1988. Eiffel: A language and environment for software engineering. Journal of Systems and Software 8, 3 (1988), 199--246.
[33]
Alexia Micallef and Philip M Newton. 2022. The Use of Concrete Examples Enhances the Learning of Abstract Concepts; A Replication Study. Teaching of Psychology (2022), 00986283211058069.
[34]
Greg L Nelson, Benjamin Xie, and Amy J Ko. 2017. Comprehension first: evaluating a novel pedagogy and tutoring system for program tracing in CS1. In Proceedings of the 2017 ACM conference on international computing education research. 2--11.
[35]
Dale Parsons and Patricia Haden. 2006. Parson's programming puzzles: a fun and effective learning tool for first programming courses. In Proceedings of the 8th Australasian Conference on Computing Education-Volume 52. 157--163.
[36]
David N Perkins, Chris Hancock, Renee Hobbs, Fay Martin, and Rebecca Simmons. 1986. Conditions of learning in novice programmers. Journal of Educational Computing Research 2, 1 (1986), 37--55.
[37]
Katherine A Rawson, Ruthann C Thomas, and Larry L Jacoby. 2015. The power of examples: Illustrative examples enhance conceptual learning of declarative concepts. Educational Psychology Review 27, 3 (2015), 483--504.
[38]
Stuart Reges and Marty Stepp. 2014. Building Java Programs. Pearson.
[39]
Anthony Robins. 2010. Learning edge momentum: A new account of outcomes in CS1. Computer Science Education 20, 1 (2010), 37--71.
[40]
Aamod Sane and Jayaraman Valadi. 2023. Teaching with the Trace-First Approach. Technical Report. Flame University.
[41]
Robert Sedgewick and Kevin Wayne. 2017. Introduction to programming in Java: an interdisciplinary approach. Addison-Wesley Professional.
[42]
Dermot Shinners-Kennedy. 2008. The everydayness of threshold concepts: State as an example from computer science. In Threshold concepts within the disciplines, Ray Land, Jan HF Meyer, and Jan Smith (Eds.). Brill, Chapter 9, 119--128.
[43]
Juha Sorva. 2010. Reflections on threshold concepts in computer programming and beyond. In Proceedings of the 10th Koli calling international conference on computing education research. 21--30.
[44]
Juha Sorva. 2012. Visual program simulation in introductory programming education. Aalto University.
[45]
Vesa Vainio and Jorma Sajaniemi. 2007. Factors in novice programmers' poor tracing skills. ACM SIGCSE Bulletin 39, 3 (2007), 236--240.
[46]
Kasturi Viswanath. 2010. An Introduction to Mathematical Computer Science. University Press.
[47]
William W. Wadge and Edward A. Ashcroft. 1985. Lucid, the dataflow programming language. Vol. 303. Academic Press London.
[48]
Benjamin Xie, Greg L Nelson, and Amy J Ko. 2018. An explicit strategy to scaffold novice program tracing. In Proceedings of the 49th ACM technical symposium on computer science education. 344--349.
[49]
Stelios Xinogalos, Maya Satratzemi, and Christos Malliarakis. 2017. Microworlds, games, animations, mobile apps, puzzle editors and more: What is important for an introductory programming environment? Education and Information Technologies 22 (2017), 145--176.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
CompEd 2023: Proceedings of the ACM Conference on Global Computing Education Vol 1
December 2023
180 pages
ISBN:9798400700484
DOI:10.1145/3576882
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

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 05 December 2023

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. CS1
  2. loop invariants
  3. operational semantics
  4. program comprehension
  5. program derivation
  6. program tracing
  7. spreadsheets

Qualifiers

  • Research-article

Conference

CompEd 2023
Sponsor:

Acceptance Rates

Overall Acceptance Rate 33 of 100 submissions, 33%

Upcoming Conference

CompEd '25
ACM Global Computing Education Conference 2025
October 21 - 25, 2025
Gaborone , Botswana

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 48
    Total Downloads
  • Downloads (Last 12 months)48
  • Downloads (Last 6 weeks)1
Reflects downloads up to 04 Oct 2024

Other Metrics

Citations

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