CS655: Programming Languages, Spring 2001
Manifest: Tuesday 3 April 2001
Your task today is to design Nutscrape Webigator, a fully-functional web browser. Your design should be as elegant and extensible as possible using the assigned language. The task of the web browser is to display and provide user interactions with different kinds of elements including plain HTML, pictures, buttons (with a click action) and edit controls (that can enter text and have a submit action). In addition, the browser has a menu bar and button bar. Show the general design, and explicitly what happens when the user redisplays the window. You should aim to produce both a high-level design and some examples of real code excerpts. What limitations or difficulties of your assigned language do you have to overcome in your design?
Each group will present their design at the end of class today. The goal of your presentation is to convince Nutscrape that they should use your design and the language assigned to your group to build their next browser.
Your presentation should include:
- A high-level module design for your web browser. Depending on the language, this might have subclassing, subtyping and uses relationships. Your design should focus on taking maximum advantage of the features that distinguish your language from the others.
- A concrete code excerpt for redisplaying all the elements.
- A clear argument explaining why Nutscrape should choose your design and language over the alternatives. What properties of your languae and the design it enabled will lead to a more productive development effort or a more competitive product?
The groups are:
Yuanfang Doris Cai
Weilin Zhong is a "free agent" and will join any short-handed group.
ReadingsRead before Thursday 5 April (handed out today):
Read before Tuesday 10 April (handed out today):
- Barbara Liskov and John Guttag. Abstraction and Specification in Program Development. Chapter 11: A Quick Look at Program Verification. 1986.An introduction to Axiomatic Semantics.
You can't think seriously about thinking without thinking about thinking about something.
- George Necula and Peter Lee. Safe Kernel Extensions Without Run-Time Checking. Second Symposium on Operating Systems Design and Implementation (OSDI '96), October, 1996.You may skip section 3.1. This paper describes proof-carrying code, a practical (?) application of axiomatic semantics. Before 11am Tuesday 10 April, send me a three-line email message on whether on not you think proof-carrying code is useful.
If you're in the penalty area and don't know what to do with the ball, put it in the net and we'll discuss the options later.
University of Virginia
Department of Computer Science
CS 655: Programming Languages