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.
|