Course information

Teachers

Goal

Students will gain knowledge about the principles of object-oriented programming. They will acquire programming skills in object-oriented design and implementation of software systems using object-oriented programming languages, design patterns, and generic programming.

Syllabus

  • Object-oriented principles
    • Abstraction, encapsulation, information hiding, subtyping, inheritance, polymorphism
    • Liskov substitution principle (LSP)
  • Generic programming
    • Parametric type, generics and class templates
  • Lambda expressions
    • The concept of anonymous functions
    • Functional approach to programming in imperative object-oriented languages
  • Exceptions handling
  • Design patterns and software frameworks
    • Principles of reusability, extensibility and the Open-Closed Principle (OCP) in programming
  • Fundamentals of object-oriented modeling
    • UML language in the design of object-oriented systems

Assessment

  • Continuous assessment (credit) - 40 points (min. 21)
    • Attending lectures and lab sessions.
    • Working out labs.
  • Final assessment (exam) - 60 points (min. 31)
    • Working out final lab.
    • Test.
  • Overall assessment - 100 points (min. 51)