# Introductory Discrete Mathematics for Computer Science

This is the first of two discrete math subjects for students of Computer Science at Wikiversity. The second course is called Discrete Mathematics for Computer Science. This page is tailored to provide you with introductory topics and problems in discrete mathematics. It is a prerequisite for Analysis of Algorithms, which is fundamental to any computing practices that require optimal performance in the face of limited resources. Donald Knuth is a famous computer scientist and mathematician who has written numerous papers and a textbook on discrete mathematics.

Discrete mathematics is the part of mathematics devoted to the study of discrete (i.e. distinct) objects. In general, it is used whenever objects are counted, when relationships between finite (or countable) sets are studied, and when processes involving a finite number of steps are analyzed. It is important for computer science because in computing machines, information is stored and manipulated in a discrete fashion.

## Problems Sets

 Logic, Proofs, and Mathematical Reasoning (Solutions, Code) Sets, Functions, Big-O, Rates of Growth (Solutions) Recursion and Induction (Solutions, Code) Induction and Recurrence Equations (Solutions) Combinatorics and Counting (Solutions, Code) Combinatorics and Discrete Probability (Solutions, Code) Generating functions, Number Theory, Cryptography (Solutions, Code)

## Exams

 Exam 1 Exam 2 Exam 3 Final Exam

Exams are open notes, as they are in Columbia University's COMS 3203 course in Discrete Mathematics (as of Spring 2009).

## Textbooks

Free textbooks:

You may also buy a copy of the following text, which is used in the Columbia University course: Discrete Mathematics and its Applications, 6th ed. by Kenneth Rosen (book homepage). Schaum's Outline of Discrete Mathematics by Lipschutz and Lipson is another possible resource.

## Online Courses

Art of Problem Solving: