1. Department, number and title of course: Computer Science: CS 174, Combinatorics and Discrete Probability 2. Catalog Description: (4 units) Permutations, combinations, principle of inclusion and exclusion, generating functions, Ramsey theory. Expectation and variance, Chebychev's inequality, Chernov bounds. Birthday paradox, coupon collector's problem, Markov chains and entropy computations, universal hashing, random number generation, random graphs and probabilistic existence bounds. 3. Prerequisites: CS 170. 4. Textbooks and/or other required material: M. Mitzenmacher and E. Upfal, Probability and Computing: Randomized Algorithms and Probabilistic Analysis, Cambridge University Press. 2005. 5. Course objectives: Provide familiarity with basic tools in discrete probability and their applications to the design and analysis of randomized algorithms and data structures. Learn how probabilistic ideas and techniques can lead to more efficient and conceptually simpler algorithms for many problems. Develop an understanding of randomness as a computational resource. 6. Topics covered: Events and probability Random Variables, Expectation, conditional expectation Bernoulli, binomial, geometric distributions Program Checking/Polynomial Identities Coupon collector’s problem Variance and moments Markov’s inequality, Chebyshev’s inequality Chernoff bounds, moment generating functions Hoeffding-Azuma inequality Balls and bins, the birthday paradox Routing in a Parallel Computer The Poisson distribution, the Poisson approximation Hashing, Bloom filters Random Graphs The probabilistic method, Lovasz local lemma Markov chains Stationary distributions, classification of states Random walks The Monte Carlo method, Markov chain Monte Carlo Coupling of Markov chains Graph Algorithms: Minimum cut, independent sets, Hamiltonian cycles Randomized algorithms for satisfiability 7. Class/laboratory schedule: Three hours of lecture and one hour of discussion per week. 8. Contribution of course meeting the professional component: This course covers engineering topics. It is 75% science and 25% design. 9. Relationship of course to program objectives: This course requires students to use their fundamental knowledge of mathematics, science, and engineering to analyze and solve computer engineering problems. The students learn to identify, formulate and solve challenging problems. They learn to design a system, component or process to meet desired needs. 10. Prepared by: Professor Alistair Sinclair and Ron Layug, May 23, 2000; updated by: Peter Bartlett, March 28, 2006.