The main goal of the
course is to present some basic facts and
techniques about "counting". We will deal with finite sets and their
subsets, permutations, factorials, binomial coefficients, Pascal's
triangle, the Binomial Theorem, prime numbers and divisors, linear
recurrences (with particular attention to Fibonacci numbers),
generating functions. We will also study some discrete structures such
as graphs and trees, and discuss some classical problems and algorithms
in this setting. Finally, we will discuss some applications of discrete
mathematics to the analysis of certain basic algorithms (e.g. classical
sorting algorithms) and their computational complexity.
