Logical Foundations
Spring 2022
COMP 590/790-132 (Syllabus)
MW 11-12:15
SN011

Instructor

Cynthia Sturton
csturton@cs.unc.edu
FB354
Office Hours: TBD

Course Description

In this course we delve into the theory of programming and program verification. Students will learn the foundational concepts in logic, learn about computer assisted theorem proving, and will learn to use Coq, a proof assistant. Topics covered include: enumerated types; inductively defined types, data structures, and propositions; proof by induction; polymorphism and higher-order functions; relations; Hoare Logic; and the application of the Coq proof assistant to prove program correctness. Classes will be organized around in-class lecture and problem sets. In addition, students will work on a semester-long project developing a proof of correctness of a small program of their choosing.

The COMP 590 is intended for undergraduate students who have taken COMP 301. The COMP 790 is open to all computer science graduate students and satisfies the theory and formal thinking breadth requirement.

Textbooks

The required textbooks are available for free online:
Software Foundations Volume 1: Logical Foundations
Software Foundations Volume 2: Programming Language Foundations

Project

Students will work in groups of 2 on an original research project. At the end of the semester, each group will submit a workshop-quality paper and give a short presentation in class describing their work. A written project proposal will be due roughly five weeks into the semester. We will discuss possible project ideas in class; however, you are encouraged to develop your own ideas.

Key Dates

FDOC: 1/10/20
Project groups formed: 1/26/22
Project proposal due: 2/14/22
Progress reports: 3/9/22
Final proof due: 4/20/22
LDOC, Final paper due: 4/27/22
Final presentations: 5/6/22

Grading

Participation: 15%
Assignments: 50%
Project: 35%