Upon successful completion of this course students should be able to:
[1] Analyze probabilistic events and randomized processes.
[2] Design algorithms that use randomness, and analyze their performance.
[3] Make use of basic tools such as first and second moment, concentration bounds, balls and bins, birthday paradox.
[4] Describe and apply algorithmic paradigms that rely on randomness like hashing, sampling, sketching, and streaming.