Programming languages focus area
Students interested in the area of programming languages should first take CS 536 and CS 538 (when offered). The former provides an introduction to compilers and to programming-language implementation techniques. The latter provides an introduction to the theory and design of programming languages. The graduate courses in the area are CS 701, 703, 704, and 706. CS 701 is the graduate compiler course. It covers program analysis, optimization, and code generation. CS 704 covers graduate-level topics in the theory of programming languages, including lambda calculus, functional languages, semantics, type theory, and abstract interpretation. CS 706covers analysis of software-engineering artifacts that arise through specification, implementation, testing, debugging, and maintenance. Occasionally, CS 703 or a section of CS 838 will be offered to cover a selection of advanced topics. For the Ph.D. qualifying exam, CS 536, 701, 704, and 706 are recommended.
Computer security focus area
In Spring 2015, we will have a security focus area. Students interested in it should probably take CS 642 and, when it is offered, the security CS 838 course.