Inhalt

  • Technologische Grundlagen und Trends der Mikroelektronik
  • Entwurfsflüsse für mikroelektronische Systeme
  • Beschreibung von Hardware-Systemen
  • Charakteristika von Rechnersystemen
  • Architekturen für parallele Ausführung
  • Speichersysteme
  • Heterogene Systems-on-Chip
  • On-Chip und Off-Chip Kommunikationsstrukturen
  • Aufbau eingebetteter Systeme, z.B. im Umfeld von Cyber-Physical Systems

Lehrinhalte:
Anwendung des im Rahmen der grundlegenden Veranstaltungen erworbenen Wissens im Kontext eines komplexen Softwareentwicklungsprojektes. Die einzelnen Aufgabenstellungen werden dabei von Fachgebieten der TU Darmstadt gestellt und leisten im Regelfall einen Beitrag zu deren Forschung.
Schwerpunkte des Praktikums sind:
- Planung und Durchführung eines Softwareentwicklungsprojektes
- Anwendung von Softwareentwicklungsprozessen
- Ermittlung und Priorisierung von Anforderungen
- Durchführung systematischer Qualitätssicherung
- Präsentationstechnik
- Teamarbeit

Literatur:
Allgemein:
- Lehrbuch der Softwaretechnik: Softwaremanagement; H. Balzert; Springer
- Design Patterns - Elements of Reusable Object-Oriented Software; E. Gamma, R. Helm, R. Johnson, J. Vlissides; Prentice Hall
- Software Qualität - Testen, Analysieren und Verifizieren von Software; P. Liggesmeyer; Springer
- Writing Effective Use Cases; A. Cockburn; Pearson
- Clean Code: A Handbook of Agile Software Craftsmanship; R. C. Martin; Prentice Hall
Weiterhin ist je nach bearbeiteter Aufgabenstellung weitere Literatur notwendig.

Voraussetzungen:
Empfohlen: Erfolgreicher Abschluss der Veranstaltungen:
- Funktionale und Objektorientierte Programmierkonzepte
- Software Engineering


20-00-0903-iv Betriebssysteme

Lehrinhalte:

- Einführung in Betriebsysteme (BS) - Notwendigkeit, Design
- Prozesse und Threads - BS Datenstrukturen, Abstraktionen, Kernel/User mode, context switches, Interrupts
- Interprozeß-Kommunikation - IPC, RPC, Schnittstellen, Hierarchien, Messaging-Semantiken
- Koordination: Deadlocks - Critical sections, Deadlock-Charakterisierung, Entdeckung, Recovery und Vermeidung.
- Scheduling/Ressourcen-Management - Prozess-Reihenfolgen, unterbrechendes und unterbrechungsfreies Scheduling, verschiedene Scheduling-Konzepte und -Algorithmen, Implementierungen in BS
- Nebenläufigkeit: Races, Mutual Exclusions - Critical sections, races, spin locks, Synchronisation
- Semaphoren - Semaphoren, Monitore
- Speicherverwaltung - BS-Datenstrukturen, Management- und Austausch-Ansätze, virtueller Speicher, paging, caching, segmentation
- I/O - Geräte-Management, Treiber, Interrupt-Behandlung, DMA
- Dateisysteme - Anforderungen, Design, Implementierungen, Datenstrukturen, Verzeichnisse, virtuelle Dateisysteme
- Fehlertoleranz und Stabilität - Fehlertypen, zuverlässige Nachrichten, BS Zuverlässigkeit und Verfügbarkeit, Sicherheits-Aspekte
- Eingebettete & Echtzeit BS - Speicher/Festplatten/Performanz-Management, Fehlertoleranz, Echtzeit-Aspekte
- Verteilte BS - verteilte Berechnung und Kommunikation, Abstraktionen, Synchronisation, Koordination, Konsistenz
- Virtuelle Maschinen (VM) - Grundlagen und Typisierung von VMs und Hypervisoren

Literatur:


  • Operating Systems: Three Easy Pieces (v0.92); Remzi H. Arpaci-Dusseau & Andrea C. Arpaci-Dusseau; Arpaci-Dusseau Books
  • Modern Operating Systems, 4th Edition; Andrew S. Tanenbaum & Herbert Bos; Pearson; ISBN-13: 978-0133591620
  • Operating System Concepts, 9th Edition; Abraham Silberschatz, Peter B. Galvin, Greg Gagne; John Wiley & Sons; ISBN-13: 978-1118093757

Voraussetzungen:
Empfohlen:
“Algorithmen und Datenstrukturen”, “Funktionale und objektorientierte Programmierung”, “Rechnerorganisation”


Erste Veranstaltung: Mittwoch, 19. Oktober 2022, 15:20
Prüfungsdatum (falls Klausur): Mittwoch, 5. April 2023, 10:00

Studierende kennen nach erfolgreichem Besuch der Veranstaltung die wichtigsten Konzepte, Methoden und Modelle im Bereich der Kryptographie und der IT-Sicherheit. Sie verstehen die wichtigsten Methoden, um Software und Hardwaresysteme gegen Angriffe abzusichern und können diese auf konkrete Szenarien anwenden.

Lehrinhalte
  • Digitaltechnik: digitale Abstraktion und ihre technische Umsetzung, Zahlensysteme, Logikgatter, MOSFET Transistoren und CMOS Gatter, Leistungsaufnahme
  • Kombinatorische Schaltungen: Boole’sche Gleichungen und Algebra, Abbildung auf Gatter, mehrstufige Schaltungen, vierwertige Logik (0,1,X,Z), Minimierung von Ausdrücken, kombinatorische Grundelemente, Zeitverhalten
  • Sequentielle Schaltungen: Latches, Flip-Flops, Entwurf synchroner Schaltungen, endliche Automaten, Zeitverhalten, Parallelität
  • Hardware-Beschreibungssprachen: Modellierung kombinatorischer und sequentieller Schaltungen, Strukturbeschreibungen, Modellierung endlicher Automaten, Datentypen, parametrisierte Module, Testrahmen
  • Grundelemente digitaler Schaltungen: arithmetische Schaltungen, sequentielle Grundelemente, Speicherfelder, Logikfelder

Lehrinhalte:
- Aufbau von Compilern
- Kontextfreie Grammatiken zur Beschreibungen der Syntax von Programmiersprachen
- Lexing- und Parsingverfahren
- Zwischendarstellungen
- Semantische Analyse
- Laufzeitorganisation
- Code-Erzeugung
- Software-Werkzeuge für den Compilerbau
- Implementierungstechniken für Compiler

Literatur:
Literaturempfehlungen werden kontinuierlich aktualisiert, ein Beispiel für verwendete Literatur könnte sein:
Watt/Brown: Programming Language Processors in Java

Voraussetzungen:
Empfohlen: Erfolgreicher Besuch der Vorlesungen “Algorithmen und Datenstrukturen”, “Funktionale und objektorientierte Programmierung” sowie “Rechnerorganisation”, bzw. entsprechende Kenntnisse aus anderen Studiengängen

Erste Veranstaltung: Montag, 17. Oktober 2022, 17:10
Prüfungsdatum (falls Klausur): Dienstag, 15. März 2022, 08:00

Software Engineering

Kursinhalte:

  • Anforderungsanalyse und Use Cases
  • Modellierung der Anwendungsgebiets der Software
  • Softwarearchitektur
  • Softwarequalität und -testen
  • Entwurfsprinzipien und Entwurfsmuster
  • Wartung und Evolution von Software und Variabilität
  • Softwareentwicklungsmodelle

 Tutorenkurs zu Einführung in den Compilerbau 2021/22