00. Vorlesung (13.10.2015)

Werbung
1
Lehrstuhl für Informatik I
Algorithmen und Datenstrukturen
Wintersemester 2015/16
Organisatorisches
Vorlesung:
Alexander Wolff (E29)
Übungsbetreuung:
Krzysztof Fleszar (E16)
Übungen:
Anna Aumann
Johannes Barthelmes
Fabian Feitsch
Alexej Grigorjew
Christoph Hagen
Michael Leeming
Bernd Zeidler
3
Algorithmen. . .
. . . sind (wohldefinierte, endliche) Folgen von Anweisungen,
die aus einer Eingabe eine Ausgabe produzieren.
Algorithmus
Eingabe
Beispiele:
Ausgabe
Kochrezepte
Algorithmen zur Verknüpfung (+, −, ·, :)
zweier Zahlen in Dezimaldarstellung
Euklidscher Algorithmus
Dijkstras Algorithmus
4
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
5
. . . 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?
6
Algorithmen & Datenstrukturen
Lernziele: 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.
Inhalt:
Grundlagen und Analysetechniken
Sortierverfahren
Entwurfstechniken für Algorithmen
Datenstrukturen
Algorithmen für Graphen
Systematisches Probieren
7
Ihre Voraussetzungen
Schulmathematik, insbesondere:
logb x
= logy x
z.B.
logb y
?
– Grundrechenarten & Logarithmus
Pn
– Drei Summen: 1) i =1 i arithmetische Reihe
Pn
2) i =0 q i geometrische Reihe
Pn 1
3) i =1 i harmonische Reihe
– Linearität des Erwartungswerts
E [X + Y ] = E [X ] + E [Y ]
– Beweise mit vollständiger Induktion
– Widerspruchsbeweise
...
1
2
3
...
n n+1
Bereitschaft sich in Java hineinzudenken und -zuüben
Keine Angst vorm Fragenstellen!!!
8
Studienverlaufsplan BA Informatik
0
10
SWS: ca. 20
30
20
ECTS
6
5
4
3
2
1
Seminar
Hardwareprakt.
Algorithmische
Graphentheorie
Allgemeine
Schlüsselqualifikationen
Wahl pflicht
Softwareprakt.
Stochastik
für Inf
Bachelorarbeit
Theo. Inf.
Progr.-Prakt.
Koll.
Sem.
Seminar
Logik
Mathe Inf II
Rechenanlagen
Softwaretech.
Mathe Inf I
Algorithmen+
Datenstrukt.
Inf-Übertrag.
10 ECTS ≈ 20 h/Woche
9
Organisation I: Wochenplan
Montag
30
(WueCampus
oder
Briefkasten)
und PABS
8 –10
Dienstag
Mittwoch
Abgabe
Lösungen
10:10
Vorlesung
Zuse-HS
Ausgabe
Ü-Blatter
WueCampus
10–12
Vorlesung
12–14
Übung
Übung
SE I
SE II
14–16
16–18
Zuse-HS
Finden diese
Woche
schon statt!
Diese Woche
beliebig
aussuchen!
Donnerstag
Übung
Übung
SE II&III
SE II
Übung
Übung
SE I
SE II
Ab und zu
Laptop nötig!
Freitag
10
Organisation II: Semesterplan
13.10.
15.10.
20.10.
22.10.
27.10.
29.10.
03.11.
05.11.
10.11.
12.11.
17.11.
19.11.
24.11.
26.11.
01.12.
03.12.
08.12.
10.12.
15.12.
17.12.
22.12.
24.12.
-05.01.
07.01.
12.01.
14.01.
19.01.
21.01.
26.01.
28.01.
02.02.
04.02.
??.02.
Start: heute!
1. Test
2. Test
Weihnachten
Hl. 3 Könige
3. Test
1. Klausur
2. Klausur
10:00–12:00 (?) Turing+Zuse
??. April, 10:00–12:00, Zuse-HS
11
Organisatorisches III: Studienordnungen
< 2014
1 Modul 2 Module
(kombiniert)



dito, für 


Klausurzulassung 




Pflicht!
2014
Übungsmodul:
– 40% aller Testpunkte (Einzelarbeit)
– 50% aller Übungspunkte
(Arbeit in 2er/3er-Gruppen)
– 0% Plagiate
2015
1 Modul
(kombiniert)
 dito,




 Voraussetzung

für Bonus



Notenpunkte –
 (0,3
falls 1. Klausur
bestanden wird)
oder
– Übungsklausur (4h) am Semesterende
Vorlesungsmodul:
(
dito
– Vorlesung + Klausur (benotet)
– Sie dürfen (∞ oft) wiederholen,
solange Sie nicht bestehen.
)
dito
12
Literatur zu Algorithmen & Datenstrukturen
Cormen, Leiserson, Rivest, Stein:
Introduction to Algorithms
MIT Press, 3. Aufl., 2009. Ca. 52 e. oder
Algorithmen – eine Einführung
Oldenbourg, 3. Aufl., 2010. Ca. 80 e.
Kleinberg & Tardos:
Algorithm Design
Pearson, 2006. Ca. 90 e.
Ottmann & Widmayer:
Algorithmen und Datenstrukturen
Spektrum-Verlag, 5. Aufl., 2012. Ca. 50 e.
Mehlhorn & Sanders:
Algorithms and Data Structures: The Basic Toolbox
Springer, 2008. Ca. 38 e.
Goodrich & Tamassia:
Data Structures & Algorithms in Java.
Wiley, 5. Aufl., 2010. Ca. 115 e.
13
Literatur über Java
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/javainsel/
Für alle, die Java noch nicht kennen und nicht beim Vorkurs waren:
→ WueCampus-Kurs Einführung in die Programmierung“ (WS15):
”
https://wuecampus2.uni-wuerzburg.de/moodle/enrol/index.php?id=13988
Arbeiten Sie insbesondere alle Übungsaufgaben durch!
14
TO DO
Erfüllen Sie die
Voraussetzungen?
logb x
=?
logb 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 Fr, 23:59 Uhr:
https://www-sbhome1.zv.uni-wuerzburg.de sb@home“
”
Installieren Sie vor Ihrer Übung
– das Java Development Kit (JDK 8u60 Standard Edition):
www.oracle.com/technetwork/java/javase/downloads
– die Java-Entwicklungsumgebung Eclipse (neuste Version):
www.eclipse.org/downloads
Herunterladen