skip to main content
10.1145/3545945.3569880acmconferencesArticle/Chapter ViewAbstractPublication PagessigcseConference Proceedingsconference-collections
research-article
Open access

Understanding and Measuring Incremental Development in CS1

Published: 03 March 2023 Publication History

Abstract

Incremental development is the process of writing a small snippet of code and testing it before moving on. For students in introductory programming courses, the value of incremental development is especially higher as they may suffer from more syntax errors, lack the proficiency to address complicated bugs, and may be more prone to frustration when struggling to correct code. However, to evaluate the effectiveness of interventions that aim to teach programming processes such as incremental development, we need to develop measures to assess such processes. In this paper, we present a way to measure incremental development. By qualitatively analyzing 15 student coding interviews, we identified common behaviors in the programming process that relate to incremental development. We then leveraged a dataset of over 1000 development sessions -- about 52,000 code snapshots at compilation time -- to automatically detect the common behaviors identified in our qualitative analysis. Finally, we crafted a formal metric, called the "Measure of Incremental Development'' (MID), to quantify how effectively a student used incremental development during a programming session. The MID detects common non-incremental development patterns such as excessive debugging after large additions of code to automatically assess a sequence of snapshots. The MID aligns with human evaluations of incrementality with over 80% accuracy. Our metric enables new research directions and interventions focused on improving students' development practices.

References

[1]
Lewis Baumstark and Michael Orsega. 2016. Quantifying Introductory CS Students' Iterative Software Process by Mining Version Control System Repositories. J. Comput. Sci. Coll., Vol. 31, 6 (jun 2016), 97--104. https://doi.org/10.5555/2904446.2904470
[2]
Kent Beck and Erich Gamma. 2000. Test-Infected: Programmers Love Writing Tests. Cambridge University Press, USA, 357--376.
[3]
Brett A. Becker. 2016. A New Metric to Quantify Repeated Compiler Errors for Novice Programmers. In Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education (Arequipa, Peru) (ITiCSE '16). Association for Computing Machinery, New York, NY, USA, 296--301. https://doi.org/10.1145/2899415.2899463
[4]
J. Calderhead. 1981. Stimulated Recall: A Method for Research on Teaching. British Journal of Educational Psychology, Vol. 51, 2 (1981), 211--217. https://doi.org/10.1111/j.2044--8279.1981.tb02474.x
[5]
Adam S. Carter. 2012. Supporting the Virtual Design Studio through Social Programming Environments. In Proceedings of the Ninth Annual International Conference on International Computing Education Research (Auckland, New Zealand) (ICER '12). Association for Computing Machinery, New York, NY, USA, 157--158. https://doi.org/10.1145/2361276.2361309
[6]
Adam S. Carter, Christopher D. Hundhausen, and Olusola Adesope. 2015. The Normalized Programming State Model: Predicting Student Performance in Computing Courses Based on Programming Behavior. In Proceedings of the Eleventh Annual International Conference on International Computing Education Research (Omaha, Nebraska, USA) (ICER '15). Association for Computing Machinery, New York, NY, USA, 141--150. https://doi.org/10.1145/2787622.2787710
[7]
Charis Charitsis, Chris Piech, and John C. Mitchell. 2022. Using NLP to Quantify Program Decomposition in CS1. In Proceedings of the Ninth ACM Conference on Learning @ Scale (New York City, NY, USA) (L@S '22). Association for Computing Machinery, New York, NY, USA, 113--120. https://doi.org/10.1145/3491140.3528272
[8]
Edstem. 2022. Edstem. https://edstem.org/
[9]
R. L. Glass. 1969. An Elementary Discussion of Compiler/Interpreter Writing. ACM Comput. Surv., Vol. 1, 1 (mar 1969), 55--77. https://doi.org/10.1145/356540.356545
[10]
T Hariprasad, G Vidhyagaran, K Seenu, and Chandrasegar Thirumalai. 2017. Software Complexity Analysis Using Halstead Metrics. In 2017 International Conference on Trends in Electronics and Informatics (ICEI). 1109--1113. https://doi.org/10.1109/ICOEI.2017.8300883
[11]
Matthew C. Jadud. 2006. Methods and Tools for Exploring Novice Compilation Behaviour. In Proceedings of the Second International Workshop on Computing Education Research (Canterbury, United Kingdom) (ICER '06). Association for Computing Machinery, New York, NY, USA, 73--84. https://doi.org/10.1145/1151588.1151600
[12]
Ayaan M. Kazerouni, Stephen H. Edwards, T. Simin Hall, and Clifford A. Shaffer. 2017b. DevEventTracker: Tracking Development Events to Assess Incremental Development and Procrastination. In Proceedings of the 2017 ACM Conference on Innovation and Technology in Computer Science Education (Bologna, Italy) (ITiCSE '17). Association for Computing Machinery, New York, NY, USA, 104--109. https://doi.org/10.1145/3059009.3059050
[13]
Ayaan M. Kazerouni, Stephen H. Edwards, and Clifford A. Shaffer. 2017a. Quantifying Incremental Development Practices and Their Relationship to Procrastination. In Proceedings of the 2017 ACM Conference on International Computing Education Research (Tacoma, Washington, USA) (ICER '17). Association for Computing Machinery, New York, NY, USA, 191--199. https://doi.org/10.1145/3105726.3106180
[14]
Ayaan M. Kazerouni, Clifford A. Shaffer, Stephen H. Edwards, and Francisco Servant. 2019. Assessing Incremental Testing Practices and Their Impact on Project Outcomes (SIGCSE '19). Association for Computing Machinery, New York, NY, USA, 407--413. https://doi.org/10.1145/3287324.3287366
[15]
Craig Larman and Victor R. Basili. 2003. Iterative and Incremental Developments: A Brief History. Computer, Vol. 36 (2003), 47--56.
[16]
Mary L. McHugh. 2012. Interrater Reliability: The Kappa Statistic. Biochemia Medica, Vol. 22 (2012), 276--282.
[17]
H. D. Mills. 1976. Software Development. In Proceedings of the 2nd International Conference on Software Engineering (San Francisco, California, USA) (ICSE '76). IEEE Computer Society Press, Washington, DC, USA, 388. https://doi.org/10.5555/800253.807706
[18]
D. N. Perkins, Chris Hancock, Renee Hobbs, Fay Martin, and Rebecca Simmons. 1986. Conditions of Learning in Novice Programmers. Journal of Educational Computing Research, Vol. 2, 1 (1986), 37--55. https://doi.org/10.2190/GUJT-JCBJ-Q6QU-Q9PL
[19]
Anshul Shah. 2022a. measure-incremental-development. https://pypi.org/project/measure-incremental-development/
[20]
Anshul Shah. 2022b. Programming Tasks to Observe Incremental Development. https://bit.ly/program-tasks
[21]
E. Soloway. 1986. Learning to Program = Learning to Construct Mechanisms and Explanations. Commun. ACM, Vol. 29, 9 (sep 1986), 850--858. https://doi.org/10.1145/6592.6594
[22]
E. Soloway and James C. Spohrer. 1988. Studying the Novice Programmer. L. Erlbaum Associates Inc., USA. https://doi.org/10.4324/9781315808321
[23]
CORPORATE The Joint Task Force on Computing Curricula. 2001. Computing Curricula 2001. J. Educ. Resour. Comput., Vol. 1, 3es (sep 2001), 1--es. https://doi.org/10.1145/384274.384275
[24]
Maureen M. Villamor. 2020. A Review on Process-oriented Approaches for Analyzing Novice Solutions to Programming Problems. Research and Practice in Technology Enhanced Learning, Vol. 15, 1 (Apr 2020), 8. https://doi.org/10.1186/s41039-020-00130-y
[25]
Christopher Watson, Frederick W.B. Li, and Jamie L. Godwin. 2013. Predicting Performance in an Introductory Programming Course by Logging and Analyzing Student Programming Behavior. In 2013 IEEE 13th International Conference on Advanced Learning Technologies. 319--323. https://doi.org/10.1109/ICALT.2013.99

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
SIGCSE 2023: Proceedings of the 54th ACM Technical Symposium on Computer Science Education V. 1
March 2023
1481 pages
ISBN:9781450394314
DOI:10.1145/3545945
This work is licensed under a Creative Commons Attribution International 4.0 License.

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 03 March 2023

Check for updates

Author Tags

  1. automated assessment
  2. cs1
  3. incremental development
  4. programming process

Qualifiers

  • Research-article

Funding Sources

Conference

SIGCSE 2023
Sponsor:

Acceptance Rates

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

Upcoming Conference

SIGCSE TS 2025
The 56th ACM Technical Symposium on Computer Science Education
February 26 - March 1, 2025
Pittsburgh , PA , USA

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)246
  • Downloads (Last 6 weeks)20
Reflects downloads up to 22 Dec 2024

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media