Debuggers help novice programmers understand code as it grows more complex. They are also complicated and rarely taught thoroughly, which gives beginners a steep learning curve.
An "omniscient debugger" records the state of a program throughout its execution. The user can then move through time to see what changed and when. This suits beginners, who often struggle to choose useful places for breakpoints and to follow how data flows through a program.
This project will develop an educational omniscient debugger for Python 3, designed for beginner programmers. It will track the execution history and state of a program to help users investigate problems. It also aims to build their understanding of what caused those problems and to make them more familiar with debuggers.
A major part of the project is tracking the relevant program state and its changes during execution, so that a user can follow them over time and see what the program is doing. The debugger will store the changes and use them to recreate the state at each step. It must track and display this efficiently, so the project will implement and evaluate several approaches.
