CS/Math 223
Instructor: Richard Nau
Office Hours: Office Hours
Discrete Mathematics for Computer Science is a study of many of the finite mathematical structures used in computer science. In particular, the following mathematical structures and topics will be included:
- Sets: Much of mathemaics has its foundations in sets. Sets can and will be used to construct many other mathematical structures using the programming language ISETL (Interactive SET Language). It should be noted that programming languages themselves consist of infinite sets of strings satifying syntax rules.
- Sequences: Programs and computers get a lot of there power by performing the same sequence of operations over and over with slight changes. the result too is a sequence.
- Relations
Realtions correspond to digraphs. A program or flowchart can be regarded as a digraph. The relational data base model is built on the theory of generalized relations.
- Functions. Examples: mathematical functions, user-defined functions in programs, the program itself as a function.
- Graphs. Examples: logic circuits, flowcharts, networks.
- The Predicate Calculus. Programs and computers are very logical. The basic design of the fundamental components of a computer involve boolean logic. Logic is also used to analyze and even prove the correctness of programs. In AI one uses logic and logic programming (e,g, Prolog) to model human problem solving. In Algorithms, not surprizingly, a logical problem, viz. the solvability of a logical expression in conjunctive normal form, is at the heart of showing that so-called hard problems are all equally hard.
- Methods of Proof: direct, exhaustion, indirect (i.e. by contraposition), contradiction, induction.
- Groups. They are basic in such areas as coding theory.
- Infinite Sets. Languages are really infinite sets. In Formal Languages, if we wanted to proof two languages were the same, we would use the same technique as proving two sets were equal. The cardinality (size) of an infinite set can be used to determine classes of languages that cannot be recognized by certain theoretical models of computers.
- Probability. Used to analyze the average performance of algorithms for example. Statistical tests are used to evaluate random number generators. Simulation usually involves generating numbers according to specified probability distributions