252-0237-00L Concepts of Object-Oriented Programming
Semester | Autumn Semester 2017 |
Lecturers | P. Müller |
Periodicity | yearly recurring course |
Language of instruction | English |
Courses
Number | Title | Hours | Lecturers | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
252-0237-00 V | Concepts of Object-Oriented Programming | 3 hrs |
| P. Müller | ||||||||||||
252-0237-00 U | Concepts of Object-Oriented Programming | 2 hrs |
| P. Müller |
Catalogue data
Abstract | Course that focuses on an in-depth understanding of object-oriented programming and compares designs of object-oriented programming languages. Topics include different flavors of type systems, inheritance models, encapsulation in the presence of aliasing, object and class initialization, program correctness, reflection |
Learning objective | After this course, students will: Have a deep understanding of advanced concepts of object-oriented programming and their support through various language features. Be able to understand language concepts on a semantic level and be able to compare and evaluate language designs. Be able to learn new languages more rapidly. Be aware of many subtle problems of object-oriented programming and know how to avoid them. |
Content | The main goal of this course is to convey a deep understanding of the key concepts of sequential object-oriented programming and their support in different programming languages. This is achieved by studying how important challenges are addressed through language features and programming idioms. In particular, the course discusses alternative language designs by contrasting solutions in languages such as C++, C#, Eiffel, Java, Python, and Scala. The course also introduces novel ideas from research languages that may influence the design of future mainstream languages. The topics discussed in the course include among others: The pros and cons of different flavors of type systems (for instance, static vs. dynamic typing, nominal vs. structural, syntactic vs. behavioral typing) The key problems of single and multiple inheritance and how different languages address them Generic type systems, in particular, Java generics, C# generics, and C++ templates The situations in which object-oriented programming does not provide encapsulation, and how to avoid them The pitfalls of object initialization, exemplified by a research type system that prevents null pointer dereferencing How to maintain the consistency of data structures |
Literature | Will be announced in the lecture. |
Prerequisites / Notice | Prerequisites: Mastering at least one object-oriented programming language (this course will NOT provide an introduction to object-oriented programming); programming experience |
Performance assessment
Performance assessment information (valid until the course unit is held again) | |
Performance assessment as a semester course | |
ECTS credits | 6 credits |
Examiners | P. Müller |
Type | end-of-semester examination |
Language of examination | English |
Repetition | The performance assessment is only offered at the end after the course unit. Repetition only possible after re-enrolling. |
Additional information on mode of examination | There will be a mid-term exam of one hour that determines 30% of the overall grade. The end-term exam will take two hours and determine 70% of the grade. |
Learning materials
Main link | Information |
Only public learning materials are listed. |
Groups
No information on groups available. |
Restrictions
There are no additional restrictions for the registration. |