Applying Mathematical Reasoning throughout the CS Curriculum

advertisement
Jason Hallstrom (Clemson), Joan Krone (Denison), Joseph E.
Hollingsworth (IU Southeast), and Murali Sitaraman(Clemson)
This workshop is funded in part by NSF grant
DUE-1022941
Goals
 Reasoning Across the Curriculum
 Not just in Discrete Math
 Fundamental part of CS
 Motivating example: binary search “proven” correct
 Supporting Tools
 Supporting Methods
 Applicable to both large universities and small
colleges
2
Partners
 Alabama
 Clemson
 Cleveland State
 Denison
 Depauw
 IU Southeast
 Ramapo College
 Virginia Tech NVC
 Western Carolina
3
What reasoning skills are necessary?
Concept Inventory
Boolean Logic
Standard Logic Symbols, Standard
Proof Techniques
Discrete Math Structures
Sets, Strings, Numbers, Relations, and
other mathematical theories as needed
Precise Specifications
Mathematical Descriptions of Software
interfaces for clients and implementers.
Math models for structures
Pre and Post conditions for operations.
Modular Reasoning
Each Module needs to be proven correct
only once.
Verification Conditions
Mathematical Assertions equivalent to the
correctness of the program.
Correctness Proofs
Application of Proof Techniques to the
program
Why?
 Current software is too large for one person to
understand.
 Students need tools for dealing with all sizes of
projects.
 Maintenance makes up the majority of jobs.
 Students need to separate specifications from
implementations.
Courses at All Levels
 Beginning level: CS110 – Intro to Programming,
CS174 – Discrete math at Denison, (others –
CPSC101 – CSI, CPSC102 – CS2, Discrete Math at
Clemson)
 Use of collaborative approach
 Use of specifications
 Reasoning assistant tool
6
 Intermediate level: CPSC215 – Software
Foundations, (others: CPSC212 – Data Structures)
at Clemson
 Contract specifications – comparing informal specs
with formal specs
 Mathematical modeling – abstraction
 Generating test data from specs
 Reasoning assistant tool
7
 Advanced level: CS373 – Theory of Programming
Languages and CS349 – Software Engineering at
Denison, CP372 – Software Engineering at Clemson
 Formal specifications
 Proofs
 VC generator tool
 Contract based team development using RESOLVE
compiler
8
All Levels
 Collaborative Approach
 Pairs or small groups
 In class or homework
9
Collaborative Method
 Pairs or small groups
 With or without tools
 Each team presents their findings
 Collaboration both within teams and among teams
10
Selective Adaptation
 Pick and choose appropriate reasoning concepts
and/or tools
 Faculty expertise
 Student background
11
One Example: Software
Engineering Course
 Usual Topics
 Requirements analysis
 Design and specification
 Component-based implementation
 Quality assurance
 Formal Reasoning
12
Objectives
 Read formal specifications
 Create test points from the specs
 Use component specifications to build larger
systems
 Work in teams
 Carry out formal verification of components
 Use automated rules
13
Methods
 Collaborative learning
 Teams of 2 to 4 members
 Read specs
 Implement specs
 Verify implementations
 Build larger systems.
14
Using the Tools
 http://www.cs.clemson.edu/group/resolve
15
Summary
 Importance of Reasoning across the Curriculum
 Tools to Support Reasoning
 Collaborative Pedagogy includes collaboration
between students and between students and faculty
16
Some Work
 Binary search specifications
 Java
 C++
 Any other language
 Are the algorithms correct?
 Do the implementations work?
 What’s the difference?
Download