Software development based on the reuse of object-oriented components has the potential to improve the reliability of software products, but to realize this potential, software developers must be able to develop high quality software components, and be able to reason about their correctness. Introduction of formal reasoning in education will enable students to learn both how to develop correct programs and to understand why their programs are correct. This project is inculcating and amplifying principles and applications of reasoning in computing across the curriculum through the development of collaborative learning tools for three undergraduate courses: an introductory programming course, a data structures and algorithms course, and a software engineering course. Through these courses, the PIs are teaching reasoning across the curriculum by engaging students through a computer-aided, collaborative approach.
In the Collaborative Reasoning paradigm, teams of students are involved in problem solving. This learning model is being enhanced with systematic feedback cycles, rapid and delayed, from both humans and automated assistants, using a Collaborative Reasoning Workbench. Systematic feedback gives structure to the reasoning process. Rapid feedback can make learning immediate and exciting for students, yet delayed feedback may be more meaningful in some problem-solving contexts. The Workbench can be tuned to provide either type of feedback, and it includes a set of exercises and "reasoning assistants" to guide students both inside and outside of the classroom.