EPL: Resource List
There is no required course text. The following three resources are recommended reading to supplement the course materials. Specific reading suggestions are listed along with the lectures below.
- Practical Foundations for Programming Languages (PFPL2), second edition, by Robert Harper (Cambridge University Press 2016). Both editions of the book are available electronically through the library, and there are print copies of the first and second editions in the library. A draft of the second edition is also available on the author's webpage; some chapter references may differ between the two editions.
- Concepts in Programming Languages (CPL), by John Mitchell (Cambridge University Press). Also available at no cost through the University Library's ebook access.
- Martin Odersky and Tiark Rompf, Unifying functional and object-oriented programming with Scala, Communications of the ACM, Vol. 57 No. 4, Pages 76-86
Other useful books on programming languages include:
- Types and Programming Languages, by Benjamin Pierce (MIT Press). In the University Library.
- Essentials of Programming Languages, by Friedman and Wand (MIT Press) presents programming languages via a series of interpreters (in Scheme). In the University library (including electronic access).
- The book Functional Programming in Scala by Chisuano and Bjarnason and is a well-written introduction to functional programming in Scala (targeted at mainstream programmers, not academics), similar to the way we will mostly be using it in this course. In the University library.
The following are some historically-influential papers on programming languages, and may be of interest to students interested in pursuing further study of programming languages.
- Peter J. Landin. The next 700 programming languages. Communications of the ACM, 9(3):157-166, March 1966.
- John C. Reynolds. Definitional interpreters for higher-order programming languages. Higher-Order and Symbolic Computation, 11(4):363-397, 1998.
- Robin Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17:348-375, August 1978.
- Gordon Plotkin. Call-by-name, call-by-value, and the λ-calculus. Theoretical Computer Science, 1:125-159, 1975.
- John C. Reynolds. Towards a theory of type structure. In Colloque sur la Programmation, Paris, France, volume 19 of Lecture Notes in Computer Science, pages 408-425. Springer-Verlag, 1974.
- C. A. R. Hoare. An axiomatic basis for computer programming. Communications of the ACM, 12(10):576-580 and 583, October 1969.
- John Hughes. Why functional programming matters. From "Research Topics in Functional Programming" ed. D. Turner, Addison-Wesley, 1990, pp 17-42.
License
All rights reserved The University of Edinburgh