CS655: Programming Languages, Spring 2001
The final is oral. You will be assigned a time based according to the sign-up sheet.
The purpose of the final is to put things you have (hopefully) learned in the class in context. You should be able to use specific things you have learned to illustrate general principles. For those of you who will take qualifiers soon, it is also an opportunity to practice doing oral examinations.
At the beginning of the final, you will be asked to comment on this quote from Jim Horning's introduction to the March 1977 issues of Communications of the ACM (previously seen on the 6 March Manifest):Although the five papers in this special issue are based on particular languages, each raises issues that are of more general concern, and worthy of the attention of anyone concerned with reliable software. They were selected on the basis of their quality, but they also provide a good indication of the major themes of the conference as a whole. The programming community must soon come to terms with the topics that they address, including: What are the qualitative and quantitave effects of strong type-checking? How do verification considerations affect language design? What abstraction mechanisms should languages provide? How can security of high-level languages be extended to real-time applications?Your comments should consider how much progress have we made on any of these questions since then. You should either make clear arguments why no real progress has been made or make convincing arguments that substantial progress has been made and that we are better able to answer these questions today than someone could in 1977. You might also comment on whether or not you think the questions he raises are the right ones to raise today, or there are more pressing issues for the programming language community today.
You don't need to address all four of the questions Horning raises, but should address at least one of them. I suggest focusing on: How do verification considerations affect language design? and What abstraction mechanisms should languages provide?.
This is not meant to be a research project. Answer the question based only on what you already have seen in class and in the course readings.
You may use notes for your answer, but you should not be reading them.
I may interrupt your answer to ask for clarifications or question your claims. I may also ask you questions on anything I want, but if you answer the question well, I am likely to limit my questions to issues you introduce.
University of Virginia
Department of Computer Science
CS 655: Programming Languages