PDF

MODULBESCHREIBUNG

Programmieren 2

Kurzzeichen:
M_MAS-SE_Prog2
Durchführungszeitraum:
S2_MAS-SE 2018 - S2_MAS-SE 2018
ECTS-Punkte:
5
Lernziele:
-
Verantwortliche Person:
Luc Bläser
Empfohlene Module:
-
Zusätzlich vorausgesetzte Kenntnisse:
keine
Modultyp:
Standard-Modul für MAS Software Engeneering (Standard 12) (Empfohlenes Semester: 2)
Standard-Modul für CAS Intermediate (Standard 12)

ECTS-Punkte pro Kategorie

Kategorie:
Modul zählt für keine Kategorie.

Modulbewertung

Bewertungsart:
Note von 1 - 6

Leistungsbewertung

Während des Semesters:
 
Bewertungsart:
Note von 1 - 6

Kurse in diesem Modul

C# und .NET

Kürzel:
MAS-SE_CuNet
Lernziele:

Die Studierenden erhalten einen groben Einblick in die wichtigsten Konzepte von C# und dem .NET Framework sowie die wesentlichsten Unterschiede zu Java.

Lernziele:

  • Sie kennen die Grundkonzepte und die wichtigsten Funktionalitäten der .NET Plattform
  • Sie verstehen Sprachkonzepte, Syntax und Vererbung in C# und können diese anwenden
  • Sie verstehen die Unterschiede in der Syntax zu Java und können diese nachvollziehen
  • Sie können einfache User Interfaces mit WPF erstellen
Plan und Lerninhalt:

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
     
Bewertungsart:
Note von 1 - 6
Kursart:
Blockkurs mit 5 Lektionen pro Woche

Funktionale Programmierung

Kürzel:
MAS-SE_FuProg
Lernziele:
  • Sie kennen die grundlegenden Konzepte des funktionalen Programmier-Paradigmas.

Vermittelte Kompetenz

  • Sie lernen eine andere Sichtweise auf die Programmierung (funktional anstelle von OO)
  • Sie können einfache Probleme mithilfe der Datentypanalyse-Funktionsanalyse Methode lösen.
Plan und Lerninhalt:
  • 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.
Bewertungsart:
Note von 1 - 6
Kursart:
Blockkurs mit 5 Lektionen pro Woche

Parallele Programmierung

Kürzel:
MAS-SE_ParProg
Lernziele:
  • Die Konzepte der Nebenläufigkeit verstehen und in Java Programmen für Parallelisierung anwenden können.
  • Die Korrektheitskriterien der Nebenläufigkeit kennen und typische Gefahren bei Multi-Threading vermeiden können.
  • Verschiedene Implementierungstechniken für Nebenläufigkeit in Java kennen und anwenden können.

Vermittelte Kompetenzen:

  • Multi-Thread Programmierung
  • Monitor-Synchronisation und anderen Synchronisationsprimitiven
  • Race Conditions, Data Races, Deadlocks und andere Nebenläufigkeitsfehler erkennen und vermeiden
  • Effiziente Parallelisierung mit Thread Pools
  • Asynchrone Programmierung im Allgemeinen und im GUI
  • Java Memory Model und atomaren Instruktionen
Plan und Lerninhalt:
  • 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
Bewertungsart:
Note von 1 - 6
Kursart:
Blockkurs mit 5 Lektionen pro Woche

Programmieren Java advanced

Kürzel:
MAS-SE_ProJaAd
Lernziele:
  • Erweiterte Kenntnisse der Programmiertechnologie Java.
  • Grundkenntnisse der aspektorientierten Programmierung mit AspectJ.

Vermittelte Kompetenzen

  • Die Teilnehmer sind in der Lage eigene Enumerationen, generische Klassen mit Bounds und Annotationen zu erstellen.
  • Sie können Reflection, Schwache Referenzen, Streams und Lambdas anwenden.
  • Sie verstehen das Konzept der aspektorientierten Programmierung.
  • Sie können AspectJ für einfache Problemstellungen anwenden.
  • Sie verstehen das Konzept von Design by Contract.
  • Sie kennen das Java-Native-Interface JNI.
Plan und Lerninhalt:
  • 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)
Bewertungsart:
Note von 1 - 6
Kursart:
Blockkurs mit 5 Lektionen pro Woche
Beschreibung erzeugt: 2018-12-14 12:01:29
Letzte Moduländerung: 2018-07-02 15:14:28
Modul-Id: 32057
Status: aktiviert