Pick any one out of the following four:
- We should understand fixedpoints better, because they are so central to our understanding of programming. Please read Chapter 7 from the book by Gifford, Turbak and Reistad.
- We will combine two topics into one reading: a formal model for object-oriented languages like Java, and an actual proof of type soundness: here is the paper. You do not need to read the whole thing. Read Sections 1 and 2 and Appendix A. I do encourage you to read Section 3 and the part of Section 4 before 4.1these will help you appreciate how programming language research can improve the design of existing languages. As for Appendix A, you do not need to read all the low-level details, but you should understand the overall flow of the proof (most conventional type soundness proofs have the same structure).
- Let's examine how programming language theory can help us make technical distinctions between programming languages that a formal languages course tells us have the same expressive power (namely, Turing-completeness). Here's the paper.
- To understand the theory of automata on infinite words, read this paper by Moshe Vardi. For this course, you only need to read through the end of section two (on page 16).