New Course Proposal


Graduate:  Level I ___X__  Undergraduate: ______ 
Level II _____ 
Unit: College of Computing Date: 1/15/02

1. Course Number 
Program Number: CS6246 
2. Hours: Lecture Lab Recitation Total Semester Credit
___3___  ___  ________  ____3____ 
4. Descriptive Title: Object-Oriented Systems and Languages
5. Recommended Abbreviation for Transcript (24 characters including spaces): 

Object-Oriented Systems

6. Catalog Description (25 words or less):
Design and implementation of object-oriented systems. Aspect-oriented programming, type systems, OO language implementation (virtual dispatch, GC), OO language design (genericity, reflection, mixins).
7. Basis: L/G ____X_____ P/F ____X______ Audit ____X______
8. Prerequisites: CS 2340 or equivalent knowledge, graduate standing or instructor approval
Corequisites:
10. Expected Mode of Presentation: MODE % OF COURSE
Lecture _______80______
Laboratory (Supervised) _______________
Laboratory (Unsupervised) _______________
Discussion _______________
Seminar _______________
Independent Study _______20______
Library Work _______________
Demonstration _______________
Other (Specify) _______________
11. Planned Frequency of Offering: TERM TO BE OFFERED EXPECTED ENROLLMENT
Fall  __X___
Spring ______
Summer ______
______15+______
_______________
_______________
12. Are you requesting this course satisfy: Humanities ________ Social Science ________ (Must be 1000 or 2000 level) 
13. Probable instructor(s) (Please mark with an asterix any non tenure-track individuals):
Yannis Smaragdakis, Olin Shivers
14. To replace what course(s) in the quarter system?
15. Required ____________ Elective __X________ 
16. Please attach a topical outline of the course.



 
Course Description and Topical Outline
Learning Objectives The course covers an extensive sample of work from the Object-Oriented Systems and Languages Literature. The goal is to give students an advanced background for both research work and technical work involving object-oriented languages and systems.
Course Outline and Syllabus INTRODUCTION
- Java/C++ comparison from an abstract standpoint
- Design patterns overview and critique

ADVANCED LANGUAGE DESIGN
- Reflection, language extensions, meta-object protocols
- SOM, CLOS MOP, Open C++

RESEARCH IN SEPARATION OF CONCERNS
- Aspect-Oriented Programming, AspectJ
- Subject-Oriented Programming+HyperJ, Adaptive Programming+Demeter
- Frameworks, mixins, mixin layers

LANGUAGE IMPLEMENTATION
- Object layout for multiple inheritance
- Fast interface dispatch, virtual dispatch optimizations
- Garbage collection overview

TYPE SYSTEMS AND GENERICITY
- Type system overview (universal/existential types, type templates)
- Genericity mechanisms: virtual types, parametric types, Java/C++ generics

TOPICS (as time permits)
- C++ template programming
- OO middleware
- C# vs. Java

Suggested Texts Readings: The readings will consist of a collection of papers (mainly from the OOPSLA and ECOOP conferences).