Vorlesung, Prof. Dr.-Ing. M. Heiner, SS 2013
latest update: February 27, 2017, at 08:37 PM
Ab sofort (07.06.2013) findet die Vorlesung freitags im HS C statt.
Studierende der folgenden Bachelor-Studiengänge, jeweils im 2. Semester nach dem Regelstudienplan
siehe auch Modulkatalog Modul 12101
Nach der Rahmenregelung für alle PO haben sich alle Studierende für jeden Modul, den sie belegen wollen, innerhalb der ersten drei Wochen selbständig und verbindlich beim Prüfungsamt anzumelden. Studierende in modularisierten Studiengängen können sich typischerweise online anmelden. Von dieser Anmeldung kann man innerhalb der ersten sieben Wochen zurücktreten. Mit der Anmeldung zu einer Lehrveranstaltung ist man für die zugehörige Prüfung angemeldet.
Ausserdem bitten wir zur Organisation des Übungsbetriebes um eine Anmeldung über LEHVIS.
Die Lehrveranstaltung besteht pro Woche aus
dienstags und freitags, 4. Block (13.45 - 15.15)
Beginn: 09.04.2013
Organisation:
Peter Sauer, peter (dot) sauer (at) tu-cottbus.de,
für weitere Informationen siehe Übungsseite
Beginn: 2. Vorlesungswoche
Erfolgreiche Übungsteilnahme ist eine binäre Prüfungskomponente.
Aus der Summe der in beiden Klausuren erreichten Punktzahlen errechnet sich die Prüfungsnote. Die Bewertung erfolgt nach dem üblichen Notenspiegel.
Die Prüfung zur Lehrveranstaltung setzt sich aus den folgenden zwei Bestandteilen zusammen:
(1) Übungsteilnahme UND
(2) Klausur (in zwei Teilen).
Es müssen beide Kriterien erfolgreich absolviert werden.
Im Verlaufe des Semesters wird es ACHT Übungsblätter geben. Alle Übungsblätter werden nach folgendem Schema bewertet:
Code | Schlagwort | Kommentar |
0 | ungenügend | nicht abgegebene oder nicht fristgerecht abgegebene oder unvollständige Lösungen werden automatisch mit "ungenügend" bewertet; dasselbe gilt für eingereichte Programme, die sich nicht erfolgreich übersetzen lassen. |
1 | nachbesserungsfähig | es gibt bei Bedarf eine ZWEIWÖCHIGE Frist zur Nachbearbeitung, um evtl. "bestanden"zu erreichen; wird diese Frist nicht eingehalten, wird das Blatt mit "ungenügend"bewertet. Falls auch die Nachbearbeitung mit "nachbesserungsfähig" bewertet wird, kann es im Ausnahmefall eine zweite Nachbearbeitung bis zum 23. August geben. |
2 | bestanden | das sollte der Regelfall sein |
Ein Übungsblatt wird als "bestanden" bewertet, wenn ca 75% der erwarteten Leistung erbracht werden. Die Übungsteilnahme wird mit erfolgreich bewertet, wenn mindesten SIEBEN Übungsblätter als "bestanden" bewertet werden.
ACHTUNG: Nicht erfolgreich bearbeitete Übungsblätter können bis zu zweimal nachbearbeitet werden, einmal innerhalb der nächsten zwei Wochen, ein zweites Mal bis zum 23. August 2013. Als Nachbearbeitung eingereichte Lösungen von Übungsblättern sind in einem Gespräch zu verteidigen.
Gegenstand der Bewertung der Übungsteilnahme ist die über das Semester gesammelte Dokumentation der Lösungen aller Übungsblätter. Gespräche im August beziehen sich damit automatisch auf die gesammelte Dokumentation.
Die Klausur besteht aus zwei Teilen: einer Zwischenklausur und einer Abschlußklausur. Die Klausur wird mit erfolgreich bewertet, wenn in der Summe mindestens 50 % der maximalen Punktzahl erreicht werden. Die Benotung erfolgt nach dem üblichen Notenspiegel.
Klausuren werden ohne Unterlagen (d.h. auch ohne Handy und ohne Wörterbücher) geschrieben.
Ein Credit entspricht 25-30 Arbeitstunden (Bachelorstudienordnung, §7). Somit gilt bei Annahme eines mittleren Wertes von 27:
Diese Aufwandskalkulation ist bei der Stoffauswahl und dem Verfassen der Aufgabenblätter berücksichtigt worden.
eine sehr kleine Auswahl nützlicher Literatur
Hinweis: (fast) jedes Fachbuch mit den Wörtern "Datenstrukturen" und/oder "Algorithmen" im Titel (in beliebiger Reihenfolge) tut es auch.
-> Prüfungsschwerpunkte
Organisationsform dieser LV, die Spielregeln zum Bestehen der LV; Literatur; Kurzüberblick zur Konzeption dieser LV;
Grundprinzipien des Programmierens: abstrahieren, modellieren, transformieren, implementieren;
informeller Algorithmus -> Psuedokode-Algorithmus -> Programm;
Beispiele: (1) Königsberger Brückenproblem, (2) Färbung von Graphen/Ampelsteuerung;
die Rolle von ADTn im Softwareentwicklungsprozeß;
Zum Programmieren im Kleinen:
Grundlegende Begriffe: Daten/Datentyp/abstrakter Datentyp, Konstante/Variable/Pointer, strukturierte Datentypen; souveräner Umgang mit Pointern und Prozeduren;
Zum Programmieren im Großen:
Modularisierung von Programmen, Implementierung von ADT;
Effizienz von Programmen, Laufzeitabschätzungen von nichtrekursiven und rekursiven Programmen; die Groß-Oh-Notation;
Anwendungsbeispiele: siehe weitere Abschnitte in diesem Kapitel;
Definition als ADT;
Implementierung durch Arrays + vier Varianten von Zeigerstrukturen;
Vergleich der Implementierungsvarianten bzgl. der Zeitkomplexität der Operationen;
Anwendungsbeispiele: Umkehren einer ZK, Überprüfen wohlgeformter Klammerausdrücke;
Definition als ADT;
Implementierung über Listen bzw. direkt durch Arrays + Zeigerstrukturen;
Anwendungsbeispiele: Zwischenspeicher in BS;
Definition als ADT;
Implementierung über Listen bzw. direkt durch zirkuläre Arrays + Zeigerstrukturen;
Anwendungsbeispiele: mathematischer Grundbegriff;
Definition als ADT;
Implementierung durch Bitvektoren + Zeigerstrukturen; weitere Implementierungen (siehe Kap. 4, Verzeichnisse);
Vergleich der Implementierungsvarianten bzgl. der Zeitkomplexität der Operationen;
Anwendungsbeispiele: mathematischer Grundbegriff;
Definition als ADT;
Implementierung über Mengen bzw. direkt durch Arrays + Zeigerstrukturen; weitere Implementierungen (siehe Kap. 4, Verzeichnisse);
Anwendungsbeispiele: mathematischer Grundbegriff (vgl. Abschnitt 1.1);
Definition als ADT (vgl. Abschnitt 1.1);
Implementierung durch Adjazenz-Matrizen/Listen + verschiedene Zeigerstrukturen;
ein Spezialfall: bipartite Graphen, z. Bsp. Petrinetze;
ein ausgewählter Basisalgorithmus: die Transitive Hülle mit verschiedenen Anwendungen;
grundlegende Begriffe, rekursive Definitionen durch Komposition/Zerlegung; Pre/In/Post-Order-Durchlaufverfahren, Formelbäume; Anwendungsbeispiele: Formelauswertung (mit Formelbäumen und Keller), Suchbäume, Spannbäume, Pixelgraphiken (die Katze im Viererbaum) ;
typische Operationen auf Bäumen; Durchlaufverfahren: rekursiv und nichtrekursiv, Wirbeltraversierung;
in vier allg. Varianten und einer sehr speziellen für links-vollständig binäre Bäume; ADT heap, Einfügen und Löschen am heap (vgl. 7.3, heap sort);
Anwendungen; Definition als ADT; einfache Implementierungen: ungeordnete/geordnete Arrays + Zeigerstrukturen;
allgemeine und binäre Suchbäume; Suche, Löschen und Einfügen;
vollständig ausgeglichene und ausgeglichen Suchbäume; Klassen ausgeglichener Suchbäume: [AVL-Bäume, ]
2/3-Bäume, B-Bäume;
Hash-Funktionen, Kollissionen, Wahrscheinlichkeit von Kollisionen; Behandlung von Kollissionen: geschlossenes/offenes Hashing; Sondiermethoden: lineares Sondieren, Doppelhash-Verfahren;
AUSGEWÄHLTE ALGORITHMEN & DATENSTRUKTUREN
Assertions, Generics - Einführung, Foreach-Schleife, Generic-Methods, Varargs;
allgemeines: interne/externe Sortierverfahren, Kriterien für den Vergleich von Sortierverfahren; zur Visualisierung der Sortierverfahren;
insertion sort, selection sort, bubble sort, shell sort;
bucket sort, radix sort
merge sort, quick sort, tree sort, heap sort: ADT heap, Einfügen und Löschen am heap;
---------------------Vorlesungsstand---------------------Vorlesungsstand---------------------
Materialien zur Vorlesung (Folien als pdf, Demo-Lösungen als Java-Quellen).
Zum Programmieren im Kleinen:
Zum Programmieren im Großen:
EULER:
eine spezielle Klasse bipartiter Graphen:
ein typischer Algorithmus auf Graphen:
Kollisionen und Vergleich internes/externes Hashing.pdf
ergänzendes Material:
---------------------Vorlesungsstand---------------------Vorlesungsstand---------------------