Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Organisatorisches und Einführung
Lehrpersonal Dozent Dr. Letschert Tutoren Alissia Sauer Jonas Dickel Nina Isensee Seite 2
Unterlagen Folien, Aufgaben, siehe Moodle-Kurs Literatur Levitin: Introduction to the Design and Analysis of Algorithms (3te Auflage, 2012) Cormen, Leiserson, Rivest, Stein: Algorithmen - Eine Einführung Saake, Sattler: Algorithmen und Datenstrukturen: Eine Einführung mit Java Sedgewick: Algorithmen in Java Veranstaltungsform Unser Stoff ist elementarer als der in der üblichen Literatur zum Thema. 6 SWS: 4V + 2Ü Bitte bringen Sie Ihr Notebook mit einer funktionieren Java-Installation (Eclipse, o.a.) zu jeder Veranstaltung mit! Bitte kommen Sie pünktlich und nur wenn Sie sich an der Veranstaltung aktiv oder passiv beteiligen wollen! Seite 3
Bewertung Für Teilnehmer die bereits jetzt Klausurzulassung haben: Eine Klausur Bitte melden Sie sich bis spätestens zu 1. 6. wenn Sie bereits über eine Zulassung verfügen! Alle Teilnehmer, die eine Klausurzulassung noch erreichen müssen, benötigen zwei Hausübungen als Klausurzulassung. Die Bewertung der Hausübungen kann in die Endnote einfließen. Seite 4
Hausübungen Die Klausurzulassung wird mit zwei bestandenen Hausübungen erreicht. Hausübung 1 Hausübung 1 gilt als erledigt wenn 5 sogenannte HÜ-1 Übungen (auch Sternchen- Aufgaben) erfolgreich präsentiert wurden. Diese Übungen werden auf den Übungsblättern besonders gekennzeichnet. Jede weitere erfolgreich präsentierte HÜ-1-Übung wird mit einem Bonuspunkt honoriert. Die Präsentation erfolgt individuell bei und in Absprache mit den Tutoren. Dabei muss auch demonstriert werden, dass die Lösung selbständig erarbeitet wurde. Bei der Präsentation der ersten HÜ-1 Übung muss der Nachweis erbracht werden, dass die Veranstaltung OOP erfolgreich absolviert wurde. (Bitte einen Notenauszug mitbringen.) Seite 5
Hausübungen Hausübung 2 In dieser Hausübung wird ein Programmierprojekt bearbeitet. Hausübung 2 wird in Gruppen von 1 4 Mitgliedern bearbeitet. Die Anmeldung zu Hausübung 2 muss bis zum 1. 6. 2016 erfolgen. Alle Gruppenmitglieder müssen dazu 4 der notwendigen 5 HÜ-1 Übungen erreicht haben. Hausübung 2 wird in einem seminaristischen Vortrag präsentiert und verteidigt. Die gelöste Aufgabe (als Jar-Datei) sowie die Folien der Präsentation (als PDF-Datei) müssen vor der Präsentation eingereicht und akzeptiert werden. Bei der Präsentation müssen alle Gruppenmitglieder anwesend sein und ihren Beitrag zur Lösung der Aufgabenstellung überzeugend darstellen. Seite 6
Übungsbetrieb Von den Teilnehmern wird eine aktive Beteiligung am Übungsbetrieb erwartet. Mehrere Übungstermine stehen dabei am Freitag zur Auswahl: 1-ter, 2-ter und 3-ter Block Zur Präsentation der Hausübungen können andere oder zusätzliche Termine vergeben werden. Seite 7
Vorausgesetzte Kenntnisse Kenntnisse und Fertigkeiten, die nach einem erfolgreichen Abschluss folgender Veranstaltungen erwartet werden: Grundlagen der Informatik OOP Diskrete Strukturen Vorausgesetzte Leistungen Die Teilnahme an der Veranstaltung setzt laut Modulhandbuch voraus: Grundlagen der Informatik OOP Formal geprüft wird davon nur OOP: Ohne eine vorliegende Leistung in OOP ist eine Teilnahme an der Veranstaltung nicht möglich! Seite 8
Inhalt Inhalt bekannte Algorithmen und Datenstrukturen anwenden Entwicklung von Algorithmen Bewertung von Algorithmen Datentypen und Datenstrukturen Vertiefung und Erweiterung der Programmierfertigkeiten (in Java) Seite 9
Inhalt Algorithmen Wohl-definiertes schrittweise Verfahren zum Lösen von Problemen Programm implementierter (realisierter) Algorithmus An einen Computer gerichteter Vortrag über ein Verfahren zur Problemlösung Algorithmisches Problemlösen Problem verstehen (Beispiele betrachten!) Welche Mittel werden eingesetzt (Prozeduren, Prozesse, )? Exakte oder ungefähre Lösung gesucht? Ist das Problem bereits gelöst (auf einer anderen Abstraktionsstufe)? Welche algorithmische Technik kann eingesetzt werden? Welche Datenstrukturen werden eingesetzt? Spezifikation der Lösung Analyse des Algorithmus : Korrektheit Effizienz Implementierung / Codierung Analyse der Implementierung : Test Seite 10
Inhalt Allgemein bekannte und eigene Algorithmen Sehr viele algorithmische Probleme sind gelöst Die Problemlösungen sind bekannt und i.d.r. besser gelöst als durch eigene Anstrengungen Bekannte Algorithmen stehen in sprachspezifischer Form zur Verfügung (Bibliotheken, Frameworks) muss jeder Entwickler kennen und verwenden! stehen in abstrakter Form zur Verfügung (Bücher, Skripte, Wikipedia) sollte jeder Informatiker (muss jeder Bachelor) kennen und verwenden können Problemlösung in der Praxis 1. Ist das Problem in einer sprachspezifischen Form bereits gelöst? (API) Wenn ja: Verwende diese Lösung! 2. Ist das Problem generell gelöst? Wenn ja: Passe die (i.a. abstrakte) Lösung an dein Problem an! 3. Werde kreativ! Welche algorithmische Strategie ist angemessen? Wende sie an! Seite 11
Inhalt Lernziel Algorithmen in Form einer Java-Implementierung verwenden können die in abstrakter Form gegeben sind, umsetzen können in konkrete Form Algorithmen neu entwickeln und bewerten können Datenstrukturen in Form von Kolletionstypen in Java verwenden können gängige Datenstrukturen kennen Datenstrukturen in (Java-) API-konformer Art implementieren können Man kann nie sicher sein, dass man bestimmte Dinge nicht gefragt wird. http://www.youtube.com/watch?v=k4rri_ntqc8&feature=related Seite 12
Inhalt Unterrichtssprachen Deutsch Java 8 In diesem Kurs wird Java 8 verwendet. Mit Java-8 neu eingeführte Sprachkonstrukte werden in beschränkten Umfang genutzt. Seite 13