Object-Oriented Languages and Environments

What Is This Course About?

TThe goal of this course is to provide a broad but solid overview of object-oriented programming (OOP) with different languages and under different environments. OOP is a discipline of modeling, designing, implementing, and maintaining software systems that are composed from objects with identity that encapsulate properties and operations, message passing, classes, inheritance, polymorphism, and dynamic binding. Since OOP has become a de-facto programming baseline, it affects all aspects of building software. Thus building modern large-scale software systems that consists of tens of thousands of objects each requires deep understanding of OOP.

In this course we review different areas of OOP with the concentration on practical aspects of languages and environments. Lectures will be based on the material from different books, accepted programming language standards (C++, C#, Java) and on research papers written by accomplished software engineers and computer scientists.

Topics

No mandatory textbook. Research papers and handouts will be made available for the following topics:

  • Overview of imperative, functional, and object-oriented programming
  • Abstraction, modularity, information hiding, interfaces
  • Abstract Data Types (ADT) and OOP
  • Classes, names, and scopes
  • Inheritance
  • Polymorphism
  • Binding and dispatch
  • Virtual classes
  • Genericity
  • Type checking and inference
  • Concurrency
  • OOP and relational databases: impedance mismatch
  • Overview of Eiffel
  • Overview of Smalltalk
  • Overview of C++
  • Overview of Java
  • Overview of C#.
     

 

[Home] [Research] [Publications] [Grants and Awards] [Teaching] [Software Engineering] [Formal Methods] [Computer Security] [Distributed Object Programming] [Model-Driven Architecture] [Object-Oriented Languages and Environments] [Consulting] [Curriculum Vitae] [Personal]