SE 500
Mathematics for Software Engineering
Fall 2022
Meetings:
Day: Tuesdays
Time: 7:20pm — 10pm (including ten-minute break)
Place: Loyla Science Center 091
Instructor:
Name: Dr. R. McCloskey
Office: Loyola Science Center 191
Telephone: (570) 941-4221 (office),
941-7774 (CS Dept. office), 941-4250 (fax)
E-mail:
robert.mccloskey@scranton.edu
Home Web Page:
http://www.cs.uofs.edu/~mccloske/
Office Hours:
See schedule
Faculty Responsible Employee Statement
CTLE Info:
Services for Students
Textbook:
A Logical Approach to Discrete Math,
by David Gries and Fred Schneider,
published by Springer-Verlag, 1993 or 2010
Supplementary Textbook:
Mathematical Logic for Computer Science,
by Mordechai Ben-Ari, published by Springer, 2012
(available as an e-book using University of Scranton
library web pages; see hyperlink on course web page)
Exams/Assignments:
Homework exercises will be assigned on a more-or-less weekly basis
and there will be a take-home final exam near the end of the semester.
The instructor reserves the right to administer quizzes
(possibly without prior warning) in class.
Grading:
Homework assignments will account for approximately 70% of a
student's grade, the final exam approximately 25%, and
class participation approximately 5%.
Tentative Course Outline:
- Motivation
- software engineering vs. traditional engineering
- the "software crisis"
- formal development of software
- software verification
- software specification
- Mathematical Preliminaries
- mathematical expressions
- notion of state, evaluation of expression in a state
- textual substitution
- inference rules: Substitution and Leibniz
- notion of equality
- function evaluation
- reasoning using the Leibniz rule
- Logic
- Boolean Expressions
- constants, variables, operators
- truth tables
- notions of satisfiability, validity, duality
- translation of informal propositions (i.e., ones
expressed in natural language) to boolean expressions
- Propositional Calculus
- a method of reasoning via calculation on symbols
according to axioms and inference rules
- Inference rules: Substitution, Leibniz, Transitivity, Equanimity
- notions of theorem, theory, consistency, completeness
- axioms and theorems for
- equivalence (e.g., associativity, symmetry, identity,
reflexivity)
- negation (e.g., distributivity over =, double negation)
- inequivalence (e.g., symmetry, associativity)
- disjunction (e.g., symmetry, associativity, idempotency,
distributivity over =)
- conjunction (e.g., symmetry, associativity, idempotency,
De Morgan)
- implication (e.g., contrapositive, distributivity over =,
shunting)
- proof techniques (equational logic approach)
- assuming the antecedant
- case analysis
- mutual implication
- contradiction
- applications:
- Portia's suitor's dilemma (from Shakespeare)
- Existence of Superman
- Alternative approaches to proof
- Resolution
- Natural Deduction
- Quantification
- notions of type and type correctness
- syntax and interpretation of quantification
- notion of free and bound occurrences of variables, scope
of variables
- textual substitution with respect to a quantification
- inference rule Leibniz for quantification
- axioms for quantification (e.g., empty range, one-point rule,
distributivity, range split, nesting, dummy renaming,
split off term)
- Predicate Calculus
- extends propositional calculus by including quantification
and predicates
- notion of predicate
- universal quantification: axioms and theorems
- existential quantification: axioms and theorems
- notions of interpretation, model
- translating informal statements to predicate logic expressions
- Mathematical Induction:
- induction over natural numbers
- induction and well-founded sets
- induction over recursive structures (e.g., lists, trees)
- Relations:
- properties: reflexivity, symmetry, transitivity, asymmetry,
anti-symmetry
- composition, inverse
- Predicates and Programming
- specifying programs via pre- and post-conditions
- Hoare triples
- reasoning about the assignment statement and
sequences of assignments
- calculating parts of right-hand sides of assignments
- reasoning about selection commands (i.e., if statements)
- reasoning about repetition commands (i.e., loops)