Theory of Computation Track

Students in the Theory of Computation track use the tools of mathematics to study computing.  This can be as practical as finding the best algorithms to route messages through networks, or as fundamental as characterization what problems can be solved quickly, or what problems can be solved at all.  The track fits well with a minor or double major in mathematics, and is excellent preparation for graduate study in any area of computer science.


Note that for students graduating by May 2012, if CS 291SP (now called CS 230) has not been taken, then Operating Systems (377) is a required course below.

  • Three required courses:
    • 311 Algorithms
    • 320 Software Engineering
    • 501 Formal Lang Theory
  • Any one course from the following:
    • 377 Operating Systems
    • 445 Information Systems
    • 453 Computer Networks
    • 535 Computer Architecture (or 391IB/335 Inside the Box: How Computers Work)
  • Any two courses from the following:
    • 513 Logic in CS
    • 575 Comb. & Graph Theory
    • 590D Algorithms for Data Science
    • 601 Computation Theory
    • 611 Advanced Algorithms
    • 499T/P or 496 (see note)
    • MATH 411 Int Abstract Alg I
  • Two CS electives numbered 300 or above (not including 305).
  • Note: All course numbers refer to CS courses unless designated otherwise. Only 3 credits of 499T/P OR 496 count toward major requirements, regardless of whether it is listed in the menu. All courses x90-x99 require approval of the Undergraduate Program Director to be applied toward degree.

Students completing the Computer Science BS (or BA) and a Math major or minor will find some helpful advice on this page.