Abstract
Several instructional approaches have been advanced for learning programming. However, effective ways of engaging beginners in programming in K–12 are still unclear, especially among low socioeconomic status learners in technology-deprived learning environments. Understanding the learning path of novice programmers will bridge this gap and explain what constitutes an effective learning path for novice. Thirty-eight students from technology-deprived schools participated in a 10-h project-first constructionist learning. Using the Friedman test of repeated measures and Spearman’s rank correlation, trends in the students’ programming ability were evaluated. The findings showed that the students’ programming ability increased on the first day, remained stable throughout the intervention, and were not affected by either semantics or syntax of the Python programming language. However, the features of a program were inconclusive determinants of programming skills. The irregular patterns of programming concepts within and between the learners’ programming solutions suggest focusing on pedagogies that encourage project-first learning. A constructionist model of learning and the challenges educators may encounter amongst novice learners with low socioeconomic status are highlighted.
Similar content being viewed by others
Data availability statement
The datasets generated during and/or analysed during the current study are available from the corresponding author on reasonable request.
References
Adelson, B., & Soloway, E. (1985). The role of domain experience in software design. IEEE Transactions on Software Engineering, 11(11), 1351–1360. https://doi.org/10.1109/TSE.1985.231883
Basawapatna, A. R., Repenning, A., Koh, K. H., & Nickerson, H. (2013). The zones of proximal flow: Guiding students through a space of computational thinking skills and challenges. Proceedings of the Ninth Annual International ACM Conference on International Computing Education Research, 67–74. https://doi.org/10.1145/2493394.2493404
Ben-Bassat Levy, R., Ben-Ari, M., & Uronen, P. A. (2003). The Jeliot 2000 program animation system. Computers and Education, 40(1), 1–15. https://doi.org/10.1016/S0360-1315(02)00076-3
Berland, M., & Wilensky, U. (2015). Comparing virtual and physical robotics environments for supporting complex systems and computational thinking. Journal of Science Education and Technology, 24(5), 628–647. https://doi.org/10.1007/s10956-015-9552-x
Berland, M., Martin, T., Benton, T., Smith, C. P., & Davis, D. (2013). Using learning analytics to understand the learning pathways of novice programmers. The Journal of the Learning Sciences, 22(4), 564–599. https://doi.org/10.1080/10508406.2013.836655
Berland, M., Davis, D., & Smith, C. P. (2015). AMOEBA: Designing for collaboration in computer science classrooms through live learning analytics. International Journal of Computer-Supported Collaborative Learning, 10(4), 425–447. https://doi.org/10.1007/s11412-015-9217-z
Blikstein, P., Worsley, M., Piech, C., Sahami, M., Cooper, S., & Koller, D. (2014). Programming pluralism: Using learning analytics to detect patterns in the learning of computer programming. Journal of the Learning Sciences, 23(4), 561–599. https://doi.org/10.1080/10508406.2014.954750
Brown, N., & Altadmri, A. (2017). Novice Java programming mistakes: Large-scale data vs. educator beliefs. ACM Transactions on Computing Education, 17(2), 1–21. https://doi.org/10.1145/2994154
Chen, G., Shen, J., Barth-Cohen, L., Jiang, S., Huang, X., & Eltoukhy, M. (2017). Assessing elementary students’ computational thinking in everyday reasoning and robotics programming. Computers and Education, 109, 162–175. https://doi.org/10.1016/j.compedu.2017.03.001
Deek, F. P., Kimmel, H., & McHugh, J. A. (1998). Pedagogical changes in the delivery of the first-course in computer science: Problem solving, then programming. Journal of Engineering Education, 87(3), 313–320. https://doi.org/10.1002/j.2168-9830.1998.tb00359.x
Denner, J., Werner, L., & Ortiz, E. (2012). Computer games created by middle school girls: Can they be used to measure understanding of computer science concepts? Computers & Education, 58(1), 240–249. https://doi.org/10.1016/j.compedu.2011.08.006
Denner, J., Werner, L., Campe, S., & Ortiz, E. (2014). Pair programming: Under what conditions is it advantageous for middle school students? Journal of Research on Technology in Education, 46(3), 277–296. https://doi.org/10.1080/15391523.2014.888272
Denner, J., Campe, S., & Werner, L. (2019). Does computer game design and programming benefit children? A meta-synthesis of research. ACM Transactions on Computing Education, 19(3), 1–35. https://doi.org/10.1145/3277565
Denner, J., Green, E., & Campe, S. (2021). Learning to program in middle school: How pair programming helps and hinders intrepid exploration. The Journal of the Learning Sciences, 1–35. https://doi.org/10.1080/10508406.2021.1939028
Du Boulay, B. (1989). Some difficulties of learning to program. In E. Soloway & J. C. Spohrer (Eds.), Studying the novice programmer (pp. 283–299). Lawrence Erlbaum Associates. https://doi.org/10.4324/9781315808321
Ezeamuzie, N. O., & Leung, J. S. C. (2022). Computational thinking through an empirical lens: A systematic review of literature. Journal of Educational Computing Research, 60(2), 481–511. https://doi.org/10.1177/07356331211033158
Garcia, M. B. (2021). Cooperative learning in computer programming: A quasi-experimental evaluation of Jigsaw teaching strategy with novice programmers. Education and Information Technologies, 26(4), 4839–4856. https://doi.org/10.1007/s10639-021-10502-6
Hoc, J.-M. (1989). Do we really have conditional statements in our brains? In E. Soloway & J. C. Spohrer (Eds.), Studying the novice programmer (pp. 139–156). Lawrence Erlbaum Associates. https://doi.org/10.4324/9781315808321
Hsu, T.-C., Chang, S.-C., & Hung, Y.-T. (2018). How to learn and how to teach computational thinking: Suggestions based on a review of the literature. Computers and Education, 126, 296–310. https://doi.org/10.1016/j.compedu.2018.07.004
Hu, H. H., & Shepherd, T. D. (2013). Using POGIL to help students learn to program. ACM Transactions on Computing Education, 13(3), 1–23. https://doi.org/10.1145/2499947.2499950
Hu, Y., Chen, C.-H., & Su, C.-Y. (2020). Exploring the effectiveness and moderators of block-based visual programming on student learning: A meta-analysis. Journal of Educational Computing Research, 58(8), 1467–1493. https://doi.org/10.1177/0735633120945935
Jehng, J. C. J., Tung, S. H. S., & Chang, C. T. (1999). A visualisation approach to learning the concept of recursion. Journal of Computer Assisted Learning, 15(4), 279–290. https://doi.org/10.1046/j.1365-2729.1999.00103.x
Leonard, A. E., Daily, S. B., Jörg, S., & Babu, S. V. (2021). Coding moves: Design and research of teaching computational thinking through dance choreography and virtual interactions. Journal of Research on Technology in Education, 53(2), 159–177. https://doi.org/10.1080/15391523.2020.1760754
Linn, M. C., & Dalbey, J. (1989). Cognitive consequences of programming instruction. In E. Soloway & J. C. Spohrer (Eds.), Studying the novice programmer (pp. 57–81). Lawrence Erlbaum Associates. https://doi.org/10.4324/9781315808321
Lye, S. Y., & Koh, J. H. L. (2014). Review on teaching and learning of computational thinking through programming: What is next for K–12? Computers in Human Behavior, 41, 51–61. https://doi.org/10.1016/j.chb.2014.09.012
Ma, L., Ferguson, J., Roper, M., & Wood, M. (2011). Investigating and improving the models of programming concepts held by novice programmers. Computer Science Education, 21(1), 57–80. https://doi.org/10.1080/08993408.2011.554722
Miller, L. A. (1981). Natural language programming: Styles, strategies, and contrasts. IBM Systems Journal, 20(2), 184–215.
Moreno-León, J., Robles, G., & Román-González, M. (2015). Dr. Scratch: Automatic analysis of scratch projects to assess and foster computational thinking. Revista de Educación a Distancia, 46(10), 1–23. https://doi.org/10.6018/red/46/10
Moura, I. C., & van Hattum-Janssen, N. (2011). Teaching a CS introductory course: An active approach. Computers & Education, 56(2), 475–483. https://doi.org/10.1016/j.compedu.2010.09.009
Nardelli, E. (2019). Do we really need computational thinking? Communications of the ACM, 62(2), 32–35. https://doi.org/10.1145/3231587
Nuutila, E., Törmä, S., & Malmi, L. (2005). PBL and computer programming - The seven steps method with adaptations. Computer Science Education, 15(2), 123–142. https://doi.org/10.1080/08993400500150788
Pane, J. F., & Myers, B. A. (2001). Studying the language and structure in non-programmers’ solutions to programming problems. International Journal of Human-Computer Studies, 54(2), 237–264.
Papert, S. (1991). Situating Constructionism. In I. Harel & S. Papert (Eds.), Constructionism: Research reports and essays (pp. 1985–1990). Ablex Pub. Corp.
Perkins, D. N., Hancock, C., Hobbs, R., Martin, F., & Simmons, R. (1989). Conditions of learning in novice programmers. In E. Soloway & J. C. Spohrer (Eds.), Studying the novice programmer (pp. 261–279). Lawrence Erlbaum Associates. https://doi.org/10.4324/9781315808321
Popat, S., & Starkey, L. (2019). Learning to code or coding to learn? A systematic review. Computers & Education, 128, 365–376. https://doi.org/10.1016/j.compedu.2018.10.005
Ragonis, N., & Ben-Ari, M. (2005). A long-term investigation of the comprehension of OOP concepts by novices. Computer Science Education, 15(3), 203–221. https://doi.org/10.1080/08993400500224310
Repenning, A., Webb, D. C., Koh, K. H., Nickerson, H., Miller, S. B., Brand, C., Horses, I. H. M., Basawapatna, A., Gluck, F., Grover, R., Gutierrez, K., & Repenning, N. (2015). Scalable game design: A strategy to bring systemic computer science education to schools through game design and simulation creation. ACM Transactions on Computing Education, 15(2), 1–31. https://doi.org/10.1145/2700517
Repenning, A., Webb, D., & Ioannidou, A. (2010). Scalable game design and the development of a checklist for getting computational thinking into public schools. Proceedings of the 41st ACM Technical Symposium on Computer Science Education, 265–269. https://doi.org/10.1145/1734263.1734357
Robins, A., Rountree, J., & Rountree, N. (2003). Learning and teaching programming: A review and discussion. Computer Science Education, 13(2), 137–172. https://doi.org/10.1076/csed.13.2.137.14200
Samurcay, R. (1989). The concept of variable in programming: Its meaning and use in problem-solving by novice programmers. In E. Soloway & J. C. Spohrer (Eds.), Studying the novice programmer (pp. 161–178). Lawrence Erlbaum Associates. https://doi.org/10.4324/9781315808321
Scherer, R., Siddiq, F., & Viveros, B. S. (2019). The cognitive benefits of learning computer programming: A meta-analysis of transfer effects. Journal of Educational Psychology, 111(5), 764–792. https://doi.org/10.1037/edu0000314
Soloway, E. (1986). Learning to program = learning to construct mechanisms and explanations. Communications of the ACM, 29(9), 850–858. https://doi.org/10.1145/6592.6594
Soloway, E., & Spohrer, J. C. (1989). Studying the novice programmer. Lawrence Erlbaum Associates. https://doi.org/10.4324/9781315808321
Spector, J. M. (2005). Innovations in instructional technology: An introduction to this volume. In J. M. Spector, C. Ohrazda, A. Van Schaack, & D. A. Wiley (Eds.), Innovations in instructional technology: Essays in honor of M. David Merrill (pp. xxxi–xxxvi). Erlbaum.
Taylor, K., & Baek, Y. (2019). Grouping matters in computational robotic activities. Computers in Human Behavior, 93, 99–105. https://doi.org/10.1016/j.chb.2018.12.010
Tsompanoudi, D., Satratzemi, M., & Xinogalos, S. (2016). Evaluating the effects of scripted distributed pair programming on student performance and participation. IEEE Transactions on Education, 59(1), 24–31. https://doi.org/10.1109/TE.2015.2419192
Turkle, S., & Papert, S. (1992). Epistemological pluralism and the revaluation of the concrete. Journal of Mathematical Behavior, 11(1), 3–33.
Wing, J. (2006). Computational thinking. Communications of the ACM, 49(3), 33–35. https://doi.org/10.1145/1118178.1118215
Wu, B., Hu, Y., Ruis, A. R., & Wang, M. (2019). Analysing computational thinking in collaborative programming: A quantitative ethnography approach. Journal of Computer Assisted Learning, 35(3), 421–434. https://doi.org/10.1111/jcal.12348
Xia, L., & Zhong, B. (2018). A systematic review on teaching and learning robotics content knowledge in K-12. Computers & Education, 127, 267–282. https://doi.org/10.1016/j.compedu.2018.09.007
Xinogalos, S., Satratzemi, M., & Dagdilelis, V. (2006). An introduction to object-oriented programming with a didactic microworld: ObjectKarel. Computers & Education, 47(2), 148–171. https://doi.org/10.1016/j.compedu.2004.09.005
Zhong, B., Wang, Q., & Chen, J. (2016). The impact of social factors on pair programming in a primary school. Computers in Human Behavior, 64, 423–431. https://doi.org/10.1016/j.chb.2016.07.017
Acknowledgements
I thank Jessica S.C Leung for her feedback on this manuscript's research design and drafting.
Author information
Authors and Affiliations
Corresponding author
Ethics declarations
Conflict of interest
None.
Additional information
Publisher's note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Appendices
Appendix 1
Programming Score = 10
Example of student’s artefact with a programming score of 10 in the Grade Point Calculator task (boys’ Day 4). The trailing comment in red font shows the charted programming features. The result is shown within the box in blue font.
Programming Score = 8
Example of student’s artefact with a programming score of 8 in the Polygons in Quadrants task (girls’ Day 2). The trailing comments in red font show the charted programming features. The result is shown within the box.
Programming Score = 6
Example of student’s artefact with a programming score of 6 in the Concentric Square task (girls’ Day 5). The trailing comments in red font show the charted programming features. The result is shown within the box.
Programming Score = 4
Example of student’s artefact with a programming score of 4 in the Point of Sale Simulator task (boys’ Day 5). The trailing comments in red font show the charted programming features.
Programming Score = 2
Example of student’s artefact with programming score of 2 in the Concentric Square (girls’ Day 5). The trailing comments in red font show the charted programming features. The result is shown within the box.
Appendix 2
Rights and permissions
About this article
Cite this article
Ezeamuzie, N.O. Project-first approach to programming in K–12: Tracking the development of novice programmers in technology-deprived environments. Educ Inf Technol 28, 407–437 (2023). https://doi.org/10.1007/s10639-022-11180-8
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10639-022-11180-8