University of Virginia, Department of Computer Science
CS655: Programming Languages, Spring 2000

Manifest: Tuesday, 15 February 2000
Assignments Due
Wednesday, 16 Feb Project Proposals
Thursday, 17 Feb in class Elevator Speeches
Monday, 21 Feb 11:59pm Position Paper 2: An Array of Arrays
Monday, 28 Feb 11:59pm Position Paper 3: CLUs about Ada


Read before Thursday's class (handed out today):

· Bjarne Stroustrup. What is "Object-Oriented Programming"?. Proceedings of the First European Software Festival, 1991 revised version.
The object of reading this paper is for you to think objectively about whether or not you object to Stroustrup's possibly objectionable definition of object-oriented programming. Read his section 3 with a critical eye - how many of his complaints about data abstraction facilities are solved by languages with good support for data abstraction (such as CLU)? Does his definition of an abstract type (he prefers "user-defined type") bely a prejudice or a lack of understanding? His description of an exception mechanism that resembles the ones found in Clu (sic) either is incorrect or assumes a very loose definition of resembles (we'll return to this later, after reading a paper on CLU's exception mechanisms).

You should be able to find at least two bugs or serious deficiencies in his example programs. (Despite all these flaws, its a good paper summarizing the language features that enable object-oriented programming.)

· Daniel Ingalls. Design Principles Behind Smalltalk. BYTE Magazine, August 1981.
This paper presents a starkly different view of what object-oriented programming is all about from the Stroustrup paper. Twenty years later, typical programmers are still using languages far further from natural thought processes than Smalltalk-80. How do you think the Smalltalk designers think about their Natural Selection property today?

Read sometime this week (handed out today):
· Raymie Stata and Martin Abadi. A Type System for Java Bytecode Subroutines. POPL '98.
Make sure to read and understand complete Sections 1-4 (you'll need to understand this well to do Problem Set 3, will be handed out Thursday). You should attempt to read the rest of the paper, but don't worry if you don't understand everything in Sections 5-7. This is a recent paper in the premier theoretical programming languages conference - if you succeed in understanding it, you should consider this a major accomplishment, pat yourself on the back, and enjoy the beverage of your choice. (And then get back to working on your project.)

Read before Tuesday 22 Feb:

· Barbara Liskov and Jeannette Wing. Behavioral Subtyping Using Invariants and Constraints. CMU-CS-99-156 (based on November 1994 ACM TOPLAS paper.)

A challenging, but worthwhile paper. As you read it, attempt to relate their rules for subtyping to the programming problem they are trying to solve: making programs written without knowledge of all possible subtypes work as expected with new subtypes.

  • What is data abstraction?
  • What programming language mechanisms are necessary to support data abstraction?
  • How to reason about data abstraction implementations using Abstraction Functions and Rep Invariants.
  • What is rep exposure?

CS 655 University of Virginia
CS 655: Programming Languages
Last modified: Mon Feb 26 12:48:24 2001