Logic for Software Development Courses
The purpose of these courses is to help participants use elementary logic to improve software
development. Participants should have some knowledge of software
development. The first course presumes no knowledge of logic. Subsequent courses presume the previous
courses or equivalent background.
While these courses borrow extensively from the book they are not taught directly from it. In the courses some
topics from the book are reordered, changed, or eliminated, and some topics not in the book added. Participants
in each course will receive notes designed specifically for that course. Participants in the first
course will also receive a copy of Elementary Logic for Software Development at the end of the course.
The courses are highly interactive, involve in class practice, and provide opportunity for individualized feedback.
Courses can be customized to address the needs of specific organizations and individuals.
For more information contact me at
L4SD 1: Language Notation and Truth
Length: 4 days
Prerequisites: No knowledge of logic is presumed. Some knowledge of software development is presumed.
Emphasizes using logic to communicate effectively. Covers some purely logical skills
such as being able to find and represent the logical forms of statements and conditions.
As the required logical skills are covered, applications to software development are discussed, such as
being able to:
- Express and clarify problem specifications, data structure definitions, program designs, and documentation,
- Find and eliminate vagueness and ambiguity,
- Translate algorithms expressed in English into pseudocode,
- Use logical English to describe sets, bags, sequences, relations, functions, and other data structures,
- Use truth functions to trace program execution forward and backward, and
- Understand literature that uses logical English and mathematical notation.
L4SD 2: Logical Properties and Tests
Length: 4 days
Prerequisites: Some knowledge of software development and L4SD 1 or equivalent background is presumed.
Emphasizes tests for logical truth, equivalence, implication, and validity. As the required logical skills are
covered, applications to software development are discussed, such as being able to:
- Use logical equivalence to simplify statements, conditions, and program instructions,
- Recognize and reduce vagueness, ambiguity, logical inconsistency, incompleteness, and redundancy in problem
specifications and program designs,
- Recognize arguments and distinguish them from definitions, explanations, and other uses of language, and
- Apply tests of validity and soundness to reasoning about software development.
L4SD 3: Reasoning and Proof
Length: 4 Days
Prerequisites: Some knowledge of software development and L4SD 2 or equivalent background is presumed.
Emphasizes using rules of inference and proof in aid of better reasoning. As the required logical skills are covered,
applications to software development are discussed, such as being able to:
- Construct arguments using rules of inference and facts from specific subjects such as mathematics
and computer science,
- Explain what it means for a problem to be algorithmically unsolvable,
- Describe the halting problem and explain why it is algorithmically unsolvable
- Describe the program equivalence problem and the verification problem and explain what their algorithmic
unsolvability means for software developers,
- Describe the limits of testing as a verification method,
- Give informal proofs of program correctness expressed in English prose,
- Use Floyyd's method to prove the correctness of simple programs, and
- Use rules of inference about assignment and control structures to prove the correctness of simple programs.
Top of Page