Informatik II - FS 2019


Vorlesungsverzeichnis: 252-0845-00L
Dozenten: Felix Friedrich, Hermann Lehner

Datum Mitteilung
19.12.2019 Prüfung August 2019 online (s. unten)

Termine

Vorlesung Montag 12:45-14:30 HIL E 3
Übungen Donnerstag 12:45-14:30, 14:45-16:30 Verschiedene Räume

Lernziel und Überblick

Zusammen mit der Veranstaltung Informatik I bietet diese Veranstaltung eine Einführung in die Grundlagen der Programmierung. Die Vorlesung II vermittelt insbesondere die gebräuchlichsten Algorithmen und Datenstrukturen. Verwendete Programmiersprachen der Vorlesung sind Java und Python.

Studenten beherrschen nach erfolgreichem Abschluss der Vorlesung die Mechanismen zur Erstellung eines Programmes im objektorientierten Kontext. Sie kennen die gängigen Datenstrukturen und Algorithmen. Sie können korrekte und ausreichend effiziente Programme entwickeln, um eine klar formulierte Problemstellung zu lösen.

Es wird generell das formale Denken und Notwendigkeit zur Abstraktion, sowie die Bedeutung geeigneter Modellbildungen für die Informatik motiviert. Der Schwerpunkt der Vorlesung liegt auf der praktischen Informatik. Konkrete Themen sind u.a.: Komplexität von Algorithmen, Divide and Conquer-Prinzip, Rekursion, Sortieralgorithmen, Datenstrukturen (Listen, Stacks, Warteschlangen, binäre Bäume) und Algorithmen auf Graphen.

Die Konzepte der Vorlesung werden jeweils durch Algorithmen und Anwendungen motiviert und illustriert. Verwendete Programmiersprachen der Vorlesung und der praktischen Übungen sind Java und Python.

Für das effiziente Praktizieren der vorgestellten Inhalte wird in den Übungen ein Online-Compiler mit Abgabesystem verwendet.

Code Expert IDE Sandbox

Um eigene Programme auszuprobieren, empfehlen wir folgendes Sandbox Projekt:

Your personal Java Playground

Slack Channel

Hier können Sie Fragen an alle richten und Feedback geben:

Slack Channel

Invite Link

Material

Die Vorlesungsunterlagen bestehen aus Vorlesungsfolien und Übungsunterlagen. Die Vorlesungsfolien sind auf Deutsch verfasst und stellen zusammen mit den Übungsblättern den Prüfungsstoff dar.

Übungsserien und Vorlesungsfolien

Die erste Übungsserie und die Folien zur Vorlesung werden in der ersten Vorlesungswoche aufgeschaltet.

Zeitplan, Folien und Übungen

Dies ist ein Plan und als solcher unterliegt er Änderungen -- auch und insbesondere nach Semesterbeginn.

Woche Datum Thema Vorlesung Übung PPrerequisites to unlock bonus exercises BBonus exercises
1 18.02. Einführung. Begriff des Algorithmus, Beispiel: Altägyptische Multiplikation
Komplexität. Random Access Machine Model, Effizienz von Algorithmen, Asymptotik: O-Notation, Omega, Theta
Organisation (english)
Folien 1 (en)
Handout 1 (en)
Einschreibung Uebungen
Asymptotics (Theory). Artificial Words
Slides (en)
Ant Algorithm
2 25.02. Suchen und Sortieren. Lineare Suche, Binäre Suche, Divide and Conquer, Selection Sort, Mergesort, Quicksort Folien 2 (en)
Handout 2 (en)
Recursive Function Analysis, Hottest Path, Mergesort
Slides (en)
3 04.03. Python I (Einführung) Folien 3 (en)
Handout 3 (en)
Python Introduction. Transfer from Java to Python.
Slides (en)
Ant algorithm
4 11.03. Python II (Data Processing ) Folien 4 (en)
Handout 4 (en)
Data Analysis with Python.
Slides (en)
Heap Datastructures
5 18.03. Java I/O und Exception Handling Folien 5 (en)
Handout 5 (en)
Processing Earthquake Data
Slides (en)
6 25.03. Wörterbücher: Hashtabellen, Hashfunktionen (Pre-Hashing und Hashing), Kollisionsauflösung durch Verkettung, Tabellenvergrösserung, offene Addressierung. Folien 6 (en)
Handout 6 (en)
Hashing, Finding a Substring (Rabin-Karp)
Slides (en)
Streams and Heaps
7 01.04. Bäume Suchbäume, Heaps (Wiederholung), Augmnentierung und balancierte (AVL) Bäume Folien 7 (en)
Handout 7 (en)
Binary Search Trees, Heaps and AVL Trees
Slides (en)
Shortest Paths
-- 08.04. -- --Sechseläuten-- Heaps and HeapSort
Slides (en)
8 15.04. Dynamische Programmierung Memoisieren, Optimale Substruktur, Überlappende Teilprobleme, Abhängigkeiten, Allgemeines Vorgehen. Beispiele: Schneiden von Eisenstäben, Kaninchen, Editierdistanz Folien 8 (en)
Handout 8 (en)
(Handschriftliche Notizen)
Dynamic Programming
Slides (en)
-- 22.04. -- --Osterferien--
9 29.04. Graphen Notation und Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren Folien 9 (en)
Handout 9 (en)
(Handschriftliche Notizen)
DFS, BFS and Topological Sorting.
Slides (en)
10 06.05. Kürzeste Wege Motivation, Dreiecksungleichung, Optimale Substruktur, Dijkstras Algorithmus auf Distanzgraphen, Algorithmus von Bellman-Ford Folien 10 (en)
Handout 10 (en)
(Handschriftliche Notizen)
(Clicker Frage)
Shortest Paths.
Slides (en)
Shortest Paths Graph
11 13.05. Minimale Spannbäume Motivation, Greedy, Algorithmus von Kruskal, Allgemeine Regeln, Union-Find Struktur, Algorithmus von Jarnik, Prim, Dijkstra Folien 11 (en)
Handout 11 (en)
(Handschriftliche Notizen)
Minimum Spanning Trees
Slides (en)
12 20.05. Maximaler Fluss Flussnetzwerk, Maximaler Fluss, Schnitt, Restnetzwerk, Max-flow Min-cut Theorem, Ford-Fulkerson Methode, Edmonds-Karp Algorithmus, Maximales Bipartites Matching Folien 12 (en)
Handout 12 (en)
(Handschriftliche Notizen)
Max Flow
Slides (en)
13 27.05. Wrap-Up, Evaluation, Prüfung Alle Folien (en)
Alle Handouts (en)
Alle Handouts (2x2) (en)
(kein Übungsbetrieb: Auffahrt)

Übungen

Einschreibung für die Übungen

Die Einschreibung zum Übungssystem erfolgt online. Weitere Informationen während der ersten Vorlesung.

Orte und Zeiten

Die Übungsgruppen sind derzeit wie folgt zugeteilt:
Zeit Assistent Ort Sprache
Donnerstag 13-15 Chris Wendler HIT F 31.1 deutsch
Donnerstag 13-15 Patrick Gruntz HIT H 51 deutsch
Donnerstag 13-15 Aristeidis Mastoras HCI J8 english
Donnerstag 15-17 Manuel Winkler HCI D4deutsch
Präsenzstunde Donnerstag 15-17 Michael Seeber HCI F2de/en
Präsenzstunde Donnerstag 17-19 Michael Seeber HCI F2de/en

Literatur

Wir versuchen, den Kurs grundsätzlich selbsterklärend zu gestalten. Trotzdem lohnt sich es sich natürlich immer, auch andere Quellen heranzuziehen.
  • Hanspeter Mössenböck, Sprechen Sie Java?, dpunkt Verlag, 5. Auflage 2014.
  • Thomas Ottmann, Peter Widmayer, Algorithmen und Datenstrukturen, Springer, auch online
  • T. Cormen, C. Leiserson, R. Rivest, C. Stein, Algorithmen - Eine Einführung, Oldenbourg, 2010
  • Aditya Y. Bhargava, Algorithmen Kapieren, mitp 2019
Folgende Links könnten Ihnen beim Erlernen der verwendeten Programmiersprache Java und als Nachschlagequellen hilfreich sein

Zur Prüfung

Modus

Prüfungsstoff für die Endprüfung, welche in der Prüfungssession Sommer 2019 stattfinden wird, schliesst Vorlesungsinhalt und Übungsinhalte ein.

Die Prüfung ist schriftlich. Erlaubte Hilfsmittel: Vier A4 Seiten (zwei A4 Blätter), handgeschrieben oder min. Fontgrösse 11 Pkt.