15-819 Objects and Aspects: Language Support for Extensible and Evolvable Software

Fall 2004 (classes begin September 13)
Mondays/Wednesdays 1:30-2:50pm
Wean Hall 4601
12 credits
Professor Jonathan Aldrich

Object-oriented and aspect-oriented languages are relatively new programming technologies that claim to help engineers extend and evolve software more effectively. This seminar will look at recent research developments in objects and aspects, evaluating systems with respect to key criteria:


Schedule


Date
Topic
Paper(s)
Presenter
Slides
Sept 13
Introduction/Just Enough Type Theory
Featherweight Java: A Core Calculus for Java and GJ (first 11 pages)
Aldrich
intro.ppt fj.ppt
Advanced Object-Oriented Constructs

Sept 15
Prototypes
Self: the Power of Simplicity Aldrich
self.ppt
Sept 20
Multi-methods
Object-Oriented Multi-Methods in Cecil Bierhoff
multi-methods.ppt
Sept 22
OO & Functional PLs
Modular Typechecking for Hierarchically Extensible Datatypes and Functions Reed
eml-talk.ppt
Sept 27
Mixins
Modular Object-Oriented Programming with Units and Mixins Licata
unix-mixins.ppt
Sept 29
The Scala Language
Read one of the Scala overview, introduction, or browse the web site Malayeri
scala.ppt
Object-Oriented Type Systems
Oct 4
F-Bounded Polymorphism
Constraint-Based Polymorphism in Cecil: Towards a Practical and Static Type System Licata
(none-blackboard presentation)
Oct 6
Family Polymorphism and Nested Inheritance
Read either Family Polymorphism or Scalable Extensibility via Nested Inheritance Voronenko
family-polymorphism.ppt
Oct 11
Typestate
Typestates for Objects Abi-Antoun
typestates.ppt
Oct 13
Ownership
Ownership Domains: Separating Aliasing Policy from Mechanism
Krishnaswami
ownership.pdf
Oct 18
Comparison of Techniques
(none)
Aldrich
part-one-discussion.ppt
Oct 20
OCaml - Row Polymorphism
A Polymorphic Type System for Extensible Records and Variants
Krishnaswami
rows.pdf
Oct 22
Data Groups
Using Data Groups to Specify and Check Side Effects Aldrich
data-groups.ppt
Oct 25-Nov 5: No class - OOPSLA and FSE
Aspect-Oriented Programming
Nov 8
AspectJ
An Overview of AspectJ Hauert
aspectj.ppt
Nov 10
CaesarJ
Variability Management with Feature-Oriented Programming and Aspects Rister
caesar.pdf
Nov 12
Hyper/J
Separating Features in Source Code: An Exploratory Study Fairbanks
hyperj.ppt
Nov 15
Aspects in Practice Large-Scale AOSD for Middleware Jabes
aop-middleware.ppt
Nov 17
Aspect-Aware Interfaces (to be distributed in class)
Berendeyev
aop-interfaces.ppt
Nov 22
Modular Analysis for Aspects Verifying Aspect Advice Modularly Licata
(none-blackboard presentation)
Nov 24: No class - Thanksgiving holiday
Nov 29
Modules for Aspects
A Formal Model of Modularity in Aspect-Oriented Programming
Aldrich
open-modules.ppt
Dec 1
AOP in evolving OS code
Using AspectC to Improve the Modularity of Path-Specific Customization in Operating System Code
Hauert
AspectC.ppt
Dec 6
Verifying Object Invariants
Object Invariants in Dynamic Contexts
Aldrich
object-invariants.ppt

Dec 8
Wrap-up

Aldrich

References:

Prerequisites

This course is open to all SCS graduate students, and to advanced undergraduate students who have taken 15-312 or have the instructor's permission.

Requirements

Students will be required to read a paper (sometimes 2) from the research literature for each class, to participate in class discussion, and to prepare a presentation and lead the discussion for 1 or 2 class periods.