aaaa
Die Studierenden lernen, komplexe Algorithmen mit einer systemnahen prozeduralen oder objekt-orientierten Programmiersprache wie C oder C++ korrekt zu implementieren.
Sie optimieren diese Algorithmen hinsichtlich der Ausführungsgeschwindigkeit mit verschiedenen Paradigmen wie Hybridisierung oder Techniken zur Cache-Optimierung.
Die Teilnehmer der Veranstaltung messen die Ausführungszeiten und überprüfen empirisch die asymptotische Laufzeit der implementierten Verfahren. Dazu erstellen sie verschiedener Testszenarien, um die Algorithmen darauf basierend zu vergleichen und zu beurteilen.
Die Studierenden dokumentieren und diskutieren die Ergebnisse. Sie analysieren ihre Optimierungen und erklären die Resultate.
Die zu behandelnden Informatikprobleme variieren. Typische Inhalte sind:
Die Übungsaufgaben und Zusatzmaterialien werden elektronisch (HTML, PDF, Programmgerüste) zur Verfügung gestellt.
Vorkenntnisse:
Vertiefte praktische Kenntnisse einer prozeduralen oder objekt-orientierten Programmiersprache wie C, C++, C# oder Java. Implementierung und Testen grundlegender Algorithmen aus dem Bereich der Such-, Graphen- und Sortierprobleme.
Format: Praktische Arbeit, Übungen im Labor mit geringem Vorlesunganteil. Die Ergebnisse werden in den praktischen Übungen von den Studenten vorgestellt und mit dem Dozenten diskutiert. Die Ergebnisse sind von den Studenten in einem Bericht zu dokumentieren.
Betreuung:
Individuelle Betreuung durch den Dozenten während der Präsenzzeit im Rechnerlabor. Außerhalb der Präsenzzeit via E-Mail oder während der Sprechzeiten des Dozenten.
Studierende dieses Kurses
Auswahl von behandelten Themen:
Historischer Überblick
Prozedurale Sprachen
Blockstruktur
Parameterübergabe
Objekt-orientierte Sprachen
Subtyping
Vererbung
Überladung
Seminaristischer Unterricht mit theoretischen und praktischen Übungen.