Theoretical Computer Science
Theoretical computer science is a branch of computer science that focuses on the use of mathematical techniques to understand the characteristics of computation, to design and analyze algorithms for problems that can be used in many applications and semantics of programming languages.
Discrete mathematics used for language operations, language equations and connections with morphisms, monoids, combinatorics on words and codes.
Analysis of Algorithms
Theoretical computer science is a branch of computer science that focuses on the more abstract, logical and mathematical aspects of computing, such as the theory of computation, analysis of algorithms, and semantics of programming languages.