Object Programming and Modeling

Semestr: Summer

Range: 2P+2C


Credits: 6

Programme type:

Study form: Fulltime

Course language: Czech


Object-oriented approach to software development prevails in all of its three phases: analysis, design and implementation. The aim of this course is to give the students a firm understanding of basic concepts and notions of object theory and sketch its formal foundations.


Course syllabus:

1. Classes and objecst; runtime representation
2. Type system; implementation hiding
3. Subtype polymorphism, subsumption and Liskov substitution principle
4. Static methods and variables; formal semantics
5. Pointers, linked lists, pointer-based structures
6. Correctness, assertions, class/data structure invariant, encapsulation, representation exposure
7. Inheritance; method dispatch
8. Parametric polymorphism (generic classes)
9. Advanced polymorphism; binary methods; creational design patterns
10. Immutability; advanced collections; higher-order functions
11. Metaprogramming

Seminar syllabus:


1. B. Eckel: Thinking in Java
2. Er. Gamma et al.: Design Patterns: Elements of Reusable Object-Oriented Software
3. Course webpage: https://cw.fel.cvut.cz/wiki/courses/a7b36omo/start