Discrete Structures
(adapted from the
Final Report of the Computing Curricula 2001 project,
a joint undertaking of
the IEEE-CS and the ACM)
Discrete structures is foundational
material for computer science. By foundational we mean that relatively
few computer scientists will be working primarily on discrete structures, but
that many other areas of computer science require the ability to work with
concepts from discrete structures. Discrete structures includes important
material from such areas as set theory, logic, graph theory, and combinatorics.
The material in discrete structures is pervasive in the areas of data
structures and algorithms but appears elsewhere in computer science as well.
For example, an ability to create and understand a formal proof is essential in
formal specification, in verification, and in cryptography. Graph theory
concepts are used in networks, operating systems, and compilers. Set theory
concepts are used in software engineering and in databases. As the field of
computer science matures, more and more sophisticated analysis techniques are
being brought to bear on practical problems. To understand the computational
techniques of the future, today’s students will need a strong background in
discrete structures.
Topics:
- Functions (surjections, injections, inverses,
composition)
- Relations
(reflexivity, symmetry, transitivity, equivalence relations)
- Sets (Venn
diagrams, complements, Cartesian products, power sets)
- Pigeonhole
principle
- Cardinality
and countability
- Propositional
logic
- Logical
connectives
- Truth
tables
- Normal
forms (conjunctive and disjunctive)
- Validity
- Predicate
logic
- Universal
and existential quantification
- Notions of
implication, converse, inverse, contrapositive, negation, and
contradiction
- The
structure of formal proofs
- Direct
proofs
- Proof by
counterexample
- Proof by
contraposition
- Proof by
contradiction
- Mathematical
induction
- Recursive
mathematical definitions
- Counting
arguments
Learning objectives:
- Explain
with examples the basic terminology of functions, relations, and sets.
- Perform
the operations associated with sets, functions, and relations.
- Relate
practical examples to the appropriate set, function, or relation model,
and interpret the associated operations and terminology in context.
- Demonstrate
basic counting principles, including uses of diagonalization and the
pigeonhole principle.
- Apply
formal methods of symbolic propositional and predicate logic.
- Describe
how formal tools of symbolic logic are used to model algorithms and
real-life situations.
- Use formal
logic proofs and logical reasoning to solve problems such as puzzles.
- Outline
the basic structure of and give examples of each fundamental proof
technique
- Relate the
ideas of mathematical induction to recursion and recursively defined
structures.