Department of Computer Science | Institute of Theoretical Computer Science | CADMO

Theory of Combinatorial Algorithms

Prof. Emo Welzl and Prof. Bernd Gärtner

Informatik I (D-ITET) WS04/05
Theory of Combinatorial Algorithms Institute for Theoretical Computer Science Department of Computer Science ETH Zurich

Informatik I für D-ITET im WS04/05

Termine

Vorlesung: Mittwoch 8:15-10:00, ETF C1.
Joachim Giesen, IFW B48.3, Tel: 01-632 73 39, giesen@inf.ethz.ch.
Übung:
Bernhard Seybold, IFW C48.1, Tel: 01-632 72 49, bernhard.seybold@inf.ethz.ch.
Gruppe A,Montag 14:15-16:00,IFW A34,Diana Senn.
Gruppe B,Montag 14:15-16:00,ETZ F91,Cyril Flaig.
Gruppe C,Montag 14:15-16:00,ETZ J91,Ivan Guajana.
Gruppe D,Montag 14:15-16:00,ETZ E6,Simon Heinzle.
Gruppe E,Montag 14:15-16:00,RZ F21,Paul Drielsma.
Gruppe F,Montag 17:15-19:00,ETZ H91,Jürgen Doser.
Gruppe G,Montag 17:15-19:00,ETZ F91,Dieter Mitsche.
Gruppe H,Montag 17:15-19:00,ETZ G91,Andreas Ottiger.
Gruppe I,Montag 14:15-16:00,ETZ G91,Franziska Meyer.

Einschreibung

Wer an den Übungen teilnehmen will, muss sich in eine der Übungsgruppen einschreiben. Das entsprechende Formular findet man hier.

Inhalt

Das Ziel der Vorlesung ist eine algorithmisch orientierte Einführung ins Programmieren. Anhand der Sprache C++ werden zunächst die Elemente des prozeduralen Programmierens eingeführt, also Variable, Zuweisung, bedingte Anweisung, Schleife, Prozedur, Feld, Verbund und Zeiger. Dynamische Datenstrukturen werden an den Beispielen lineare Listen und Bäume studiert. Einige wichtige Algorithmen zum Suchen und Sortieren werden erklärt und bezüglich Korrektheit und Laufzeit- und Speicher-Effizienz analysiert. In einem zweiten Teil werden dann die weiteren Möglichkeiten von C++ ausgelotet, was auf die Konzepte des objektorientierten und des generischen Programmierens führt.

Hinweise zur Übung

Auf jeder Übungsserie gibt es mehrere Aufgaben, die schriftlich zu bearbeiten und zum angegebenen Termin - meist in der Woche darauf - abzugeben sind. Gruppenabgabe wie auch das Einreichen identischer Lösungen sind nicht zulässig.

Testatbedingungen

Am Ende der Übungen wird ein Testat vergeben. Das Testat erhält, wer
  1. sowohl auf den ersten sechs als auch auf den folgenden - wahrscheinlich ebenfalls sechs - Übungsserien jeweils mindestens 60% der möglichen Punkte erreicht, sowie
  2. mindestens die Hälfte der Schnellübungen sinnvoll bearbeitet.

Prüfung

Das Übungstestat ist Voraussetzung für die Zulassung zur Prüfung. Massgeblich für die Benotung ist allein die Prüfungsleistung.

Literatur

  • Andrew Koenig and Barbara E. Moo: Accelerated C++, Addison-Wesley, 2000.
  • Stanley B. Lippman: C++ Primer, 3. Auflage, Addison-Wesley, 1998.
  • Bjarne Stroustrup: The C++ Programming Language, 3. Auflage, Addison-Wesley, 1997.

Material


Datum Themen Übungsserie Lösungen Programme

#1 (20.10.2004) Grundlagen [PDF][PS] - prime.C, prog1.C, prog2.C, prog3.C, summe.C, absurd.C.
#2 (27.10.2004) Der elementare Datentyp int [PDF][PS] [PDF][PS] prime2.C, binaer.C, zufall.C, muenzwurf.C, fahrenheit.C.
#3 (3.11.2004) Gleitkommazahlen [PDF][PS] [PDF][PS] one.C, harmonic.C, harakiri.C, subtract.C.
#4 (10.11.2004) Boole'sche Ausdrücke [PDF][PS] [PDF][PS] random.C, newton.C.
#5 (17.11.2004) Funktionen [PDF][PS] [PDF][PS] math.h, math.C, prime.C, libifet-1.17.tgz.
#6 (24.11.2004) Rekursion, Strings [PDF][PS] [PDF][PS] ackermann.h, code.C, login.h, fib.h, ggt.h.
#7 (1.12.2004) Call by reference, Iteratoren, reguläre Ausdrücke [PDF][PS] [PDF][PS] mac2unix.C, mac2unix-index.C, mac2unix-iterator.C, linecount.C, freude.txt.
#8 (8.12.2004) Grammatiken, Parser [PDF][PS] [PDF][PS] calc-simple.C.
#9 (15.12.2004) Der Datentyp std::vector [PDF][PS] [PDF][PS] eratosthenes.C, eratosthenes-it.C, minsort.C.
#10 (22.12.2004) Sortieren [PDF][PS] [PDF][PS] quicksort.C, bubblesort.h.
#11 (12.1.2005) Ueberladen von Funktionen [PDF][PS] [PDF][PS] rational.C.
#12 (19.1.2005) Klassen [PDF][PS] [PDF][PS] rational.h.
#13 (26.1.2005) Dynamische Speicherverwaltung, Listen [PDF][PS] - list.C.
#14 (2.2.2005) Implementierung von Iteratoren für Listen - - list.C.


Skript [PS] [PDF]

Merkblatt zur Vorlesung [PS] [PDF]

Wichtige Unix Kommandos [PS] [PDF]

Cygwin

Cygwin ist eine Unix-artige Umgebung für MS Windows. Eine kurze Installationsanleitung findet man hier.

Eine cygwin shell öffnet man durch Doppelclick auf das schwarz-grüne cygwin icon. In dieser shell kann man mittels des Kommandos startx einen X-server und ein zugehöriges Terminal starten. So ein Terminal ist unsere bevorzugte Arbeitsumgebung, von wo aus man z.B. den emacs, den compiler g++ und die erstellten ausführbaren Programme aufruft.

Emacs

Das file .emacs solltet Ihr in Euer Heimatverzeichnis kopieren.

Unter Cygwin ist das Heimatverzeichnis im Verzeichnisbaum unterhalb des bei der Installation angegebenen cygwin Wurzelverzeichnisses zu finden, z.B. als c:\cygwin\home\myname.

OS-X

Mac OS 10 Benutzer sollten die Developer CD installieren, insbesondere auch das Paket X11. Eine grosse Auswahl von open source software packages wie z.B. emacs kann sehr bequem via fink installiert werden.

Last modified: $Date: 2004/10/19 14:18:20 $ by Joachim Giesen. Valid HTML 4.0! Valid CSS!