CS 340 Discrete Structures for Engineers (4)
Description
A one-term introduction to discrete structures with applications to computing problems. Topics
include sets, relations, functions, counting, graphs, trees, recursion, propositional and predicate
logic, proof techniques, Boolean algebra. The course may not be used as part of the degree
requirements for the BS degree in Computer Science.
Prerequisites
CS 163 Data Structures, Mth 252 Calulus II.
Goals
To obtain those skills in discrete mathematics and logic that apply to computing problems in engineering.
Upon the successful completion of this course students will be able to:
- Describe basic properties of sets, bags, tuples, relations,
graphs, trees, and functions.
- Perform traversals of graphs and trees; construct simple
functions
by composition of known functions; determine whether simple functions
are injective, surjective, or bijective.
- Describe the concepts of countable and uncountable sets, and
apply
the diagonalization method to construct elements that are not in
certain countable sets.
- Construct inductive definitions for sets and construct recursive
definitions for functions and procedures.
- Determine whether a binary relation is reflexive, symmetric, or
transitive and construct closures with respect to these properties.
- Use elementary counting techniques to count simple finite
structures that are either ordered or unordered and to count the worst
case number of comparisons for simple decision trees.
- Find closed form solutions for simple recurrences using the
techniques of substitution, cancellation, and generating functions.
- Demonstrate standard proof techniques and the technique of
inductive proof by writing short informal proofs about simple
properties of numbers, sets, and ordered structures.
- Apply the properties of propositional calculus to: determine
whether a wff is a tautology, a contradiction, or a contingency;
construct equivalence proofs; and transform truth functions and wffs
into conjunctive normal form and disjunctive normal form.
- Write formal proofs in propositional calculus and first-order
predicate calculus.
- Apply the properties of first-order predicate calculus to:
determine whether a wff is valid, invalid, satisfiable, or
unsatisfiable; construct equivalence proofs; and transform first-order
wffs into prenex conjunctive or disjunctive normal form.
- Construct partial correctness proofs of simple imperative
programs and construct termination proofs for simple loops.
- Apply algebraic properties of Boolean algebra to simplify Boolean
expressions.
Topics Covered
- Structures: sets and bags, ordered structures (tuples, lists,
strings, products, relations), graphs and trees, functions
(constructions, properties), countability.
- Recursion: inductively defined sets, recursively defined
functions and procedures.
- Binary Relations: properties, equivalence, partial orders.
- Proof Techniques: direct and indirect proof, mathematical
induction, well-founded induction.
- Analysis Techniques: closed forms, counting permutations and
combinations, solving recurrences.
- Logic: propositional calculus, formal reasoning, first-order
predicate calculus, equivalence, quantifier inference rules, program
correctness.
- Boolean Algebra.
Textbook
Hein, J. L., Discrete Structures, Logic, and Computability,
Second Edition. Jones and Bartlett, 2002.
Study Information
- Additional solved problems are contained in:
Hein, J. L., Student Study Guide for Discrete Structures, Logic, and Computability, Second Edition.
Jones and Bartlett, 2003.
- Some sample exam questions for the course are at
CS 340 Sample Exam Questions.
- Slides of lecture notes are at
CS 340 Lecture Notes.
Course Information
Course Facts (Spring 08)
Assignments (Spring 08)