A Game Theoretic Approach to Computer Science: Survey and Research Directions