CS 340 Discrete Structures for Engineers

Credit Hours: 4
Course Coordinator: Jim Hein
Course 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, Math 252.
Prerequisites: Data Structures and Calculus II
Goals: 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.
Textbooks: Discrete Mathematics, Second Edition, by James L. Hein. Jones and Bartlett, 2003.
References: None.
Major Topics:
  • 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.
Laboratory Exercises: None.

CAC Category Credits Core Advanced
Data Structures
Algorithms 0.3
Software Design
Computer Architecture
Programming Languages

Oral and Written Communications: None.
Social and Ethical Issues: None.
Theoretical Content: The entire course is theoretical material (discrete mathematics and logic).
Problem Analysis: The exercises and tests require problem analysis to find out which tools of discrete mathematics or formal logic are needed to solve a problem.
Solution Design: The exercises and tests require students to solve problems by applying the tools of discrete mathematics or formal logic.