Computational Complexity, Introduction - Discrete Mathematics