1. Constraints of procedural programming paradigm. The transition from Procedural to Object Oriented Programming ( paradigm shift). The importance of object-oriented example in systems development.
2. Basic mechanisms to handle complexity. Procedural Abstraction, Data Abstraction. Incremental development process.
3. The conceptual model of Object-Oriented Programming. Object, Class, Instance. Structure and behavior of instances and classes.
4. Introduction to the Java programming language. Java as an extension of C. The basic Java library. Application development environments.
5. The program as a composition of objects. Abstract representation of system structure and behavior. UML Basic Diagrams. Class diagram. Object interaction (sequence) diagram.
6. Inheritance, simple and multiple. Interface. Polymorphism, early vs. late binding.
7. Exception handling. Garbage collection.
8. Graphical user interfaces. Event Handling mechanism.
9. Implementation of basic concepts of the object-oriented programming paradigm from the C ++ programming language. The basic C ++ library. Templates, Vectors, ArrayList, LinkedList. Files and streams.
10. Introduction to Multithreading.
11. Network programming. The client-server model. Servlets. Socket programming.