Prerequisite: you must earn an A or B in the course.
Pick any one out of the following:
- 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.
You must understand not only the high-level flow of the material but also (unless explicitly told otherwise) the low-level details, as befits a graduate student. You will be tested on your understanding in an oral exam of no longer than one hour. This exam must happen no later than December 1. It's your responsibility to schedule the exam. You must schedule it at least one week in advance.