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
- Dozent*in: Mihaela Damian
- Dozent*in: Andreas Koch
- Dozent*in: Yannick Lavan
- Dozent*in: Johannes Wirth
- Dozent*in: Markus Anders
- Dozent*in: Kord Eickmeyer
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
- Dozent*in: Carsten Binnig
- Dozent*in: Iryna Gurevych
- Dozent*in: Benjamin Hättasch
- Dozent*in: Dominic Petrak
- Dozent*in: Matthias Urban
- Dozent*in: Liane Vogel
- Dozent*in: Dennis Zyska
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”
- Dozent*in: Markus Miettinen
- Dozent*in: Richard Peter Mitev
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.
- Dozent*in: Jens Frieß
- Dozent*in: Donika Mirdita
- Dozent*in: Carsten Schmidt
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
- Dozent*in: Andreas Brüggemann
- Dozent*in: Daniel Günther
- Dozent*in: Andreas Brüggemann
- Dozent*in: Daniel Günther
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
- Dozent*in: Andreas Koch
- Dozent*in: Tim Noack
- Dozent*in: Julian Oppermann
- Dozent*in: David Volz
- Dozent*in: Lukas Max Weber
- Dozent*in: Thomas Streicher
- Dozent*in: Marius Tritschler
- Dozent*in: Can Yaylali
- Dozent*in: Marie-Christine Jakobs
- Dozent*in: Tim Weißmantel
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
- Dozent*in: Richard Bubel
- Dozent*in: Julian Haas
- Dozent*in: Reiner Hähnle
- Dozent*in: Matthias Krebs
- Dozent*in: Krishna Narasimhan
Tutorenkurs zu Einführung in den Compilerbau 2021/22
- Dozent*in: Andreas Koch
- Dozent*in: Tim Noack
- Dozent*in: Julian Oppermann
- Dozent*in: David Volz
- Dozent*in: Lukas Max Weber
- Dozent*in: Volker Knauthe
- Dozent*in: Arjan Kuijper
- Dozent*in: Maximilian von Bülow