UW-Madison
Computer Sciences Dept.

CS 240 - Introduction to Discrete Mathematics, Summer 2007

Projected Course Content

There are a wide variety of topics that we cover in this course. I have listed below the main topics that we will cover, with brief descriptions of each, and a list of sections in the book containing material relevant to each section. I point out that the sections are only a rough guide of when we cover the material from the book. This is because we will be studying many of the topics in a different order than they are presented in the book. In addition, the book contains a copious amount of material - we will be focusing only on the most important. For a better guide as to which parts of the book will be covered in each lecture, see the Course Schedule.

Logic

We begin the course with a brief study of propositional logic. We study how to convert English sentences into mathematical statements, and look at basic ways to reason with these statements. The types of statements we consider in this section are fairly simple, but the rules of reasoning apply in very general settings. For example, the rules of reasoning are used in debates and philosophy in addition to within mathematics.

Sections of the book: 1.1 - 1.5.

Basic Structures

In this section, we introduce a number of different discrete objects, including: sets, functions, relations, sequences, graphs, and trees. We define each of these, see uses of these objects, and give some basic properties of each.

We will prove some of the properties of these objects. Giving proofs of the properties we use is a recurring theme in the course. We develop a variety of proof techniques throughout the course, and we see some of these in this section.

The objects we define in this section serve two purposes for the rest of the course: they give us a "mathematical language" to use, and many of the techniques that we cover in the rest of the course are naturally applied to these discrete objects.

Sections of the book: 2.1-2.4, 3.8, 8.1, 9.1-9.3, 10.1.

Algorithms

A key concept in computer science is that of an algorithm: a list of instructions to perform a given task. In this section, we introduce the concept of an algorithm and work through some key examples. The algorithms will generally operate on one of the basic structures introduced in the last section.

For each algorithm, we consider two key properties. The most important is that of correctness - that the algorithm actually performs its intended task. We learn how to give correctness proofs for algorithms. The second important property of an algorithm is its efficiency - how much time does it take to complete. We introduce techniques used to analyze the running time of algorithms.

Sections of the book: 3.1-3.3, 9.4, 10.2-10.3.

Recursion and Induction

In the section on algorithms, we gave some simple algorithms. There are a variety of advanced techniques that can be used to design algorithms. In this section, we introduce one of these - recursion. We define what we mean by recursion and give examples of algorithms using recursion.

We revisit the tasks of proving correctness and determining efficiency for the case of recursive algorithms. For each of these tasks, we introduce the "Proof by Induction" proof technique. This proof technique is widely used throughout Computer Science and Mathematics. We give additional applications of induction proofs, including proving the correctness of summation formulas. We also introduce some other techniques for determining the running time of recursive algorithms.

Sections of the book: 4.1-4.5, 2.4, 7.1, 7.3.

Probability Theory and Counting

We introduce probability theory for discrete sample spaces. Applications of probability theory include (among others): analyzing randomized algorithms, determining probabilities of failure/success for various kinds of randomized experiments, and existence proofs.

We introduce various counting techniques to compute probabilities when dealing with discrete objects. These counting techniques are also interesting on their own for counting discrete objects (for example, how many different ways are there to ...).

Sections of the book: 5.1-5.4, 6.1-6.4, 7.5.

Integer Arithmetic

In this section, we study the integers and their properties. We begin by looking at the efficiency of basic integer operations such as multiplication and division. We introduce modular arithmetic. We first look at modular arithmetic as an example of an equivalence relation, and then look at its other properties. We conclude by giving a famous example that uses many of these properties - RSA public-key cryptography.

Sections of the book: 3.4-3.8.

 
Computer Sciences | UW Home