Object-Oriented Programming

Course info:

Semester: 1

General Foundation

ECTS: 6

Hours per week: 3

Professors: T.B.D.

Teaching style: Face to face, distance learning

Grading: 50% written exam, 50% exercises

Activity Workload
Lectures 36
Tutorials
Laboratory work
Project development 58
Autonomous learning 56
Course total 114

Learning Results

Upon successful completion of the course, students will be able to:

  • Identify and explain Object Oriented Programming paradigm, concepts and principles.
  • Use important object-oriented software engineering methodologies.
  • Compose object-oriented programs that combine functions and data.
  • Model problem statements in order to create suitable OOP software solutions.
  • Translate abstract concepts into classes.
  • Apply the object-oriented programming language to develop software, including programs with complex class structure.
  • Combine previously written code into larger programs.
  • Apply peer teaching methodologies for developing object-oriented software products.

Skills acquired

Retrieve, analyse and synthesise data and information, with the use of necessary technologies, Team work, Work in an interdisciplinary team, Advance free, creative and causative thinking

This course introduces advanced programming skills and focuses on the core concepts of object-oriented programming and design using a high-level language, either Python or Java. Object-oriented programming represents the integration of software components into a large-scale software architecture. Software development in this way represents the next logical step after learning coding fundamentals, allowing for the creation of sprawling programs. The course focuses on the understanding and practical mastery of object-oriented concepts such as classes, objects, data abstraction, methods, method overloading, inheritance and polymorphism. Practical applications in the domain of data science and as seen in stacks, queues, lists, and trees will be examined. In more detail, the main issues that will be discussed in the course are as follows:

  • Introduction of the principles of object-oriented programming in a higher-level programming language, such as Python or Java.
  • Analysis of a problem statement to develop a mental model of objects necessary to create a software architecture.
  • Utilization of object-oriented programming to frame software architectures, with care towards separation of concerns and abstraction.
  • Designing, and programming software for reuse of code.
  • Establishment of development methods in object-oriented programming to qualify students for teaching the language in other settings.

Specifically, the topics that will be discussed concerning each programming language are given below:

  • Objects
  • Data Abstraction
  • Information Hiding & Encapsulation
  • Constructors, destructors, and object creation
  • Name space and references
  • Class Methods
  • Methods Overloading
  • Inheritance
  • Polymorphism
  • Abstract Classes & Methods
  • Exception Handling
  1. Y. Daniel Liang, Intro to Java Programming, Comprehensive Version (10th Edition), Pearson, 2014.
  2. Kathy Sierra, Bert Bates, Head First Java, O’Reilly Media, Inc., 2021.
  3. Steven F. Lott, Mastering Object-Oriented Python: Build powerful applications with reusable code using OOP design patterns and Python 3.7, 2nd Edition, 2019.
  4. Steven F. Lott, Dusty Phillips, Python Object-Oriented Programming: Build robust and maintainable object-oriented Python applications and libraries, 4th Edition, Packt Publishing, 2021.
Learning Results - Skills acquired

Learning Results

Upon successful completion of the course, students will be able to:

  • Identify and explain Object Oriented Programming paradigm, concepts and principles.
  • Use important object-oriented software engineering methodologies.
  • Compose object-oriented programs that combine functions and data.
  • Model problem statements in order to create suitable OOP software solutions.
  • Translate abstract concepts into classes.
  • Apply the object-oriented programming language to develop software, including programs with complex class structure.
  • Combine previously written code into larger programs.
  • Apply peer teaching methodologies for developing object-oriented software products.

Skills acquired

Retrieve, analyse and synthesise data and information, with the use of necessary technologies, Team work, Work in an interdisciplinary team, Advance free, creative and causative thinking

Course content

This course introduces advanced programming skills and focuses on the core concepts of object-oriented programming and design using a high-level language, either Python or Java. Object-oriented programming represents the integration of software components into a large-scale software architecture. Software development in this way represents the next logical step after learning coding fundamentals, allowing for the creation of sprawling programs. The course focuses on the understanding and practical mastery of object-oriented concepts such as classes, objects, data abstraction, methods, method overloading, inheritance and polymorphism. Practical applications in the domain of data science and as seen in stacks, queues, lists, and trees will be examined. In more detail, the main issues that will be discussed in the course are as follows:

  • Introduction of the principles of object-oriented programming in a higher-level programming language, such as Python or Java.
  • Analysis of a problem statement to develop a mental model of objects necessary to create a software architecture.
  • Utilization of object-oriented programming to frame software architectures, with care towards separation of concerns and abstraction.
  • Designing, and programming software for reuse of code.
  • Establishment of development methods in object-oriented programming to qualify students for teaching the language in other settings.

Specifically, the topics that will be discussed concerning each programming language are given below:

  • Objects
  • Data Abstraction
  • Information Hiding & Encapsulation
  • Constructors, destructors, and object creation
  • Name space and references
  • Class Methods
  • Methods Overloading
  • Inheritance
  • Polymorphism
  • Abstract Classes & Methods
  • Exception Handling
Recommended bibliography
  1. Y. Daniel Liang, Intro to Java Programming, Comprehensive Version (10th Edition), Pearson, 2014.
  2. Kathy Sierra, Bert Bates, Head First Java, O’Reilly Media, Inc., 2021.
  3. Steven F. Lott, Mastering Object-Oriented Python: Build powerful applications with reusable code using OOP design patterns and Python 3.7, 2nd Edition, 2019.
  4. Steven F. Lott, Dusty Phillips, Python Object-Oriented Programming: Build robust and maintainable object-oriented Python applications and libraries, 4th Edition, Packt Publishing, 2021.