Description of field of research:

Introductory programming is challenging for many students, requiring them to engage in a deep approach to learning to succeed. To encourage this, computing educators employ various tools and techniques to support students engaging in these deep approaches. 

Code-tracing is one such technique that typically involves stepping through code using "pen-and-paper" to visualise and understand memory, function calls and algorithmic thinking. Code-tracing allows novice programmers to become more familiar with general code comprehension, code execution, and memory models. 

Typically, code-tracing tracks any variables in the memory stack or heap, ensuring that a student's limited working memory (research indicates we can only hold at most 7±2 elements in our working memory at any one time) is not overwhelmed when more than seven elements may need to be processed. Furthermore, this approach to code-tracing ensures students develop a basic understanding of computer memory early in their degree, leading to a better understanding of computational efficiency in later computing courses. 

Existing pen-and-paper approaches generally see the student sketch out boxes to represent memory and update variable values as the program executes; however, these approaches do not factor cognitive load theory into their design. Some education researchers have developed code-tracing web tools to support code-tracing in the web browser; however, following a review of available tools, these approaches do not trace memory as explicitly as we can with the flexibility of paper-based systems. 

Considering the limitations of human working memory, applied alongside the principles of Cognitive Load Theory (CLT), we are looking to design and build a tool that helps create an external representation of memory by visualising source code line by line, both in the syntax and in memory. 

Research Area

CS1 Pedagogy |
External tracing |
Cognitive load theory

The student will work alongside the supervisory team in a stimulating environment, pending COVID restrictions. Access to computing laboratories and a studio with recording equipment may be provided as required.

  • Relevant CLT Effects to be applied in designing an interface to step through and visualise code 
  • High fidelity prototype of interface with user testing 
  • A prototype web interface that allows users to: 
           * step through code, 
           * visualise and program memory variables type, and  
           * explore memory using a digital scratchpad. 
  • Educational resources (such as a videos or animations of the tool) 

Expected Benefits 

  • A novel, research-based tool to produce high-quality learning visualisations 
  • A digital environment for students to explore and practice code-tracing 
  • <potential, not expected in TOR scope> A research publication of the work(s)

Alan D. Baddeley and Graham Hitch. 1974. Working Memory. Psychology of Learning and Motivation Vol. 8 (Jan. 1974), 47--89. 

Anthony Jr, R. (2008). Cognitive load theory and the role of learner experience: An abbreviated review for educational practitioners. AACE Review (formerly AACE Journal), 16(4), 425-439. 

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 (SIGCSE '18). Association for Computing Machinery, New York, NY, USA, 344-349 

Cunningham, K., Ke, S., Guzdial, M., & Ericson, B. (2019, July). Novice rationales for sketching and tracing, and how they try to avoid it. In Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education (pp. 37-43). 

Haatainen, S., Lakanen, A. J., Isomnen, V., & Lappalainen, V. (2013, March). A practice for providing additional support in CS1. In 2013 Learning and Teaching in Computing and Engineering (pp. 178-183). IEEE. 

Crichton, W., Agrawala, M., & Hanrahan, P. (2021, May). The Role of Working Memory in Program Tracing. In Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems (pp. 1-13).