The following is a list of the supplementary readings, organized by topic. Very few of these are required for the class, but you may find some or all of them to be helpful. Where they are available, I've added links to online versions of the papers.
- Inductive Definition and Proof
- Excerpt from R. Floyd & R. Beigel, The Language Of Machines (link, password required)
- Excerpt from R. Harper, Practical Foundations for Programming Languages (draft 2nd Ed.) (link, password required)
- C Programming
- Henning Shulzrinne, C For Java Programmers (link): PDF of slides from a class lecture and an excellent outline of the main things to learn about the language.
- A useful C/C++ language reference
- M. Banahan, D. Brady, and M. Doran, The C Book (book-length tutorial reference).
- Functional Programming
- John Backus, Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs, Communications of the ACM 21(8):613–641, August 1978.
- Java FP Constructs
- "Java 8 Lambda Expressions Tutorial With Examples" (Viral Patel)
- java.util.function package (Java 8)
- Michael Schwartzbach, Polymoprhic Type Inference [link (PDF)]
Luis Damas and Robin Milner, "Principal Type Schemes for Functional
Programs", Proc. of the 1982 ACM Symposium on Principles of
Programming Languages, 207–212.
Showed that Algorithm W discovers the principal type of a program.
Robin Milner, "A Theory of Type Polymorphism in Programming",
Journal of Computer and System Sciences 17,
Type inference was first discovered by Hindley in the 1960s, but its incorporation in ML came from this independently-developed work. The paper introduces the inference algorithm W, and proves both syntactic and semantic soundness of the resulting type system.
- Harry G. Mairson, "Deciding ML Typability is Complete for Deterministic Exponential Time", POPL 1990, 382–401.
- SML Tutorials
- Programming in Standard ML '97 (Excellent though older online tutorial by Stephen Gilmore)
- A Gentle Introduction to ML (A series of eight short lessons by Andrew Cumming. Going through all eight will give you most everything you need to know for this class.)
- Programming in Standard ML (Free textbook by Robert Harper: more difficult to read, but comprehensive, with a nice set of examples)
- Prolog Tutorials
- Learn Prolog Now! (best larger tutorial I've seen)
- Anthony Aaby's notes (plagiarized on about a dozen sites)
- John Fisher's tutorial (better emphasis on practical programming considerations)
- Misc. Resources
- Ulle Endriss, An Introduction to Prolog Programming (another good tutorial book)
- The λ Calculus
- Lawrence Paulson, Foundations of Functional Programming
- Peter Sestoft's Lambda Reducer web page.
Richard P. Gabriel, The Why of Y (PDF).