Lecture: Thursdays at 8a
Tutorials: Thursdays at 11.45a/1.45p/3.30p; tutor: Peter Kurfer
Note: Materials will be in English, the lectures/tutorials will be taught in German; the written exam will be German (you may answer in English).
Class and Credits (Leistungsnachweis)
Lectures: Not your classic lecture— we’ll work together on concrete problems and their solution. The class will be taught in German, the materials are mostly in English.
Tutorials and assignments: Pairprogramming preferred, BYOD strongly recommended!
Credits: written exam (90’) at the end of the semester.
- Bloch: Effective Java
- Oaks: Java Performance
- Gamma et al.: Design Patterns
- Subramaniam: Functional Programming in Java
- Siedersleben: Moderne Softwarearchitektur
- Peter’s UML/PlantUML guide
We look at different types of classes (inner, anonymous, local, static), when to use them, and which visibility for which purpose. Also:
@FunctionalInterfaceand lambda expressions.
We talk about abstract and final classes, (pure) virtual functions and defaults. Also, when (and how) to use abstract base classes, and how the Decorator pattern can be used to add functionality to existing classes.
After a short digression to Mixins, we dig into the details of how generics work in Java, and how to apply them to data structures and algorithms.
No class and assignments on Nov 1 (All Saints/Allerheiligen).
We’ll review Mixins and see how to use generics to make them stateful. Generics and inheritance need special attention, and will lead us to bounds and wildcards.
We begin with a few basic patterns: composite, iterator and observer, and use that to dive into Android and MVC/MVVC.
We look at more every-day-patterns: singleton, factory, strategy and command.
We round up a few more useful patterns: proxy and adapter to make other peoples’ modules fit your needs, and flyweight to save on precious memory in (mostly) graphical apps.
Because sometimes, you need to work on more than one thing at a time! We’ll talk about threads and concurrency when it comes to resources.
Threads are clunky— learn about a better
Future, and what promise chaining can do for you.
Leave your imperative and objected oriented programming comfort zone and follow me down the rabbit hole of functional programming. After some theory, we’ll do some basic exercises, including
We’ll talk about the specifics (and limits) of functional programming in Java. Learn about the classes and interfaces used for Java’s functional parts, and the more sophisticated stream reduction using
Review (Jan 24)
Subscribe to https://github.com/hsro-inf-prg3/hsro-inf-prg3.github.io repository to follow updates.