Object Programming and Modeling

Course page (outside Moodle)
This course is not present in Moodle. You can visit its homepage by clicking the "Course page (outside Moodle)" button on the right (if available).
Object Programming and Modeling A7B36OMO
Credits 6
Semesters Summer
Completion Assessment + Examination
Language of teaching Czech
Extent of teaching 2P+2C
Annotation
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.
Study targets
After completing this course, students will understand basic concepts and notions of object theory and will be able to apply them correctly in moderately difficult situations.
Course outlines
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
Literature
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
Requirements
Basic knowledge of programming and mathematics.
Responsible for the data validity: Study Information System (KOS)