  We continuously interact with computerized systems to achieve goals and
perform tasks in our personal and professional lives. Therefore, the ability to
program such systems is a skill needed by everyone. Consequently, computational
thinking skills are essential for everyone, which creates a challenge for the
educational system to teach these skills at scale and allow students to
practice these skills. To address this challenge, we present a novel approach
to providing formative feedback to students on programming assignments. Our
approach uses dynamic evaluation to trace intermediate results generated by
student's code and compares them to the reference implementation provided by
their teachers. We have implemented this method as a Python library and
demonstrate its use to give students relevant feedback on their work while
allowing teachers to challenge their students' computational thinking skills.
