Rough syllabus


1 The Foundations: Logic and Proofs
1.1 Propositional Logic
1.2 Propositional Equivalences
1.3 Predicates and Quantifiers
1.4 Nested Quantifiers
1.5 Rules of Inference
1.6 Introduction to Proofs
1.7 Proof Methods and Strategy

2 Basic Structures: Sets, Functions, Sequences and Sums
2.1 Sets
2.2 Set Operations
2.3 Functions
2.4 Sequences and Summations


3 The Fundamentals: Algorithms, the Integers, and Matrices
3.4 The Integers and Division
3.5 Primes and Greatest Common Divisors
3.6 Integers and Algorithms
3.7 Applications of Number Theory


4 Induction and Recursion
4.1 Mathematical Induction
4.2 Strong Induction and Well-Ordering
4.3 Recursive Definitions and Structural Induction
4.4 Recursive Algorithms


5 Counting
5.1 The Basics of Counting
5.2 The Pigeonhole Principle
5.3 Permutations and Combinations
5.4 Binomial Coefficients
5.5 Generalized Permutations and Combinations
5.6 Generating Permutations and Combinations (?)


6 Discrete Probability
6.1 An Introduction to Discrete Probability
6.2 Probability Theory
6.3 Bayes’ Theorem
6.4 Expected Value and Variance


7 Advanced Counting Techniques
7.1 Recurrence Relations
7.2 Solving Linear Recurrence Relations (?)
7.3 Divide-and-Conquer Algorithms and Recurrence elations
7.4 Generating Functions (?)
7.5 Inclusion-Exclusion
7.6 Applications of Inclusion-Exclusion


8 Relations
8.1 Relations and Their Properties
8.2 n-ary Relations and Their Applications
8.3 Representing Relations
8.5 Equivalence Relations
8.6 Partial Orderings


9 Graphs
9.1 Graphs and Graph Models
9.2 Graph Terminology and Special Types of Graphs
9.3 Representing Graphs and Graph Isomorphism (?)
9.4 Connectivity
9.5 Euler and Hamilton Paths
9.6 Shortest-Path Problems


10 Trees
10.1 Introduction to Trees
10.2 Applications of Trees
10.3 Tree Traversal
10.4 Spanning Trees
10.5 Minimum Spanning Trees (?)

Coverage of sections followed by (?) depends on our overall progress