Course Overview

Introduction to theoretical computer science including formal languages, automata theory, Turing machines, and computability

 

If you liked the argument about why no computer can solve certain problems in finite time, such as the halting problem and various tiling problems, then this course could be of interest to you.

For undergraduates and those interested in entering a graduate CS program: an important fact about this course is that atleast 30% of the questions in the GRE subject test in CS are taken from the material of this course.

The course will cover fundamental questions about the nature of automation, models of computation, computability, and how to classify problems by their computational complexity, simply by looking at their formal description. The answers to these questions form the very foundations of computer science, from programming language principles, to algorithm design. Furthermore, the study of complexity and information is increasingly recognized as a fundamental area of Mathematics and is a key ingredient in the study of chaotic and self-organizing phenomena in Physics and the Natural sciences. See Grad school catalog for a the catalog description of course.

Note that while COP3530 Data Structures and algorithms is listed as an official prerequisite, and it helps if you had this prerequisite, on the other hand, if you are a mathematics major or have mathematical maturity, and have had basic discrete mathematics and liked it, you can talk to Prof. Sitharam and it is quite possible that you may be excused from the prerequisite.