MODULBESCHREIBUNG

Programmieren 2

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

Modulbewertung

Bewertungsart:
Note von 1 - 6

Leistungsbewertung

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

Kurse in diesem Modul

Funktionale Programmierung

Kurzzeichen:
MAS-SE_FuProg
Arbeitsaufwand:
30
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.
Semesterbewertung:
Bewertungsart:
Note von 1 - 6
Kursart:

(Durchführung gemäss Stundenplan)

Blockkurs mit 5 Lektionen pro Woche
   - Max. Teilnehmer: 45
   - Harte Grenze: ja

C# und .NET

Kurzzeichen:
MAS-SE_CuNet
Arbeitsaufwand:
50
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
     
Semesterbewertung:
Bewertungsart:
Note von 1 - 6
Kursart:

(Durchführung gemäss Stundenplan)

Blockkurs mit 5 Lektionen pro Woche
   - Max. Teilnehmer: 45
   - Harte Grenze: ja

Parallele Programmierung

Kurzzeichen:
MAS-SE_ParProg
Arbeitsaufwand:
40
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
Semesterbewertung:
Bewertungsart:
Note von 1 - 6
Kursart:

(Durchführung gemäss Stundenplan)

Blockkurs mit 5 Lektionen pro Woche
   - Max. Teilnehmer: 45
   - Harte Grenze: ja

Programmieren Java advanced

Kurzzeichen:
MAS-SE_ProJaAd
Arbeitsaufwand:
40
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)
Semesterbewertung:
Bewertungsart:
Note von 1 - 6
Kursart:

(Durchführung gemäss Stundenplan)

Blockkurs mit 5 Lektionen pro Woche
   - Max. Teilnehmer: 45
   - Harte Grenze: ja