This project aims to serve the national interest by improving undergraduate learning of software testing concepts. Software testing is a critical skill that computer science students must acquire to be successful software designers. Well-tested software has higher quality and is easier to use. This project aims to improve teaching of software testing, using an approach that enables students to construct and reconstruct their own knowledge. Rather than just providing students with feedback about testing errors, the tool will use an inquiry-based approach to guide student learning. It is expected that this approach will help students learn fundamental concepts about testing in a way that enables them to transfer their knowledge to future software development activities, including in their professional careers. The overall goals of the project include to: increase undergraduate computer science student learning regarding software testing; improve the overall programming skills of computer science students; and provide instructors with an approach that integrates well into existing classroom structures. <br/><br/>To address the goals stated above, the project will develop an online tool, the Software Testing Tutor, as well as pedagogy to increase student learning about software testing. The tool will analyze student solutions to identify the underlying concepts with which a student needs more practice. It will then provide students with suggestions to help them initiate their own learning process about those concepts. The Software Testing Tutor will provide two interaction modes: Learning Mode and Development Mode. In Learning Mode, it will coach a student on how to develop a complete test suite for a reference program implementation. In Development Mode, it will help a student develop a complete test suite for newly written code. The Software Testing Tutor will use a combination of instructor test cases annotated with the fundamental concepts exercised by the case and reference implementations of the programs. Instructors can select resources to implement in their course from the repository project-developed cases or develop their own annotated test cases. The project will use surveys and interviews of students and faculty to study improvements in student learning, explore the most appropriate scaffolding for different class levels, and study how to integrate the pedagogy into existing curricula. The expected contributions of this project include: (1) an increase in student learning about software testing; (2) improved student programming skills; (3) increased student engagement with the inquiry-based learning embedded in the Testing Tutor pedagogy; and (4) positive student and instructor experiences using Software Testing Tutor. This project is supported by the NSF Improving Undergraduate STEM Education: Education and Human Resources Program, which supports research and development projects to improve the effectiveness of STEM education for all students. Through the Engaged Student Learning track, the program supports the creation, exploration, and implementation of promising practices and tools.<br/><br/>This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.