- 21.10.2016: Die Noten sind im Campus-Management eingetragen.
Bitte überprüfen Sie Ihren Eintrag. Bei Fragen
wenden Sie sich bitte so bald wie möglich an mich.
- 17.10.2016:
Die Nachklausur ist korrigiert. Sie können Ihre Punktzahl im
KVV nachlesen.
Das Notenschema ist hier. Die Nachklausur kann eingesehen
werden am Donnerstag, den 20.10.2016 von 11–12 Uhr im SR046.
Dabei können Sie auch die erste Klausur noch einmal einsehen.
- 31.08.2016:
Aufgrund eines Konflikts mit der Nachklausur Mathematik für Bioinformatiker II
wird die Nachklausur Informatik B verschoben. Die Nachklausur findet nun statt am
Freitag, den 14.10.2016, von 14–16 Uhr, im Hörsaal Informatik.
Dieser neue Klausurtermin ist nicht verbindlich. Das bedeutet: wenn Sie trotz Anmeldung
nicht erscheinen, dann wird das im Campus-Management-System nicht als 5 vermerkt. Ich
bitte Sie aber trotzdem, auf eine korrekte Anmeldung zu achten, damit ich den Bedarf planen kann.
- 02.08.2016:
Die Klausur ist korrigiert. Sie können Ihre Punktzahl im
KVV nachlesen.
Das Notenschema ist hier. Die Klausur kann eingesehen werden am
Donnerstag, den 04.08.2016 von 11–12 Uhr im SR055.
Der vorläufige Termin für die Nachklausur ist Donnerstag, der 13.10.2016,
von 10–12 Uhr. Dies kann sich aber noch ändern aufgrund eines Konflikts mit
der MaBi-Nachklausur. Details werden noch bekannt gegeben.
- 13.07.2016:
Am Freitag, den 22.07.2017 findet von 08–10 Uhr die Klausur statt.
Außer Schreibutensilien ist lediglich ein beidseitig handbeschriebenes
DIN-A4 Blatt als Hilfsmittel erlaubt. Bitte bringen Sie ein Personaldokument mit
Lichtbild sowie Ihren Studierendenausweis mit. Die Klausur findet statt im Hörsaal
Informatik und im SR 005. Nachnamen A–P
schreiben im Hörsaal Informatik, Nachnamen R–Z schreiben im SR 005,
Nachnamen Q haben sich nicht angemeldet und können nicht mitschreiben.
Bitte bis 08:05 Uhr die Plätze einnehmen. Klausurbeginn um 08:15.
- 13.07.2016: Am 15.07.2016 findet die Vorlesung ab 08:20 Uhr
im Hörsaal der Mathematik, Arnimallee 3 statt.
Das Tutorium am Dienstag, den 19.07.2016,
12:00 Uhr, wird verlegt vom SR 005 in den SR 046.
- 08.07.2016: Das zwölfte Aufgabenblatt ist verfügbar.
- 06.07.2016: Am 15.07.2016 findet die Vorlesung statt
im Hörsaal der Mathematik.
- 01.07.2016: Das elfte Aufgabenblatt ist verfügbar.
Aufgrund der Erkrankung eines Tutors werden die Dienstagstutorien von
Katharina Klost und Justus Pfannschmidt übernommen. Das
Mittwochstutorium wird mit dem Tutorium von Max Willert zusammengelegt.
- 24.06.2016: Das zehnte Aufgabenblatt ist verfügbar.
- 22.06.2016: Zur Klausurvorbereitung wird Max Willert
ab nächster Woche regelmäßig Zentralübungen mit
unterschiedlichen Schwerpunkten anbieten. Die Termine sind wie folgt:
- Fr 01.07., 14–16 Uhr, HS Informatik, Thema: O-Notation,
- Fr 08.07., 14–16 Uhr, HS Informatik, Thema: Algorithmen und Datenstrukturen,
- Fr 15.07., 14–16 Uhr, HS Arnimallee 3, Thema: Graphentheorie.
Besondere Wünsche bitte per E-Mail an Max Willert.
- 17.06.2016: Das neunte Aufgabenblatt ist verfügbar.
- 10.06.2016: Das achte Aufgabenblatt ist verfügbar.
- 06.06.2016: Am Dienstag, den 14.06.2016, 14–16 Uhr, findet die Übung von
Thimo Wellner ausnahmsweise im K23 statt.
- 03.06.2016: Das siebte Aufgabenblatt ist verfügbar.
- 27.05.2016: Das sechste Aufgabenblatt ist verfügbar.
- 20.05.2016: Das fünfte Aufgabenblatt ist verfügbar.
- 13.05.2016: Das vierte Aufgabenblatt ist verfügbar.
- 06.05.2016: Das dritte Aufgabenblatt ist verfügbar.
- 29.04.2016: Das zweite Aufgabenblatt ist verfügbar.
- 18.04.2016:
Die Tutorien beginnen am Dienstag, den 19.04.. Es besteht jedoch diese
Woche keine Anwesenheitspflicht. Statt dessen werden die Tutoren dabei
helfen, die benötigten Programme zu installieren (für Windows und Linux).
Bitte Laptops mitbringen. Wer nicht weiß, wie ein Java- oder Python-Programm gestartet
wird, welche Version die richtige ist oder wie man Pfad-Variablen setzt, ist willkommen
(alle anderen natürlich auch). Die Räume und Zeiten entsprechen den üblichen
Tutoriumsräumen bzw. -zeiten. Lediglich die Install-Parties am Dienstag finden beide in
SR006 statt.
- 18.04.2016:
Aufgrund der großen Nachfrage und einer Überschneidung mit der
Pflichtveranstaltung Biochemie wird das Tutorium von Max Willert von Mittwoch 12–14 Uhr auf
Donnerstag 12–14, SR051, verlegt. Diejenigen, die dort angemeldet waren, werden
automatisch in das neue Tutorium geschoben. Im KVV wird (aus technischen Gründen) das
Tutorium vom Mittwoch 12–14 Uhr, noch einige Zeit angezeigt werden. Bitte dort nicht
mehr anmelden.
- 11.04.2016: Die Anmeldung zu den Tutorien ist freigeschaltet.
Bitte melden Sie sich im KVV zu
einem Tutorium Ihrer Wahl an.
Das Tutorium 03 (Donnerstag, 10–12 Uhr) ist für Wirtschaftsinformatiker vorgesehen.
Falls Sie daran teilnehmen möchten, melden Sie sich bitte bei Max Willert.
Die erste Vorlesung findet statt am Mittwoch, den 20.04.2016, um 08:30 Uhr
im großen Hörsaal der Informatik. Der Übungsbetrieb beginnt in der zweiten
Vorlesungswoche.
Trotzdem finden die Tutorien in der ersten Woche bereits statt. Die Tutoren werden
Ihnen dabei helfen, die für die Vorlesung nötige Software auf Ihren Rechnern zu
installieren. Die Teilnahme ist freiwillig. Bitte beachten Sie, dass in der ersten Woche
beide Dienstagstutorien im SR 006 stattfinden.
- 01.04.2016: Das erste Aufgabenblatt ist verfügbar.
- 01.04.2016: Die Website ist online. Die erste Vorlesung findet
statt am Mittwoch, den 20.04.2016 um 08:30 Uhr.
Die Übungszettel werden ausschließlich online erscheinen
und zwar hier auf dieser Seite.
- Konzepte imperativer Programmierung
- Zustand, Anweisungen, Kontrollfluss
- Prozeduren, Funktionen, Aufrufkonventionen
- grundlegende Datenstrukturen
- Feld, Liste, Schlange, Stapel
- Prioritätswarteschlange
- fundamentale imperative Algorithmen
- Suchen und Sortieren
- Komplexitätsanalyse
- O-Notation
- Konzepte objektorientierter Programmierung
- Kapselung, Vererbung, Polymorphie
- Klassen und Exemplare, Modellierung mit Objekten
- Wörterbücher
- Hashtabellen
- binäre Suchbäume und AVL-Bäume
- Graphen
- Grundbegriffe
- Breitensuche, Tiefensuche
- minimale aufspannende Bäume und kürzeste Wege
- Algorithmenentwurf
- Teile und Herrsche
- dynamische Programmierung
- gierige Algorithmen
- Mittwoch, den 20.04.2016
- Administrativa
- Einleitung
- Modellieren von Problemen mit Graphen
- Breitensuche
- Freitag, den 22.04.2016
- Abschluss Breitensuche
- Einführung in die imperative Programmierung:
- Programmierparadigmen: deklarativ und imperativ
- von-Neumann-Architektur als Grundlage von imperativen Programmiersprachen
- Zustand und Anweisungen
- Typen von Anweisungen: Zuweisungen, Kontrollstrukturen, Ein-/Ausgabe
- Mittwoch, den 27.04.2016
- Grundlagen der imperativen Programmierung in Python:
- Zuweisungen
- Referenzsemantik und Wertesemantik
- Kontrollstrukturen
- Freitag, den 29.04.2016
- Grundlagen der imperativen Programmierung in Python:
- Kontrollstrukturen
- Schleifen: Bedingte Schleifen
(Beispiel)
- Ein-/Ausgabe
- Ausnahmen
(Beispiel)
- Ausführlicheres Beispiel:
Zahlenraten
- Mittwoch, den 04.05.2016
- Abschluss des Zahlenraten-Beispiels
- Wurzelziehen
- Datentypen in Python: einfache Datentypen:
Wahrheitswerte (bool), ganze Zahlen (int), Gleitkommazahlen (float),
komplexe Zahlen (complex)
- Freitag, den 06.05.2016
- Zusammengesetzte Datentypen in Python:
- Folgentypen (sequences)
- Listen (lists)
- Tupel (tuples)
- Bereiche (ranges)
- Zeichenketten (strings)
- Mengen (sets)
- Assoziativspeicher/ Wörterbücher (dictionaries)
- Mittwoch, den 11.05.2016
- Funktionen und Rekursion in Python
- Funktionen als Mittel zur Strukturierung von Programmen:
Beispiel
- Parameterübergabe: formale und tatsächliche Parameter,
Gültigkeitsbereich:
Beispiel
- Rekursive Funktionen: Fakultät und größter gemeinsamer Teiler:
Beispiel
- Freitag, den 13.05.2016
- Mehr zum euklidischen Algorithmus:
- iterative Variante
- Optimierung mit Modulo
- erweiterter euklidischer Algorithmus
- Quelltext
- Rekursion als Mittel zum Entwurf von Algorithmen: das Speisekartenproblem
(Rucksackproblem): Quelltext
- Mittwoch, den 18.05.2016 (vertreten von Paul Seiferth)
- Suchen und Sortieren in Python
- Freitag, den 20.05.2016 (vertreten von Paul Seiferth)
- Suchen und Sortieren in Python
- binäre Suche
- Insertion Sort
- Merge Sort
- Quicksort
- Quelltext
- Mittwoch, den 25.05.2016
- binäre Heaps, bubbleUp und bubbleDown
- Heap Sort
- Quelltext
- Freitag, den 27.05.2016
- Analyse von imperativen Algorithmen:
- Korrektheit, Spezifikation
- Effizienz, abstrakte Maschinenmodelle, worst-case Laufzeit
- O-Notation
- Mittwoch, den 01.06.2016 (vertreten von Yannik Stein)
- O-Notation
- Laufzeit von Sortieralgorithmen
- Freitag, den 03.06.2016 (vertreten von Yannik Stein)
- Mittwoch, den 08.06.2016
- ein längeres Beispiel in Java: Insertion Sort und binäre Suche
- Java-Notizen von Klaus Kriegel: Link
- Wege aus der Softwarekrise:
- strukturierte und prozedurale Programmierung
- modulare Programmierung
- objektorientierte Programmierung
- Freitag, den 10.06.2016
- Objekte: Attribute, Methoden, Identität
- Klassen: Vorlagen für Objekte
- Klassenvariablen und statische Methoden
- Kapselung, Zugriffsmodifizierer
- OOP-Notizen von Klaus Kriegel: Link
- Mittwoch, den 15.06.2016
- Vererbung, späte Bindung, Inklusionspolymorphie
- Interfaces: Mehrfachvererbung und Abstrakte Datentypen
- Beispiele:
- Freitag, den 17.06.2016
- Mittwoch, den 22.06.2016
- Abstrakte Datentypen in Java: Stapel und Schlange
- Freitag, den 24.06.2016
- Der abstrakte Datentyp Wörterbuch
- Mittwoch, den 29.06.2016
- AVL-Bäume
- Die Höhe eines AVL-Baums mit n Knoten ist O(log n):
Beweis
- Graphen: Motivation
- Freitag, den 01.07.2016
- Graphen: Definitionen und erste Beispiele
- Mittwoch, den 06.07.2016
- Graphen: Beispiele, Erreichbarkeit, Zusammenhang
- bipartite Graphen
- Freitag, den 08.07.2016
- Charakterisierung von bipartiten Graphen
- Bäume
- Mittwoch, den 13.07.2016
- Breitensuche und Tiefensuche
- Freitag, den 15.07.2016 (großer Hörsaal der Mathematik, 08:20 Uhr)
- Mittwoch, den 20.07.2016
- Freitag, den 22.07.2016
- Donnerstag, den 04.08.2016, 11–12 Uhr, SR 055
- Freitag, den 14.10.2016, 14–16 Uhr
- Donerstag, den 20.10.2016, 11–12 Uhr
Literatur
- J.V. Guttag. Introduction to Computation and Programming Using Python. MIT Press,
2. Auflage, 2013.
Angenehme Einführung in informatische Grundkonzepte mit Python. Schön zu lesen
und umfangreich.
- P. Morin. Open Data Structures. 1. Auflage. Online verfügbar
hier.
Umfassende Einführung in grundlegende Datenstrukturen. Ein Open Source
Buch.
- M.T. Goodrich, R. Tamassia. Data Structures and Algorithms in Java. Wiley, 6. Auflage,
2014.
Eigentlich sehr schöne Einführung in Algorithmen und Datenstrukturen,
die den Vorlesungsstoff gut abdeckt. Aufgrund der dreisten Preispolitik des Verlags
aber nur bedingt zu empfehlen.
- T.H. Cormen, C.E. Leiserson, R. Rivest, C. Stein. Introduction to Algorithms,
MIT Press, 3. Auflage, 2009.
Standardwerk zur Algorithmik. Geht weit über den Vorlesungsstoff hinaus.
- J. Kleinberg, E. Tardos. Algorithm Design. Addison-Wesley, 1. Auflage, 2005.
Alternatives Standardwerk zur Algorithmik. Besser zu lesen als CLRS, aber nicht ganz
so umfassend.
- R. Sedgewick, K. Wayne. Algorithms. Addison-Wesley, 4. Auflage, 2011.
Ein drittes Buch zur Algorithmik. Sehr ausführlich bei Sortieralgorithmen.
- U. Schöning. Algorithmik. Spektrum, 1. Auflage. 2001.
Auf deutsch.
- J. Lewis, J. Chase. Java Software Structures. Pearson, 4. Auflage, 2013.
Algorithmen und Datenstrukturen in Java.
Python und Java
Es wird eine Klausur am Ende des Semesters geben,
sowie eine Ersatzklausur vor Beginn des
nächsten Semesters.
Dabei gilt die Freiversuchsregel. Das heißt, man kann die
Ersatzklausur nutzen,
um das Ergebnis aus der Hauptklausur
zu verbessern (nur bei erstmaligem Absolvieren des Moduls).
Die Klausur findet statt am Freitag, den 22.07.2016 von 08–10 Uhr
im HS Informatik und im Seminarräum 005.
Die Nachklausur findet statt am Donnerstag, den 14.10.2016, von 14–16 Uhr
in den Hörsaal Informatik.
Für den Scheinerhalt muss man
-
regelmäßig an dem Tutorium teilnehmen (bei mindestens 80% der
Termine);
-
mindestens 60% der Punkte auf den Übungszetteln erreichen und
mindestens zweimal im Tutorium vorrechnen; und
-
die Klausur mit mindestens 50% der Gesamtpunktzahl
bestehen.
Die erfolgreiche Teilnahme am Übungsbetrieb und Teilnahme an der Klausur
sind unabhängige Leistungen.
Die Scheine sind benotet. Die Note beruht nur auf den
Klausurergebnissen.
Die Vorlesung findet statt Mittwoch und Freitag, 08:30–10:00 Uhr, im
großen Hörsaal in der Takustraße 9.
Es gibt vier Tutor_innen (Kahtarina Klost, Justus Pfannschmidt, Thimo Wellner und Max Willert).
Dienstag |
12:00–14:00 |
Takustr. 9, Seminarraum 005 |
Thimo Wellner/Justus Pfannschmidt |
|
14:00–16:00 |
Takustr. 9, Seminarraum 006 |
Thimo Wellner/Katharina Klost |
Mittwoch |
10:00–12:00 |
Takustr. 9, Seminarraum 053 |
Max Willert |
10:00–12:00 |
Takustr. 9, Seminarraum 055 |
Thimo Wellner |
Donnerstag |
10:00–12:00 |
Takustr. 9, Seminarraum 049 |
Max Willert |
|
12:00–14:00 |
Takustr. 9, Seminarraum 051 |
Max Willert |
Sprechzeit des Dozenten: Dienstag 14–15 Uhr in Zimmer 114 und
nach Vereinbarung.
Die Übungszettel werden jede Woche hier verlinkt. Sie werden
ausschließlich online erscheinen.
Die normale Bearbeitungszeit ist von Freitag bis zum Dienstag
11 Tage später. Die Zettel sind vor 12 Uhr
in die entsprechenden Tutorenfächer einzuwerfen. Die Bearbeitung
erfolgt in Zweiergruppen.
Übungszettel, die nach dem angegebenen Termin
abgegeben werden, zählen als nicht bearbeitet.
Nr. | Ausgabe | Abgabe |
pdf | tex | Bemerkungen |
1 |
01.04.2016 |
03.05.2016 |
|
|
mystery.py
Aufgabe 1b wurde aktualisiert. |
2 |
29.04.2016 |
10.05.2016 |
|
|
|
3 |
06.05.2016 |
17.05.2016 |
|
|
|
4 |
13.05.2016 |
24.05.2016 |
|
|
|
5 |
20.05.2016 |
31.05.2016 |
|
|
|
6 |
27.05.2016 |
07.06.2016 |
|
|
|
7 |
03.06.2016 |
14.06.2016 |
|
|
|
8 |
10.06.2016 |
21.06.2016 |
|
|
|
9 |
17.06.2016 |
28.06.2016 |
|
|
Stack.java
LinkedListStack.java
sbaum.hs
|
Probeklausur |
17.06.2016 |
keine |
|
|
|
10 |
24.06.2016 |
05.07.2016 |
|
|
|
11 |
01.07.2016 |
12.07.2016 |
|
|
letztes reguläres Aufgabenblatt |
12 |
08.07.2016 |
19.07.2016 |
|
|
freiwillige Zusatzaufgaben |