CS 8803G Object-Oriented Systems and Languages
Fall 2002, T-Th 4:35-5:55PM, CCB 102
Basic Information:
- Instructor: Yannis Smaragdakis, CCB 215, 404-385 1491
- Syllabus
Lectures Outline
(Course notes, homeworks, etc. not available online. E-mail me for them)
Intro
- Java/C++ comparison and design critique (2 lectures)
- Design patterns overview and critique (2+ lectures)
Design and SE topics
- Language extensibility, reflection, meta-programming, meta-object
protocols. CLOS MOP, SOM, Open C++. (2 lectures)
- Aspect Oriented programming, AspectJ (1+ lectures)
- Elements of Concurrent programming for use in HW 2 (1- lecture)
- Subject-Oriented programming + HyperJ, Adaptive Programming + Demeter
(1 lecture)
- Layered design, mixins, mixin layers (1 lecture)
Language Implementation topics
- Object layout and runtime issues (2+ lectures)
- Dynamic dispatch, optimizations, interface dispatch in Java (2+ lectures)
- Garbage collection (2 lectures)
Language Design and Type System topics
- Type system survey (2+ lectures)
- Genericity mechanisms in programming languages, Java genericity (2
lectures)
Other topics (not in-order--may be covered at any time throughout the semester)
- Java/C# comparison (1 lecture)
- OO middleware (1 lecture)
Student Presentations of Research Papers
- Seung: "Space and Time-Efficient Implementation of the Java Object
Model" from ECOOP'02
- Namgeun: "Cyclic Distributed Garbage Collection with Group Merger"
from ECOOP'98
- Agathe: "BuddyCache: High Performance Object Storage for Collaborative
Strong-Consistency Applications in WAN", from OOPSLA'02
- Cloretta: "A Simple and Practical Approach to Unit Testing: The JML
and JUnit Way", from ECOOP'02
- Robert: "Understanding the Connectivity of Heap Objects", from
ISMM'02
- Matthias: "Creating and Preserving Locality
of Java Applications at Allocation and Garbage Collection Times", from
OOPSLA'02
- Madan: "Load-Time Structural Reflection in Java", from ECOOP'00
- Venkat: "On Objects and Events", from OOPSLA'01
- Jon: "Lock
Reservation: Java Locks Can Mostly Do Without Atomic Operations" from
OOPSLA'02
- Zach: "Thin Guards: A Simple and Effective Technique for Reducing
the Penalty of Class Loading" from ECOOP'02
- Austin: "Selective Specialization for OO
Languages", from PLDI'95
- Rajiv: "Thin Locks: Featherweight Synchronization for Java", from
PLDI'98
- Keith: "MultiJava: Modular Open Classes and Symmetric Multiple
Dispatch for Java", from OOPSLA'00
- David: "Many-to-Many Invocation: a New Paradigm of Ad Hoc Collaborative
Systems", from OOPSLA'02
- Stephan: "Implemeting Distribution and Persistence
Aspects with AspectJ", from OOPSLA'02
- Andreas: "AOP:
Does it Make Sense? The Case of Concurrency and Failures", from ECOOP'02
- Tricha: "Space- and Time-Efficient Memory Layout for Multiple
Inheritance", from OOPSLA'99
- Edward: "Contract Soundness for Object-Oriented Languages", from OOPSLA'01
- James: "Safely
Creating Correct Subclasses without Seeing Superclass Code", from OOPSLA'00
- Dmitri: "Design
and Implementation of Generics for the .NET Common Language Runtime",
from PLDI'01
Links: