Skip to content

kevinsullivan/software-logic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 

Repository files navigation

  • Course: CS 4501-001 (16039); CS 6501-008 (20760)
  • Instructor: Kevin Sullivan
  • Place: Web-Based Course (Synchronous)
  • Time: TuTh 11:00AM - 12:15PM

Overview. This combined advanced undergraduate and graduate course will introduce students to constructive logic and its uses for specification and verification of programming languages, in particular, and of software systems, more generally. These tools have proven to be valuable in the production of high assurance software-driven systems ranging from compilers that provably generate correct code, to microprocessors that provably have certain critical correctness properties, to drones that are provably immune to important classes of security attacks.

Prerequisites. The course is open to advanced undergraduates who have take at least one course in theoretical computer science (algorithms, theory of computing, or CS 2102 as taught by Sullivan).

Learning Objectives. Students who take this course will come to understand advanced functional programming, higher-order logic and interactive proof construction; and major applications of these ideas to programming language specification, the specification and verification of programs written in imperative languages, and to the formalization of mathematics. The course uses the Lean Prover as an interactive proof assistant and programming system.

Required Reading (TENTATIVE). Baanen, Bentkamp, Blanchette, Holzel, and Limperg, The Hitchhiker's Guide to Logical Verification, Standard Edition, published online, Oct 12, 2020.

Background Reading. M. Lipovaca, Learn You a Haskell for Great Good!, No Starch Press, 2011. Read through Chapter 6, Section 4, Lambdas.

Grading (TENTATIVE). Course grades will be based on four homework assignments; a semester project; and two exams.

Schedule (TENTATIVE). Roughly speaking we will cover one chapter each week. Here are the section and chapter assignments by date, along with dates reserved for reviews and exams.

Date Section Chapter
Warmup History, purpose, and nature of logic: Watch https://www.youtube.com/watch?v=wOQuW6QFdos&feature=youtu.be
Feb 2 Basics 1. Definitions
Feb 4
Feb 9 2. Backward Proofs (Top-down, type-guided, structured development)
Feb 11
Feb 16 3. Forward Proofs (Bottom-up development)
Feb 18
Feb 23 4. Functional-Logic Programming
Feb 25
Mar 1 Functional Programming 5. Inductive Predicates
Mar 3
Mar 8 6. Monads
Mar 10
Mar 15 7. Meta-Programming
Mar 17
Mar 22 REVIEW
Mar 24 EXAM
Mar 29 Programming Semantics 8. Operational Semantics
Mar 31
Apr 1 9. Hoare Logic
Apr 6
Apr 8 10. Denotational Semantics
Apr 13
Apr 15 Mathematics 11. Logical Foundations
Apr 20
Apr 22 12. Basic Mathematical Structures
Apr 27
Apr 29 13. Real and Rational Numbers
May 4
May 6 REVIEW
May 15 EXAM 9AM-12PM or Takehome TBD

About

UVa CS Software Logic, Spring 2021

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published