Algorithmen und Datenstrukturen Wintersemester 2012/13 Organisatorisches Vorlesung: Übungsbetreuung: Übungen: Programmierübungen: Alexander Wolff (E29) Jan Haunert (E27) Markus Ankenbrand Titus Dose Alexej Grigorjew Ion Alexandru Sangeorzan Peter Schneider Florian Wisheckel Florian Wisheckel
Algorithmen...... sind (wohldefinierte, endliche) Folgen von Anweisungen, die aus einer Eingabe eine Ausgabe produzieren. Algorithmus Eingabe Ausgabe Beispiele: Kochrezepte Algorithmen zur Verknüpfung (+,,, :) zweier Zahlen in Dezimaldarstellung Euklidscher Algorithmus Dijkstras Algorithmus
Algorithmen... Frage: Ist ein ausführbares Java-Programm ein Algorithmus? Ein Algorithmus ist eine (wohldefinierte, endliche) Folge von Anweisungen, die aus einer Eingabe eine Ausgabe produziert. Antwort: Dem Buchstaben der Definition nach: JA. Dem Geiste nach: NEIN. Ich würde sagen: Ein Algorithmus ist ein abstraktes Konzept; ein Programm ist eine Instanz dieses Konzeptes. Algorithmus in natürlicher Sprache oder in Pseudocode fixiert Programmierer ausführbares Programm maschinenlesbar meist länger als Beschreibung des Algorithmus
... und Datenstrukturen Datenstruktur: Konzept, mit dem man Daten speichert und anordnet, so dass man sie schnell finden und ändern kann. Abstrakter Datentyp: beschreibt die Schnittstelle einer Datenstruktur welche Operationen werden unterstützt? Implementierung: wie wird die gewünschte Funktionalität realisiert: wie sind die Daten gespeichert (Feld, Liste,...)? welche Algorithmen implementieren die Operationen?
Algorithmen & Datenstrukturen Lernziele: Inhalt: In dieser Veranstaltung werden Sie lernen... die Effizienz von Algorithmen zu messen und miteinander zu vergleichen, grundlegende Algorithmen und Datenstrukturen in Java zu implementieren, selbst Algorithmen und Datenstrukturen zu entwerfen sowie deren Korrektheit und Effizienz zu beweisen. Grundlagen und Analysetechniken Sortierverfahren Entwurfstechniken für Algorithmen Datenstrukturen Algorithmen für Graphen Systematisches Probieren
Ihre Voraussetzungen Schulmathematik, insbesondere: Grundrechenarten & Logarithmus Drei Summen: 1) n i=1 i 2) n i=0 qi 3) n i=1 1 i Linearität des Erwartungswerts Beweise mit vollständiger Induktion Widerspruchsbeweise Bereitschaft sich in Java hineinzudenken und -zuüben Keine Angst vorm Fragenstellen!!! z.b. log b x log b y = log? y x arithmetische Reihe geometrische Reihe harmonische Reihe E[X + Y ] = E[X ] + E[Y ]...... 1 2 3 n n + 1
Studienverlaufsplan BA Informatik Sem. 6 5 4 3 2 SWS: ca. 20 0 10 ECTS 20 30 Hardwareprakt. Softwareprakt. Mathe Inf III Mathe Inf II Seminar Wahl pflicht Theo. Inf. Progr.-Prakt. Rechenanlagen Bachelorarbeit Algorithmische Graphentheorie Logik Koll. Allgemeine Schlüsselqualifikationen Seminar Softwaretech. 1 Mathe Inf I Algorithmen+ Inf-Übertrag. Datenstrukt. 10 ECTS 20 h/woche
Organisation I: Wochenplan Montag Dienstag Mittwoch Donnerstag Freitag 08 10 Programmiertutorium E40 Vorlesung Zuse-HS Abgabe Lösungen 9:00 10 12 Vorlesung Zuse-HS WueCampus oder Briefkasten Ausgabe Ü-Blatter WueCampus 12 14 14 16 finden diese Woche schon statt! Übung SE I & II Übung SE II Übung SE II Laptop nötig! (Außer E40) 16 18 Übung SE II Übung SE II
Organisation II: Semesterplan 16.10. 18.10. 23.10. 25.10. 30.10. 01.11. 06.11. 08.11. 13.11. 15.11. 20.11. 22.11. 27.11. 29.11. 04.12. 06.12. 11.12. 13.12. 18.12. 20.12. 24.12. 06.01. 08.01. 10.01. 15.01. 17.01. 22.01. 24.01. 29.01. 31.01. 05.02. 07.02. 12.02. Start: heute! Allerheiligen 1. Test 2. Test Weihnachten Hl. 3 Könige 3. Test 1. Klausur 10:00 12:00 Turing+Zuse Spielregeln. Sie kriegen Ihre ETCS, wenn Sie zur Klausur zugelassen werden. Dazu brauchen Sie: 40% aller Testpunkte (Einzelarbeit) 50% aller Übungspunkte (Arbeit in 2er/3er-Gruppen) 0% Plagiate und die Klausur bestehen: 1. Termin oder 2. Termin Sie dürfen ( oft) wiederholen, solange Sie nicht bestehen. 2. Klausur: 09.04., 10:00 12:00, Turing
Literatur I Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms MIT Press, 3. Aufl., 2009 oder Algorithmen eine Einführung Oldenbourg, 3. Aufl., 2010. Ottmann & Widmayer: Algorithmen und Datenstrukturen Spektrum-Verlag, 4. Aufl., 2002. Mehlhorn & Sanders: Algorithms and Data Structures: The Basic Toolbox Springer, 2008. Goodrich & Tamassia: Data Structures & Algorithms in Java. Wiley, 5. Aufl., 2010
Literatur II D. Ratz, J. Scheffler, D.Seese, J.Wiesenberger: Grundkurs Programmieren in Java (Band 1) Hanser Verlag http://www.grundkurs-java.de/ C. Ullenboom: Java ist auch eine Insel Galileo Computing openbook.galileocomputing.de/javainsel8/
TO DO Erfüllen Sie die Voraussetzungen? log b x log b y =? Lesen Sie Anhang A im Buch von Corman et al.! Lösen Sie die Übungsaufgaben dazu! Schreiben Sie sich in die VL ein! Vorlesungsfolien und Übungsblätter: wuecampus2.uni-wuerzburg.de WueCampus Übungseinteilung bis Do, 13:00 Uhr: https://www-sbhome1.zv.uni-wuerzburg.de sb@home Installieren Sie vor Ihrer Übung das Java Development Kit (JDK 7u7 Standard Edition): www.oracle.com/technetwork/java/javase/downloads die Java-Entwicklungsumgebung Eclipse (neuste Version): www.eclipse.org/downloads