CIS 301 Logical Foundations of Programming
-------------------------------------------------------
1. Prerequisites by topic:
2. Knowledge and skills acquired in this course:
proving propositional logic sequents in the natural deduction calculus
understanding syntax and truth table semantics of propositional logic
developing the ability to apply mathematical induction
proving predicate logic sequents in the natural deduction calculus
understanding the syntax and semantics of predicate logic
verifying the partial, or total, correctness of Hoare triple over a simple imperative core language
computing
insightful invariants for while-statements
converting a propositional logic formula into an equivalent formula in conjunctive normal form and appreciating its complexity
appreciating the concepts of "satisfiability" and "validity" of propositional logic and predicate logic formulas
realizing the significance of soundness and completeness of natural deduction for propositional logic and predicate logic
realizing the impact of the undecidability of validity and satisfiability in predicate logic
understanding the importance of soundness and relative completeness of proof calculi for partial and total program correctness
realizing the significance of the undecidability of the Halting problem
being exposed to a case study of algorithm design and verification