Image for

Object-oriented programming

  • Class 30
  • Practice 45
  • Independent work 105
Total 180

Course title

Object-oriented programming

Lecture type


Course code






Lecturers and associates

Course overview

The aim of the module is to familiarize students with the principles of object-oriented programming: encapsulation, inheritance, polymorphism and abstraction.
This is the central module within the study program, it continues on to Data Structures and Algorithms and represents the basis for other programming modules that students enroll in the coming semesters. Acquired skills significantly contribute to the professional development of students in related professional fields.
The module is taught in the programming language C
. The final evaluation is based on solving a series of small practical tasks using the given programming language and tools for software development.


Students will learn:
• principles of object-oriented programming: encapsulation, inheritance, polymorphism and abstraction
• object-oriented units specific to the C# programming language
• LINQ (Language Integrated Query) API
• generic classes
• collections
• exception handling mechanisms
• specific implementation of publisher/subscriber pattern
• anonymous classes


1. Stellman, A. and Greene J. (2021) Head First C#: A Learner's Guide to Real-World Programming with C# and .Net Core. 4th edn. Sebastopol: O'Reilly.

Additional reading

1. Albahari, J. (2019) C# 8.0 Pocket Reference. 1st edn. Sebastopol: O'Reilly.

Download student guide

Minimal learning outcomes

  • Create a solution to a given problem in accordance with the specification and implement it using classes and objects.
  • Apply the principle of inheritance in programming language.
  • Recognize the need to implement a polymorphic solution to the given problem.
  • Anticipate the possibility of exceptions and process them.
  • Implement and apply generic structures in the programming language.
  • Implement part of the software solution using the publisher/subscriber pattern.

Preferred learning outcomes

  • Select appropriate data types and access modifiers according to the specification
  • Recognize the need to use and apply abstract classes and access modifiers to ensure non-redundant and reusable solution to a given problem.
  • Improve the readability of the solution by introducing operator overloading.
  • Create and apply user-defined exception classes as solutions to a given problem.
  • Choose the appropriate generic collection class as a solution to the given problem.
  • Implement part of the software solution using anonymous classes.