To understand the fundamentals of computer science it is essential for us to begin with study of the related mathematical topics ranging from discrete mathematics, concepts of automata theory and formal languages.