CS 541 Lecture -*- Outline -*- * Research Directions ** Language Design *** Multiple inheritance how to resolve conflicts *** Modularity vs. inheritance *** Type checking (subtyping) vs. other forms of polymorphism (Read Cardelli) semantic models (what is a subtype?) *** Functional + Object-Oriented? *** Classes vs. Prototypes ** Software Engineering *** Subtypes vs. Subclasses *** Specification and Verification of OO programs ** Compilation *** Optimization techniques caching of methods, garbage collection, ... storage layout with multiple inheritance message calling for multiple inheritance *** Static analysis type checking substitution equivalence of program expressions external use internal (within a class) ** Parallelism *** Message passing as a form of concurrency *** Distributed programming e.g., Argus, SR, ...