Need: The ability to predict the behavior of program code through mental execution and symbolic logical reasoning, without actually running the code on concrete inputs, is a hallmark of effective programmers. By learning to predict program behavior, students will be able to develop high quality software. Use of an automated online tool to aid students in reasoning can make the results reach a wider audience.Guiding questions: What difficulties do learners face in reasoning about code and why? Do the answers vary among different student populations? What kinds of difficulties can be overcome effectively through automated interventions?Outcomes: Automated tools have been developed and deployed at multiple institutions. Students responses in an online medium contain actionable information for providing feedback and tutoring. Automated tool can improve qualitative answers concerning overall purpose of a given piece of code. In reasoning about conditional code, while the performance of all subpopulations improved, the manner of qualitative answers differed. Results from the project also include analysis of student verbalizations of reasoning.Broader impacts: The project involves students at an HBCU, a Hispanic-Serving Institution, and a public university to ensure the outcomes are broadly applicable. For all student populations, performance on reasoning about code behavior improved with the aid of instruction and an online reasoning tool. A key implication is that it is possible to teach symbolic reasoning about code behavior to all beginning computer science students.
Jason O. Hallstrom, Florida Atlantic University; Joseph E. Hollingsworth, Rose-Hulman Institute of Technology; Eileen T. Kraemer, Clemson University; Yu-Shan Sun, Clemson University; Gloria Washington, Howard University