Software is ubiquitous, yet its development remains error-prone. Software defects are expensive to fix and can result in mission failure, infrastructure damage, and loss of life. To avoid another generation of software failure, our students must learn the skills necessary to reason rigorously about the software they develop. This project is developing student exercises to teach principles of mathematical reasoning in multiple courses across the computer science curriculum. Previous results suggest this approach increases student learning and attitude towards analytical reasoning.

Expected outcomes include several web-based learning modules called Reasoning Assistants. These interactive exercises and tutorials allow students to explore software verification, analytical performance, component-based contracts and testing. The reasoning assistants are complemented by a collection of in-class collaborative exercises. Materials are being used and assessed at a diverse set of institutions. Several hundred students and a dozen faculty are expected to participate.

Project Report

Every area of society depends insome ways on computer technology. Hence, it is important for computer scientists to have formal methods of reasoning about software to deal with two critical issues: There must be a precise specification of what software is supposed to do both from the user and the implementer's point of view, and there must be a way to reason about the software to determine whether it is correct. Our project concerns the need for educating future computer scientists to make them ready to face these two requirement for software. We believe that this means we need to figure out what mathematical reasoning skills our students need and what methods are best for teaching those skills not just in one course, but throughout the computer science curriculum. We also must find ways to assess whether our methods are effective. We have addressed the challenge of teaching mathematical reasoning across the Computer Science curriculum by 1. developing a Reasoning Concept Inventory (RCI) which identifies just what topics in mathematical reasoning are necessary for computer scientists. 2. preparing materials for teaching the topics identified in the RCI. 3. holding several workshops at national and regional conferences to share those materials with computer science faculty from a variety of colleges and universities. 4. directing student research in using the materials prepared. 5. using the materials in classes to teach mathematical reasoning. 6. identifying ways to assess the materials, including pre and post tests for classes using our materials. 7. employing collaborative teaching pedagogy to promote understanding of mathematical reasoning concepts. 8. cooperating with partners at Clemson who have developed a web IDE for RESOLVE, a language that incorporates mathematics into a programming language to support mathematical reasoning about programs. Having carried out these eight activities, we do not see our work as complete, but rather as a beginning for strengthening computer science education on a permanent basis. At several colleges and universities, including Clemson, Indiana Universty SE, Cleveland State University, Denison University, and others, we are now using the materials and tools we have prepared and we are continuing to build on those materials and tools to help out students be prepared to employ good reasoning skills. We also continue to share our materials and tools with interested faculty both through the Clemson web IDE and by conducting workshops and tutorials at appropriate conferences.

Agency
National Science Foundation (NSF)
Institute
Division of Undergraduate Education (DUE)
Type
Standard Grant (Standard)
Application #
1020886
Program Officer
Suzanne Westbrook
Project Start
Project End
Budget Start
2010-08-15
Budget End
2013-07-31
Support Year
Fiscal Year
2010
Total Cost
$47,056
Indirect Cost
Name
Denison University
Department
Type
DUNS #
City
Granville
State
OH
Country
United States
Zip Code
43023