Lecture Notes.

There will be around 40 lectures on object oriented systems. The lectures will emphasize principles of object orientation, object modeling concepts, object oriented software engineering methods which form a large component of this course, distributed and concurrent object architectures, and some of the recent developments in object modeling. There are programming assignments that ensure skill building and also work as a small idea factory. There will be an interesting miniproject, which will be a sizable work, which also has a team-work angle. The teams will be carved out of the class based on your interests and preferences for the offered topics. Good luck!

Lecture 1        Introduction to Object Oriented Systems and Overview of the Course
Lecture 2        Abstraction and Encapsulation
Lecture 3        Inheritance
Lecture 4        Polymorphism
Lecture 5        Visibility Control
Lecture 6        Instantiation and Metaclasses
Lecture 7        Aggregation, Association and Using
Lecture 8        Object Orientated Control Abstractions I : Block and Boolean classes
Lecture 9        Object Orientated Control Abstractions II : Block, Integer and Collection classes
Lecture 10      Multiple Dispatch
Lecture 11      Implementing Dynamic Dispatch (C++ implementation): virtual tables, recovering the this pointer
Lecture 12      Implementing Dynamic Dispatch: inheritance hierarchies
Lecture 13      Implementing Dynamic Dispatch: Diamond Inheritance. static analysis techniques
Lecture 14      Quiz I
Lecture 15      Design Patterns. Creational Patterns: Singleton
Lecture 16      Creational Patterns: Abtsract Factory, Factory Method, Prototype, Builder
Lecture 17      Structural Patterns: Adapter, Proxy
Lecture 18      Structural Patterns: Composite, Facade
                         Midsemester Examination
Lecture 19      Behavioral Patterns: Strategy, Template Method, State
Lecture 20      Behavioral Patterns: Observer, Memento, Iterator
Lecture 21      Object oriented software engineering life cycle
Lecture 22      Object identification and elimination
Lecture 23      CRC
Lecture 24      Use Cases
Lecture 25      Dynamic Modeling: Interobject Interactions
Lecture 26      Surprise Test
Lecture 27      Dynamic Modeling
Lecture 28      Dynamic Modeling: An object's changing states
Lecture 29      Inheritance Anomaly: Problems
Lecture 30      Inheritance Anomaly: Solutions
Lecture 31      Issues in Distributed Object Systems - why and how
Lecture 32      Implementation Mechanisms in CORBA
Lecture 33      Filter Objects and Filter Configurations
Lecture 34      Designing a Naming Service
Lecture 35      Genericity
Lecture 36      Open Session

 
Design and Program Assignments

Submit your programs and designs through the submit program
 
Assignment 1. Modeling with inheritance and polymorphism
                         deadline:  Friday, 8 Jan
 
Assignment 2. Multiple Dispatch: the multiple interacting inheritance hierarchies
                         deadline:  Friday, 29 Jan
 
Assignment 3. Creational Patterns (in Java)
                         deadline:  Monday, 15 Feb
 
Course Project
                        
 

 
First Quiz: Wed, Feb 3, 11:30-12:30
Midsemester Examination: Fri, Feb 19, 14:30-16:30


Instructor: RKJ