CS 345H: Programming Languages (Honors) Fall 2022

Readings

Towards the end of the semester, we'll read two seminal programming languages papers and discuss them during lecture. For each paper, you'll need to submit answers to a few questions, as well as suggest some discussion questions of your own, before the lecture. Submissions will be via Canvas.

November 29

We'll read and discuss the paper Formal verification of a realistic compiler, Xavier Leroy, in Communications of the ACM, July 2009.

Submit answers to the following questions via Canvas, due November 28 at 6pm:

  1. Give an example of (a) a potential compiler bug that CompCert would prevent, and (b) a potential compiler bug that CompCert would not prevent.
  2. Why is CompCert's register allocator not implemented in Coq? Why is the proof still valid despite this?
  3. Do you think a CompCert-like effort for Java would be easier or harder than for C?
  4. Propose at least two of your own questions you'd like to discuss in lecture. These can be clarifications about the paper, questions about the context for the work, potential extensions and future work, or pretty much anything else you think would be interesting to discuss.

December 1

We'll read and discuss the paper Reflections on trusting trust, Ken Thompson, in Communications of the ACM, August 1984.

Submit answers to the following questions via Canvas, due November 30 at 6pm:

  1. Why is it important that the bug in Stage III be able to reproduce itself?
  2. Do you think an attack like this one would be more practical or less practical today? Would CompCert prevent this attack? Why or why not?
  3. Propose at least two of your own questions you'd like to discuss in lecture. These can be clarifications about the paper, questions about the context for the work, potential extensions and future work, or pretty much anything else you think would be interesting to discuss.