CS 221. Computational Complexity

    Computational complexity aims to understand the fundamental limitations and capabilities of efficient computation.  For example, which computational problems inherently require a huge running time to solve, no matter how clever an algorithm one designs? This most basic question of computational complexity is now understood to be both extremely difficult and of great importance, as demonstrated by all the attention given to the famous P vs. NP question.... Read more about CS 221. Computational Complexity

    CS 225. Pseudorandomness.

    Efficiently generating objects that ``look random'' despite being constructed using little or no randomness. Connections and applications to computational complexity, cryptography, and combinatorics. Pseudorandom generators, randomness extractors, expander graphs, error-correcting codes,...

    Read more about CS 225. Pseudorandomness.