Grundlagen der Programmierung

Studiengang:
Applied Computer and Communication Technology (B. Eng.)
Wehrtechnik (B. Eng.)

Modulbestandteile:
Grundlagen der Programmierung (5-stündig)
Praktikum Grundlagen der Programmierung (3-stündig)

PythagorasBaum

Inhalte:
In diesem Modul werden die zentralen Begriffe und Konzepte der Programmierung vermittelt. Dazu werden die folgenden Themen behandelt: Information und Repräsentation, Algorithmen und Datenstrukturen, Programme und Programmiersprachen: funktionale, imperative, strukturierte und objektorientierte Programmierung. In Rahmen der objektorientierten Programmierung wird auf die die Verwendung von Klassen und Klassenbibliotheken, sowie die Modularisierung von Software eingegangen.

Die Studierenden sollen die Fähigkeit zum problemnahen Programmieren erwerben: Modellieren und beschreiben der realen Probleme, Konstruktion der Lösung mit Hilfe der Informatik, Systematische Umsetzung der Lösung mit Hilfe der Programmiersprache.

Im Praktikum wird das Gelernte mit der Entwicklungsumgebung „Netbeans“ und der Programmiersprache „Java“ vertieft. Dabei lernen die Studierenden auch ihre Programme zu Testen und zu Debuggen.

Qualifikationsziele:
Die Studenten lernen die Begriffe, Konzepte, Mittel und Methoden des Programmierens sowie wichtige Algorithmen und Lösungsmuster kennen. Sie erwerben die Fähigkeit zum funktionalen, imperativen, strukturierten und objektorientierten Programmieren von Anwendungen in „Java“.

Voraussetzung für die Teilnahme:
Der Studierende benötigt die Kenntnisse des Moduls: Grundlagen der Informatik

Geschätzter studentischer Arbeitsaufwand (workload):
6 ECTS-LP (182 Stunden)

Beschreibung der Lehr- und Lernformen:
Seminaristischer Unterricht (5-stündig)
Praktikum (3-stündig)

Häufigkeit des Angebots:
Das Modul dauert ein Trimester. Das Modul beginnt jedes Studienjahr im Wintertrimester. Das Modul wird pro Studienjahr einmal angeboten. Als Startzeitpunkt ist das Wintertrimester im 1. Studienjahr vorgesehen.

Höhere Programmierung

Studiengang:
Applied Computer and Communication Technology (B. Eng.)
Wehrtechnik (B. Eng.)

Modulbestandteile:
Höhere Programmierung (3-stündig)
Übung Höhere Programmierung (2-stündig)

Schema Software Engineering

Inhalte:
In der Vorlesung „Höhere Programmierung“ erweitern die Studierenden ihr in „Grundlagen der Programmierung“ erworbenes Wissen. Die Studierenden erlernen dynamisches, ereignis-, komponenten-, musterorientiertes, paralleles und verteiltes Programmieren und die Nutzung von Bibliotheken in Java. Darüber hinaus lernen die Studierenden durch die Beachtung der Secure Coding Guidelines schon frühzeitig auf sichern und verlässlichen Programmcode zu achten. In der Übung „Höhere Programmierung“ vertiefen sie ihr erworbenes Wissen anhand praktischer Beispiele und lernen das Arbeiten mit generischen Typen, Containern, Strömen, Threads und Ereignissen in Java. Die Studierenden beschäftigen sich mit der Oberflächen- und Client-Server-Programmierung.

Qualifikationsziele:
Der Student wird befähigt, verlässliche bzw. sichere, größere ereignisorientierte Anwendungen in "Java" selbständig zu entwickeln, sowie sich in parallele und verteilte Programmierung einzuarbeiten.

Voraussetzung für die Teilnahme:
Der Studierende benötigt die Kenntnisse des Moduls: Grundlagen der Informatik, Grundlagen der Programmierung

Geschätzter studentischer Arbeitsaufwand (workload):
5 ECTS-LP (150 Stunden)

Beschreibung der Lehr- und Lernformen:
Vorlesung Höhere Programmierung (3-stündig im Frühjahrstrimester)
Übung Höhere Programmierung (2-stündig im Frühjahrstrimester)

Häufigkeit des Angebots:
Das Modul dauert ein Trimester. Das Modul beginnt jedes Studienjahr im Frühjahrstrimester. Das Modul wird pro Studienjahr einmal angeboten. Als Startzeitpunkt ist das Wintertrimester im 2. Studienjahr vorgesehen.

Secure Software Engineering

Studiengang:
Applied Computer and Communication Technology (B. Eng.)
Wehrtechnik (B. Eng.)

Modulbestandteile:
Secure Software Engineering (4-stündig)
Praktikum Secure Software Engineering (4-stündig)

Schema Software Engineering

Inhalte:
In der Vorlesung und im Praktikum „Secure Software Engineering“ erlernen die Studierenden das Programmieren "im Großen".
In der Vorlesung wird der Prozess des Software-Engineerings besprochen, der es den Studierenden erlaubt eine verlässliche Anwendung zu entwickeln. Unter anderem werden die Vorgehensmodelle V-Modell XT und SDL (Security Development Lifecycle) thematisiert. Dabei wird der Fokus insbesondere auf den Aspekt Sicherheit gelegt. Die Themen Risikoanalyse und die Analyse und Modellierung von Bedrohungen spielen hier genauso eine Rolle, wie das Thema sichere Programmierung. Dazu werden die aus dem Modul Höhere Programmierung eingeführten Secure Coding Guidelines systematisch weitergeführt und ergänzt.
Im Praktikum haben die Studierenden die Gelegenheit in Projektteams das Gelernte zu üben. Dazu spezifizieren, entwerfen, implementieren und testen die Studierenden in den Projektteams ein kleines Projekt und erstellen dabei die für die Entwicklung einer verlässlichen und sicheren Software nötigen Dokumente.

Qualifikationsziele:
Es wird die Fähigkeit zum objektorientierten Programmieren größerer Anwendungen vermittelt, um auch im Team komplexe und sichere Software-Projekte realisieren zu können.
Die Studierenden erwerben darüber hinaus die Fähigkeit, spezielle formale und stochastische Techniken zur Sicherheits- und Zuverlässigkeitsanalyse für Software anzuwenden und die Fähigkeit, Methoden zur Berücksichtigung von Sicherheits-/Stabilitätszielen und zur Vermeidung von Sicherheitsschwachstellen in allen Phasen des Softwareentwicklungsprozesses anzuwenden.

Voraussetzung für die Teilnahme:
Der Studierende benötigt die Kenntnisse des Moduls: Grundlagen der Informatik, Grundlagen der Programmierung, Höhere Programmierung

Geschätzter studentischer Arbeitsaufwand (workload):
6 ECTS-LP (180 Stunden)

Beschreibung der Lehr- und Lernformen:
Vorlesung Secure Software Engineering (2-stündig im Frühjahrstrimester, 2-stündig im Herbsttrimester)
Praktikum Software Engineering (3-stündig im Herbsttrimester)

Häufigkeit des Angebots:
Das Modul dauert zwei Trimester. Das Modul beginnt jedes Studienjahr im Frühjahrstrimester und endet im Herbsttrimester. Das Modul wird pro Studienjahr einmal angeboten. Als Startzeitpunkt ist das Frühjahrstrimester im 2. Studienjahr vorgesehen.

Höhere Datenstrukturen und effiziente Algorithmen

Inhalte:
Die Studierenden erhalten detaillierte Kenntnisse über höheren Datenstrukturen und effizienten Algorithmen, die diese Datenstrukturen verwenden. Ein Teil der Lehrveranstaltung beschäftigt sich mit der Komplexität von "Standard"-Operationen auf höheren Datenstrukturen. Bei diesen Operationen handelt es sich z.B. um das Einfügen, das Löschen oder das Suchen eines Elements in eine Menge von Elementen. Kennt man erst mal die Komplexität der Operationen, dann kann man hieraus auf Einsatzgebiete schließen, in der die Datenstruktur effizient verwendbar ist. Die Datenstrukturen, die in dem Modul behandelt werden sind:

  • Höhenbalancierte Suchbäume: AVL-Bäume, (a-b)-Bäume, Rot-Schwarz-Bäume
  • Selbstorganisierende Listen und Bäume: Splay Trees
  • Heaps: Binomial Heaps, Fibonacci Heaps

Ein weiteres Themengebiet des Moduls sind spezielle Problemklasse, für die effiziente Lösungsmöglichkeiten vorgestellt werden. Das Modul beschäftigt sich z.B. mit dem Problem der Selektion, mit planaren Graphen, mit dem Matching-Problem und dem Flussproblem. In diesem Zusammenhang wird auch auf die Möglichkeit der Verwendung paralleler Algorithmen eingegangen.

AVL-BaumAVL-Baum

Rot-SW-Baum Rot-Schwarz-Baum

Binärer SuchbaumBinärer Suchbaum

 

Qualifikationsziele:
Mit Hilfe der erworbenen Kenntnisse können die Studierenden die Effizienz der besprochenen Datenstrukturen in spezifischen Einsatzgebieten bewerten. Durch die Betrachtung verschiedener Problemklassen werden einige Einsatzgebiete für die vorgestellten Datenstrukturen besprochen, so dass den Studierenden eine Übertragung in weitere Einsatzgebiete erleichtert wird. Die Studierenden erhalten im Rahmen dieses Moduls aber auch einen Eindruck von den Grenzen der Lösungsmöglichkeiten durch bekannte Algorithmen und Datenstrukturen.

Voraussetzung für die Teilnahme:
Der Studierende benötigt die Kenntnisse der Module: Grundlagen der Informatik, Grundlagen der Programmierung, Maschinenorientiertes Programmieren, Keine Teilnahmebeschränkung

Geschätzter studentischer Arbeitsaufwand (workload):
3 ECTS-LP (90 Stunden)

Beschreibung der Lehr- und Lernformen:
Seminaristischer Unterricht (4-stündig)

Häufigkeit des Angebots:
Das Modul dauert ein Trimester und wird jeweils im Herbsttrimester ab dem 2. Studienjahr angeboten. Das Modul wird pro Studienjahr einmal angeboten.

App-Programmierung mit Swift

Wahlpflichtmodul Technische Informatik und Kommunikationstechnik (B. Eng.)

Inhalte:

  • Programmierung in Swift,
  • Struktur und Lebenszyklus von Applikationen,
  • Erstellung einer App mit Swift,
  • Design von GUIs,
  • Datenhaltung,
  • Entwicklungswerkzeuge,
  • Debuggen

Qualifikationsziele:

Die Studierenden erlernen das Programmieren von Apps mit Swift. Sie kennen den Lebenszyklus und die Struktur dieser Apps. Insbesondere werden die Grundlagen zur Programmierung mobiler Applikationen unter iOS erlernt. Grundlegende Bibliotheken für die Programmierung zur Erstellung von Apps in Swift sind den Studierenden danach bekannt. Außerdem beherrschen die Studierenden den Einsatz einer Entwicklungsumgebung zur Programmierung von Apps in Swift.

Voraussetzung für die Teilnahme:

Die Studierenden benötigen die Kenntnisse der Module: Grundlagen der Programmierung, Maschinenorientiertes Programmieren, die Teilnehmerzahl ist auf 8 begrenzt.

Geschätzter studentischer Arbeitsaufwand (workload):
3 ECTS-LP (90 Stunden)

Beschreibung der Lehr- und Lernformen:
Seminaristischer Unterricht (4-stündig)

Häufigkeit des Angebots:
Das Modul dauert 1 Trimester. Das Modul beginnt jedes Studienjahr jeweils im Herbsttrimester. Als Startzeitpunkt ist das Herbsttrimester im 2. Studienjahr vorgesehen.

Erstellen von HTML5-Anwendungen

Modulverantwortliche:
Prof. Dr. Dieter Pawelczak und Prof. Dr. Andrea Baumann

Inhalte:
HTML5 Anwendungen können auf allen Endgeräten, die über einen Browser verfügen, plattformunabhängig ausgeführt werden. Im Rahmen des Moduls werden Beispielanwendungen mit Hilfe unterschiedlicher Technologien umgesetzt. Zum Einsatz kommen z.B. CSS3 (Cascading Style Sheets), JavaScript und JavaEE (Java Platform, Enterprise Edition). Dazu werden wir die Kernelemente der deklarative Sprachen CSS3 und der Skriptsprache JavaScript kennenlernen. Konzepte der client- und serverseitigen Datenhaltung werden betrachtet. Als Anwendungsserver verwenden wir den Oracle Glassfish Server. Darüberhinaus setzen wir verschiedene Frameworks ein, die uns bei der HTML5- Anwendungsentwicklung unterstützen, z.B. GWT (Google Web Toolkit) oder auch Cross Compiling mit XMLVM und Emscripten.

„HTML5“

Qualifikationsziele:
Mit Hilfe der erworbenen Kenntnisse können die Studierenden erste einfache HTML5-Anwendungen mit CSS, JavaScript und JavaEE bauen und verstehen Frameworks zur Entwicklung von HTML5 Anwendungen einzusetzen.

Voraussetzung für die Teilnahme:
Der Studierende benötigt die Kenntnisse der Module: Grundlagen der Informatik, Grundlagen der Programmierung, Maschinenorientiertes Programmieren, Maximal 12 Teilnehmer

Geschätzter studentischer Arbeitsaufwand (workload):
3 ECTS-LP (90 Stunden)

Beschreibung der Lehr- und Lernformen:
Seminaristischer Unterricht (4-stündig)

Häufigkeit des Angebots:
Das Modul dauert ein Trimester und wird jeweils im Frühjahrstrimester ab dem 2. Studienjahr angeboten. Das Modul wird pro Studienjahr einmal angeboten.

WPM Grundlagen für Hackathons

Studiengang
B.Eng. Technische Informatik und Kommunikationstechnik

Modulbestandteile:
Praktikum mit 4 TWS

Modulverantwortliche:
Prof. Dr. Andrea Baumann

Inhalte:
Die Studierenden lernen verschiedene Techniken und Programmiersprachen kennen, die man zum Beispiel für Hackathons benötigt. Es werden verschiedene kleine Projekte umgesetzt. Dazu kommen verschiedene Vorgehensweisen, Tools und Programmiersprachen zum Einsatz:

  • Löten und Programmierung eines Roboterbausatzes. (z.B. den BOB3)
  • Elektronische Schaltung auf Steckboards ausprobieren. (z.B. einen Taschenrechner)
  • Verwendung einer EDA-Software (Electronic Design Automation) zur Automatisierung von Elektronikentwürfen. (z.B. mit EAGLE)
  • Verwendung der Arduino-IDE zur Entwicklung einer Steuerung mit Sensoren und Aktoren. (z.B. eine Gewächshaussteuerung)
  • Erste Programmierung auf einem Raspberry Pi. (z.B. Python mit Minecraft-API oder Node-RED)
  • 3D-Modellierung für 3D-Druck. (z.B. mit Blender)
  • Erstes Hacking mithilfe eines Keystroke Injection Angriffs. (z.B. mit dem USB Stick - Rubber Ducky)
  • Programmierung eigener Sprachbefehle. (z.B. mit Alexa)

 

Qualifikationsziele:
Die Studierenden kennen nach der erfolgreichen Teilnahme am Modul einige grundlegende Techniken, die für Entwicklung von elektronischen Prototypen relevant sind:

  • Löten einfacher Bauteilen auf eine Platine.
  • Einsatz von Steckboards zur Entwicklung eigener Schaltungen.
  • Einsatz verschiedener einfacher IDEs, wie zum Beispiel die Arduino IDE oder Thommy, zur Entwicklung eigener Programme.
  • Verstehen einfacher Programme in verschiedenen Programmiersprachen.
  • Erste Kenntnisse über den Einsatz verschiedener Plattformen, wie zum Beispiel den Raspberry Pi oder den Arduino.
  • Erste Kenntnisse zum Einsatz einer Software zur Automatisierung von Elektronikentwürfen, wie zum Beispiel EAGLE.

 

Voraussetzung für die Teilnahme:
keine

Geschätzter studentischer Arbeitsaufwand (workload):
3 ECTS-LP (90 Stunden)

Leistungsnachweis
mündliche Prüfung 20 Minuten mit Prädikat "mit Erfolg abgelegt" oder "ohne Erfolg abgelegt"

Häufigkeit des Angebots:
Das Modul dauert ein Trimester. Das Modul beginnt jedes Studienjahr jeweils im Herbsttrimester. Als Startzeitpunkt ist das Herbsttrimester im 1. Studienjahr vorgesehen. Die Teilnehmeranzahl ist auf 8 begrenzt.