Using Hard Problems to Create Pseudorandom Generators, Acm Distinguished Dissertation