This Fall I am attending Cornell University in their Masters of Engineering in CS program. To put it gently, I am excited. There is a lot of faculty working in theory and programming languages, and some in formal methods.
I have also decided that I will blog regularly in graduate school. I plan on blogging class notes, mainly to help my own understanding. If it turns out I don’t, I will delete this post and deny everything.
I’ll start by RFC’ing my school plans. First of all, I am interested in logic, formal methods, [functional] programming languages, and systems. The systems interest is mainly as a domain for applying my other interests.
I have made up a putative class schedule Cornell has four semesters per year, one per season. In order of length, shortest to longest, they are: Winter, Summer, Spring, Fall. Here is what I’m currently thinking for Fall:
- Title: Analysis of Algorithms
Methodology for developing efficient algorithms, primarily for graph theoretic problems. Understanding of the inherent complexity of natural problems via polynomial-time algorithms, randomized algorithms, NP-completeness, randomized reducibilities. Additional topics such as parallel algorithms and efficient data structures.
Title: Advanced Programming Languages
A study of programming paradigms: functional, imperative, concurrent and logic programming. Models of programming languages, including the lambda calculus. Type systems, polymorphism, modules, and other object-oriented constructs. Program transformations, programming logic, and applications to programming methodology.
Title: Topics in Logic
This course will focus on intuitionistic logic, including (1) its relationships to classicial logic, some “intermediate logics” between intuitionistic and classical, and a modal logic. We’ll consider (2) both proof-theoretic and model-theoretic characterizations of the consequence relations for these logics, (3) algebraic/topological (and time permitting, categorial) characterizations of intuitionistic consequence. (4) We’ll also look at how certain mathematical theories have been developed on the basis of intuitionistic logic.
Algorithm Design and Programming Languages are supposed to be mathematically intensive; Topics in Logic should be less so (it is an undergraduate course, after all, and it’s cross-listed with Philosophy).
Update 23 August: Added longer MATH 482 description.