Randomization and Approximation Techniques in Computer Science