Theoretical Computer Science (TCS) is a subset of computer science that focuses on the more abstract, mathematical aspects of computing. Its main purpose is to understand the nature of computation, to provide rigorous frameworks for designing and analyzing algorithms, and to determine the inherent limitations of efficient computation. Common sub-topics include algorithms and data structures, complexity theory, automata theory, cryptography, and other mathematical models of computation.
Theoretical Computer Science is a broad topic and courses of it have different prerequisites based on the specific topic. Common background requirements include Computer Programming, Probability Theory and Statistics, and Linear Algebra.