Stanford Programming Languages Qualifying Exam Syllabus
The programming languages qual will be based on the following papers. Students taking the exam will be expected to have read and understood this material. If you need more background to read some of the papers, John Mitchell's book Foundations for Programming Languages may be useful as background reading.
Last updated 3/2020.
A Structural Approach to Operational Semantics.
Principal Type-Schemes for Functional Programs.
Luis Damas and Robin Milner.
Proceedings of the Symposium on Principles of Programming Languages, pp. 207-212, 1982.
- Comprehending Monads.
Philip Wadler. Proceedings of the 1990 ACM conference on LISP and functional programming, pp. 61-78, 1990.
- Type Classes in Haskell.
Cordelia Hall, Kevin Hammond, Simon L. Peyton Jones, and Philip Wadler. ACM Transactions on Programming Languages and Systems, vol. 18, no. 2 (1996): 109-138.
A Behavioral Notion of Subtyping.
Barbara Liskov and Jeannette Wing.
ACM Transactions on Programming Languages and Systems, vol. 16, no. 6 (1994): 1811-1841.
Linearizability: A Correctness Condition for Concurrent Objects.
Maurice, Herlihy and Jeannette Wing.
ACM Transactions on Programming Languages and Systems, vol. 12, no. 3 (1990): 463-492.
Automatic Predicate Abstraction of C Programs.
Thomas Ball, Rupak Majumdar, Todd Millstein, and Sriram Rajamani.
In Proceedings of the Conference on Programming Language Design and Implementation,
pp. 203-213, 2001.
Formal Verification of a Realistic Compiler.
Communications of the ACM, 52(7), 107-115, 2009.
Can Programming Be Liberated from the von Neumann Style? A Functional Style and its Algebra of Programs.
Communications of the ACM, vol. 21, no. .8 (1978): 613-641.
MapReduce: A Flexible Data Processing Tool.
Jeffrey Dean and Sanjay Ghemawat.
Communications of the ACM, vol. 53, no. 1 (2010): 72-77.
- Combinatorial Sketching for Finite Programs.
Armando Solar-Lezama, L. Tancau, Ras Bodik, Sanjt Seshia and Vijay Saraswat.
In Proceedings of the Conference on Architectural Support for Programming Languages and Operating Systems, pp. 404-415, 2006.