Object Oriented Programming

The course aims to introduce the Object Oriented Programming paradigm. Focus is given on a component-based program development, and especially having in mind on how to get software modules right and how to organize a program as a collection of modules. The course offers an introduction to topics as encapsulation, abstractions of several kinds (procedure, data, iteration), type hierarchies, exceptions, specifications, and SOLID principles. While we introduce these concepts with Java, methods are independent of the programming language.
Lectures follow Barbara Liskov‘s book “Program Development in Java: Abstraction, Specification, and Object-Oriented Design“. The course is offered at the second year of the Electrical and Computer Engineering curriculum, at Democritus University of Thrace.