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?