Modulbeschreibung

Programmieren 2

ECTS-Punkte:
5
Lernziele:

Kurse in diesem Modul

Funktionale Programmierung:
  • Programmier-Paradigmen
  • Kennzeichen der funktionalen Programmierung und funktionaler Programmiersprachen
  • Funktionen und Daten als gleichberechtigte Konstrukte; Immutability
  • Funktionen höherer Ordnung (Funktionen als Parameter, Funktionen als Rückgabewerte, partielle Funktionen)
  • Unendliche Datenstrukturen und Lazy Evaluation
  • Kontrollstrukturen in funktionalen Programmiersprachen (Rekursion, Pattern Matching, u. ä.)
  • Methodische Unterschiede zur OO und imperativem Projektabwicklung: EVA und Datentyp-basierte Spezifikation.
Blockkurs mit 5 Lektionen pro Woche
C# und .NET:

Grundlagen

  • .NET Grunlagen
    Framework Architektur, CLR, MSIL, Assemblies, Typensystem CTS
  • C# Grundlagen
    Namespaces, zentrale Klassen (Object, Array, String), Enums

Klassen, Structs und Vererbung

  • Klassen und Structs
    Einführung, Methoden, Properties, Indexer, Konstruktoren, Operatoren
  • Vererbung
    Einführung, Methoden und Vererbung, Abstrakte Klassen, Interfaces

Weiterführende Sprachkonzepte

  • Delegates & Events
    Einführung, Multicast-Delegates, Hands-on Beispiele, Events, Anonyme Methoden 
  • Generics
    Einführung, Type Constraints, Vererbung, Nullable Types, Generische Delegates
  • Language Integrated Queries LINQ
    Lambda Expressions, Extension Methods, Initializers, Anonymous Types, Query Expressions

Vertiefung: GUI Programmierung

  • WPF
  • Einführung, XAML, Controls, Grund-Konzepte, Data Binding
     
Blockkurs mit 5 Lektionen pro Woche
Parallele Programmierung:
  • Grundlagen des Multi-Threading
  • Monitor-Synchronisation
  • Semaphore, Lock & Condition, Reader-Writer Locks und andere Synchronisationsprimitiven
  • Korrektheitsbedingungen: Problematik von Race Conditions, Data Races, Deadlocks, Livelocks und Starvation
  • Thread Pools, flache und rekursive Parallelisierung
  • Asynchronität u.a. mit CompletableFutures
  • Paralleles Stream API in Java
  • GUI und Threading
  • Java Memory Model: Atomare Instruktionen, volatile, lock-freie Datenstrukturen
Blockkurs mit 5 Lektionen pro Woche
Programmieren Java advanced:
  • Enumerationen
  • Generics (Vererbung, Wildcards, Upper- und Lower-Bounds, Raw-Type, Erasure, Bridge-Methoden, Class-Sharing)
  • Annotation (Default-Werte, Marker-Annotation, Arrays, Meta-Annotation, Targets, Self-Annotation, Retention, Package-Annotation, Annotation Processing Tool (apt) )
  • Reflection (Class-Object, Type-Tokens, Instanzierung mittels Reflection, Class Inspection, Class Member Inspection, Attribute, Methoden)
  • Erweiterungen Java8
  • Soft-, Weak und Phantom-Referenzen (Resurrection, Schwache Referenzen, SoftReference, WeakReference, ReferenceQueue, PhantomReference, java.lang.Runtime)
  • Single-Abstract-Method, Functional Interface, Method-Reference, Lambdas, Streams
  • Aspekt-Orientierte Programmierung mit AspectJ (Cross-Cutting-Concerns, Seperation-Of-Concerns, AspectJ, Pointcut, Subtype Pattern, Advice, thisJoinPoint)
  • Design by Contract
  • Assertions
  • Contracts for Java (C4J)
  • Java Plattform Module System JPMS
  • Java Native Interface JNI (Aufruf von Native-Code aus Java, Aufruf von Java aus Native-Code)
  • Internationalization
  • Logging (u. a. Log4J, Commons Logging)
Blockkurs mit 5 Lektionen pro Woche
Disclaimer

Diese Beschreibung ist rechtlich nicht verbindlich! Weitere Informationen finden Sie in der detaillierten Modulbeschreibung.