Abstract
Worked examples can help novice learners develop early schemata from an expert’s solution to a problem. Nonetheless, the worked examples themselves are no guarantee that students will explore these experts’ solutions effectively. This study explores two different approaches to supporting engineering technology students’ learning in an undergraduate introductory programming course: debugging and in-code commenting worked examples. In a Fall semester, students self-explained worked examples using in-code comments (n = 120), while in a Spring semester, students debugged worked examples (spring n = 101). Performance data included the midterm and final exams. Prior exposure to programming courses was taken from a survey at the beginning of each semester. Findings suggest that both the debugging and explaining forms of engagement with worked examples helped students with no prior programming experience to succeed in the course. For the worked examples to be effective, those need to be provided with some explicit form of engagement (i.e., debugging or self-explaining). Combining both strategies following explaining first and debugging second may result in a more effective approach.
Similar content being viewed by others
Data availability
Data are available on request due to privacy or other restrictions.
References
Bureau of Labor Statistics. Employment by major occupational group, 2014 and projected 2024. Retrieved from [BLS], & Washington (2015). D.C.: https://www.bls.gov/news.release/ecopro.t04.htm
[SREB] (2016). Bridging the Computer Science Education Gap: Five Actions States Can Take. Retrieved from https://www.sreb.org/publication/bridging-computer-science-education-gap
Atkinson, R. K., Derry, S. J., Renkl, A., & Wortham, D. (2000). Learning from examples: Instructional principles from the worked examples research. Review of educational research, 70(2), 181–214
Campe, S., Denner, J., Green, E., & Torres, D. (2020). Pair programming in middle school: variations in interactions and behaviors. Computer Science Education, 30(1), 22–46
Chi, M. T. (2009). Active-constructive‐interactive: A conceptual framework for differentiating learning activities. Topics in cognitive science, 1(1), 73–105
Chiu, J. L., & Chi, M. T. (2014). Supporting self-explanation in the classroom. Applying science of learning in education: Infusing psychological science into the curriculum, 91–103
Dahlen, O., Lervik, A., Aarøen, O., Cabriolu, R., Lyng, R., & van Erp, T. S. (2020). Teaching complex molecular simulation algorithms: Using self-evaluation to tailor web‐based exercises at an individual level.Computer Applications in Engineering Education
Davies, S. P. (1993). Models and theories of programming strategy. International Journal of Man-Machine Studies, 39(2), 237–267. doi:https://doi.org/10.1006/imms.1993.1061
Decker, A., Margulieux, L. E., & Morrison, B. B. (2019). Using the SOLO Taxonomy to Understand Subgoal Labels Effect in CS1. Paper presented at the Proceedings of the 2019 ACM Conference on International Computing Education Research
desJardins, M. (2015). The real reason U.S. students lag behind in computer science.Fortune
Ertmer, P. A., & Newby, T. J. (2013). Behaviorism, cognitivism,constructivism: Comparing critical features from an instructional design perspective. Performance Improvement Quarterly, 26(2), 43–71
Kaczmarczyk, D., & Dopplick, R. (2014). Rebooting the pathway to success: Preparing students for computing workforce needs in the United States. Renee, Rebooting the Pathway to Success: Preparing Students for Computing Workforce Needs in the United States (March 05, 2014)
Katz, I. R., & Anderson, J. R. (1987). Debugging: An analysis of bug-location strategies. Human-Computer Interaction, 3(4), 351–399
Lee, I., Martin, F., Denner, J., Coulter, B., Allan, W., Erickson, J., & Werner, L. (2011). Computational thinking for youth in practice. Acm Inroads, 2(1), 32–37
Lewis, C. M. (2011). Is pair programming more effective than other forms of collaboration for young students? Computer Science Education, 21(2), 105–134
Lister, R. (2011). Concrete and other neo-Piagetian forms of reasoning in the novice programmer. Paper presented at the Conferences in research and practice in information technology series
Lopez, M., Whalley, J., Robbins, P., & Lister, R. (2008). Relationships between reading, tracing and writing skills in introductory programming. Paper presented at the Proceedings of the fourth international workshop on computing education research, Sydney, Australia
Lytle, N., Cateté, V., Boulden, D., Dong, Y., Houchins, J., Milliken, A., & Barnes, T. (2019). Use, Modify, Create: Comparing Computational Thinking Lesson Progressions for STEM Classes. Paper presented at the Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education
Magana, A. J., Falk, M. L., Vieira, C., Reese Jr, M. J., Alabi, O., & Patinet, S. (2017). Affordances and challenges of computational tools for supporting modeling and simulation practices. Computer Applications in Engineering Education, 25(3), 352–375
Mason, R., Seton, C., & Cooper, G. (2016). Applying cognitive load theory to the redesign of a conventional database systems course. Computer Science Education, 26(1), 68–87
Mbogo, C., Blake, E., & Suleman, H. (2013). A mobile scaffolding application to support novice learners of computer programming. Paper presented at the Proceedings of the Sixth International Conference on Information and Communications Technologies and Development: Notes-Volume 2
McCauley, R., Fitzgerald, S., Lewandowski, G., Murphy, L., Simon, B., Thomas, L., & Zander, C. (2008). Debugging: a review of the literature from an educational perspective. Computer Science Education, 18(2), 67–92
Morrison, B. B., Margulieux, L. E., & Guzdial, M. (2015). Subgoals, context, and worked examples in learning computing problem solving. Paper presented at the Proceedings of the eleventh annual International Conference on International Computing Education Research
MRC (2015). Cognition and Brain Sciences Unit (2009). Rules of thumb on magnitudes of effect sizes. Retrieved from https://imaging.mrc-cbu.cam.ac.uk/statswiki/FAQ/effectSize
Mselle, L. J., & Twaakyondo, H. (2012). The impact of Memory Transfer Language (MTL) on reducing misconceptions in teaching programming to novices. International Journal of Machine Learning and Applications, 1(1), 388–394. doi:https://doi.org/10.4102/ijmla.v1i1.3
Porter, L., & Simon, B. (2019). A case study of peer instruction: From University of California, San Diego to the computer science community. In S. A. R. Fincher (Ed.), The Cambridge Handbook of Computing Education Research (pp. 861–874). Cambridge: Cambridge University Press
Renkl, A. (2005). The worked-out-example principle in multimedia learning.The Cambridge handbook of multimedia learning,229–245
Restrepo-Calle, F., Ramírez Echeverry, J. J., & González, F. A. (2019). Continuous assessment in a computer programming course supported by a software tool. Computer Applications in Engineering Education, 27(1), 80–89
Rist, R. S. (1995). Program structure and design. Cognitive Science, 19(4), 507–562
Robins, A., Rountree, J., & Rountree, N. (2003). Learning and teaching programming: A review and discussion. Computer Science Education, 13(2), 137–172
Sato, M., & Loewen, S. (2019). Methodological strengths, challenges, and joys of classroom-based quasi-experimental research.Doing SLA research with implications for the classroom: Reconciling methodological demands and pedagogical applicability,31–54
Sentance, S., Waite, J., & Kallia, M. (2019). Teaching computer programming with PRIMM: a sociocultural perspective. Computer Science Education, 29(2–3), 136–176
Sweller, J. (1988). Cognitive load during problem solving: Effects on learning. Cognitive science, 12(2), 257–285
Sweller, J. (2011). Cognitive load theory. Psychology of learning and motivation (55 vol., pp. 37–76). Elsevier
Sweller, J., Ayres, P., & Kalyuga, S. (2011). Cognitive load theory. New York: Springer.
Sweller, J., van Merriënboer, J. J., & Paas, F. (2019). Cognitive architecture and instructional design: 20 years later. Educational Psychology Review,1–32
Sweller, J., Van Merrienboer, J. J., & Paas, F. G. (1998). Cognitive architecture and instructional design. Educational Psychology Review, 10(3), 251–296
Ullah, Z., Lajis, A., Jamjoom, M., Altalhi, A., Al-Ghamdi, A., & Saleem, F. (2018). The effect of automatic assessment on novice programming: Strengths and limitations of existing systems. Computer Applications in Engineering Education, 26(6), 2328–2341
Van Merrienboer, J. J., & Krammer, H. P. (1987). Instructional strategies and tactics for the design of introductory computer programming courses in high school. Instructional Science, 16(3), 251–285
Vieira, C., Magana, A. J., Falk, M. L., & Garcia, R. E. (2017). Writing in-code comments to self-explain in computational science and engineering education. ACM Transactions on Computing Education (TOCE), 17(4), 1–21
Vieira, C., Magana, A. J., Roy, A., & Falk, M. L. (2019). Student explanations in the context of computational science and engineering education. Cognition and Instruction, 37(2), 201–231
Vieira, C., Yan, J., & Magana, A. J. (2015). Exploring design characteristics of worked examples to support programming and algorithm design. Journal of Computational Science Education, 6(1), 2–15
Von Mayrhauser, A., & Vans, A. M. (1995). Program understanding: Models and experiments Advances in computers (40 vol., pp. 1–38). Elsevier
Weintrop, D., & Wilensky, U. (2017). Comparing block-based and text-based programming in high school computer science classrooms. ACM Transactions on Computing Education (TOCE), 18(1), 1–25
Whalley, J. L., & Lister, R. (2009). The bracelet 2009.1 (wellington) specification. Paper presented at the Eleventh Australasian Computing Education Conference (ACE2009), Wellington, New Zealand
Xie, B., Loksa, D., Nelson, G. L., Davidson, M. J., Dong, D., Kwik, H., & Ko, A. J. (2019). A theory of instruction for introductory programming skills. Computer Science Education, 29(2–3), 205–253
Acknowledgements
This research was supported in part by the US National Science Foundation under the award number EEC 1826099. Any opinions, findings, conclusions, or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.
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.
Rights and permissions
Springer Nature or its licensor holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.
About this article
Cite this article
Garces, S., Vieira, C., Ravai, G. et al. Engaging students in active exploration of programming worked examples. Educ Inf Technol 28, 2869–2886 (2023). https://doi.org/10.1007/s10639-022-11247-6
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10639-022-11247-6