|
Diese Seite gibt weitere Informationen zur Vorlesung. Wir bemühen
uns diese Informationen so aktuell wie möglich zu halten.
Aktuelles
- Bringt bitte zu den Fachgesprächen die dazu nötigen
Formulare mit:
- Im Studiengang Informatik (Diplom) einen
Studienbegleitenden
Leistungsnachweis (SBLN) der wie
folgt ausgefüllt ist und zudem Euren Namen und
Eure Matrikelnummer enthält: Vorlage I.
- Für Studierende aller anderen Studiengänge ebenso ein SBLN wie oben mit passend
ersetztem Studiengang: Vorlage II
- Studierende im Studiengang Systems Engineering brauchen nichts
mitzubringen, die entsprechenden SBLNe erhalten die Veranstalter vom
zuständigen Prüfungsamt.
- Studierende in den Studiengängen Mathematik(Diplom) oder
Technomathematik(Diplom) geben bitte bis
spätestens zum Fachgespräch ihr Anmeldeformular zur
Fachprüfung im Nebenfach Informatik beim jeweiligen Tutor ab. Zum
Fachgespräch selbst ist der ausgefüllte
SLBN Vorlage II mitzubringen.
- Studierende anderer Studiengänge klären bitte mit ihrem
Prüfungsamt, welche Formulare nötig sind. Im Zweifelsfall
ist auch in diesem Fall ein SBLN des FB3 mitzubringen Vorlage.
Die Prüfungsordnung bestimmt im Übrigen, das die Kandidaten
sich ggf. durch Vorlage eines Identitätsnachweis mit Lichtbild
ausweisen müssen.
- Die Fachgespäche werden in der Woche 23. - 27. Juli
stattfinden. Terminvereinbarungen werden i.A. mit den Tutoren
getroffen.
- Fachgespräche bei Jan Peleska finden am 23. Juli statt, dazu
bitte Anmeldung per e-mail.
-
- Die Wiederholungsprüfungen finden am Montag, dem
24. September statt, bitte auch hier Terminabsprache direkt mit Jan
Peleska per mail.
Inhalt dieser Seite
Termine
VAK: |
03-05-G-700.02 |
Semester: |
SoSe 2007 |
Vorlesung: |
Mo., 13 - 15 Uhr, NW1
H2 (W0020), ab 16.4.2007
|
Die Tutorien werden in kleinen Übungsgruppen abgehalten. Die
Eintragung in die Gruppen findet am 16.04. statt. Bitte sorgt für eine
gleichmässige Auslastung der Gruppen.
Die Veranstaltung ist in zwei Bereiche gegliedert:
- In der Vorlesung werden die Themenbereiche der Praktischen
Informatik im Überblick vorgestellt. Wir versuchen,
Fragestellungen und ihre Lösungen zu motivieren, Schwerpunkte
zu setzen,
Zusammenhänge deutlich zu machen, wichtige Probleme zu
verdeutlichen und ganz allgemein den Zuhörern Appetit auf
weitere Vertiefung des Lehrstoffs zu machen.
- In den Tutorien wird der
vertiefte Stoff in
Gruppen eigenständig erarbeitet: Wir sind überzeugt, dass
echtes Verständnis nur aus der selbständigen intensiven
Beschäftigung mit der Materie entstehen kann. Daher wird im
Rahmen der Übungen Fachliteratur erarbeitet und zusammen mit den
Tutorinnen und Tutoren besprochen. In diesem Teil werden auch die
Lösungsansätze für die Aufgaben besprochen, die von den
Teilnehmern zu lösen sind.
Die folgende Liste von Lerninhalten wird im Laufe des Semesters
fortgeschrieben. Sie dient als Checkliste, mit welchen Themen und
Begriffen die Veranstaltungsteilnehmer vertraut werden sollten. Eine
"Session" entspricht einer zusammengehörigen Lerneinheit, sie muss
nicht notwendig in genau einer Vorlesung abgehandelt werden.
Session 1: Objektorientierung und Java
Vorlesung: Die wichtigsten Stichworte und Fakten zum Thema Objekt-orientierte Programmiersprachen und
Objektorientierung in Java.
Material zu Session 1: Beispiel 1 zum o.g. Text: Vererbung mit
Redefinition. Beispiel 2: Erzwingung von
Sortenreinheit (a) ohne Generics (class MyNotSoGenericStack ),
(b) mit Generics (class MyReallyGenericStack ), (c) mit
generischem Stack, der auf unbeschränkter generische Liste aufsetzt
(class MyReallyGenericUnboudedStack ).
Literatur zu Session 1: Schiedermeier: Programmieren mit Java, Pearson
Studium (2005): Abschnitt 4.7, Kapitel 8, Kapitel 12
Session 2: Komplexität von Algorithmen
Vorlesung: Komplexität von Algorithmen: Benötigter Aufwand in
Bezug auf (a) Speicherplatz und (b) Laufzeit. Der Aufwand hängt von der
sog. Problemgröße ab, dies sind ein oder
mehrere Parameter n, welche die Größe der Eingabedaten
bzw. des algorithmisch zu untersuchenden Raums charaktersieren. Weiterhin
hängt der Aufwand häufig von der Beschaffentheit der Daten (z.B. statistische Verteilung
der Eingabewerte) ab. Interessant ist dabei der n-abhängige Aufwand (a) für den besten
Fall - d.h. optimale Werteverteilung -, (b) den schlechtesten Fall (besonders
häufig interessiert die Worst Case Execution Time (WCET)), und (c) im
statistischen Mittel der Eingabewerteverteilung.
Für die zeitliche Aufwandsbestimmung wird die Anzahl der der in Abhängigkeit von der
Problemgröße auszuführenden Anweisungen zugrunde gelegt.
O-Notation für den asymptotischen Aufwand eines Algorithmus: Der vom
Algorithmus benötigte Aufwand
a(n) ist von der Ordnung O(g(n)), wenn eine Konstante
c existiert, so dass ab einem gewissen n0 für alle größeren
n immer a(n) <=
c*g(n) gilt.
Komplexitätsklassen O(1) [konstant], O(log n) [logarithmisch], O(n)
[linear], O(n*log n), O(n**k) [ploynomial],
O(2**n) [exponentiell]
Material zu Session 2:
Literatur zu Session 2: Gunter Saake, Kai-Uwe Sattler: Algorithmen und Datenstrukturen. dpunkt
2004, Abschnitt 7.3
Session 3: Algorithmen für die Syntaxprüfung
Vorlesung: Einfache deterministische EBNF-Grammatiken mit Hilfe (in der
Regel wechselseitig rekursiver) Java-Methoden prüfen. Die Operatoren der EBNF-Syntax geben Hinweise darauf,
wie der Syntaxchecker zu strukturieren ist:
- Neues nicht-terminales Symbol T : (ggf rekursiver)
Aufruf einer Methode
checkT() , welche die
mit T verbundenen Syntaxregeln prueft.
- |-Operator: Switch-Statement über die
Anfangssymbole einer jeden |-Alternative.
- Sequenz über terminale Symbole t1,t2,t3,...:
Konjunktion
getNextToken() == t1 &&
getNextToken() == t2 &&
...
- Optionales terminales Symbol [t]:
tok = getNextToken();
if ( tok == t )
tok = getNextToken();
// ... jetzt weiter mit check von tok
- Wiederholung {t}:
while ( (tok = getNextToken()) == t );
// ... jetzt weiter mit check von tok
Für dieses besonders einfache Verfahren müssen nicht-deterministische
Grammatiken zuerst in deterministische Form gebracht werden.
Material zu Session 3: Java Syntaxchecker für eine einfache Grammatik
Simplesyncheck.java
Session 4: Bäume und Graphen
Vorlesung:
- Definition ungerichteter Graph
- Definition gerichteter Graph
- Graphrepräsentation mit Adjazenzliste
- Graphrepräsentation mit Adjazenzmatrix
- Gerichtete, markierte Graphen als Transitionssysteme (Definition siehe
unten) - Interpretation von
Transitionssystemen
- Breitensuche in Graphen (Breadth-First Search BFS)
- Tiefensuche in Graphen (Depth-First Search DFS) und Test auf Zyklenfreiheit
- Topologisches Sortieren: Definition Halbordnung - Bestimmung der
Sortierreihenfolge mit Hilfe von DFS
- Definition von Bäumen
- Binäre Bäume: Elternknoten, Kindknoten,
Blätter - Höhe - Kanonische Datenstrukturen in Java - Einfügen, Suchen, Löschen auf
binären Bäumen - Inorder/Preorder/Postorder/Levelorder-Traversierung von
binären Bäumen - entartete binäre Bäume; die Notwendigkeit zur Balancierung
-
Eine kurze Zusammenfassung zu den AVL - Bäumen
-
Minimierung endlicher deterministischer Automaten (DFA): Siehe Erläuterungen dazu im
Manuskript von
Marek Chrobak: Minimization of Finite Automata. Eine einfache
Java-Implementierung findet man unter
Dfa.java. Der dabei behandelte Ursprungsautomat und der aus dem
Minimierungsalgorithmus resultierende Automat sind hier als dot-Bilder
dargestellt:
Literatur zu Session 4: Gunter Saake, Kai-Uwe Sattler: Algorithmen und
Datenstrukturen. dpunkt 2004, Kapitel 14 und 16
Definition (Transitionssystem):
Ein Transitionssystem (englisch Labelled Transition
System) ist ein Quadrupel
LTS = (S,s0,A,T) mit folgenden Eigenschaften:
- S ist eine endliche Menge, deren Elemente Zuständen von LTS
genannt werden.
- s0 ist eine Element von S, der der Anfangszustand von
LTS genannt wird.
- A ist eine endliche Menge, genannt das Alphabet von
LTS. Die Elemente von A heissen Label von LTS.
- T ist eine Teilmenge von S × A × S (also eine
dreistellige Relation), die Menge der Transitionen von LTS.
Ein Transitionssystem heisst deterministisch, wenn folgende
Bedingungen beide erfüllt sind:
- Wenn (z0,a,z1) eine Transition aus T ist,
dann folgt für alle (w0,b,w1) aus T mit
w0 = z0 und b = a auch
w1 = z1.
Eine Ausführung (englisch Execution) eines
Transitionssystems LTS = (S,S0,A,T) ist eine Folge
(z0,a0,z1,a1,z2,a2,
... ), so dass folgende Bedingungen erfüllt sind:
- z0 = s0
- Für alle i = 0,1,2,... gilt:
(zi,ai,zi+1) ist eine Transition aus T.
Session 5: Suchen in Texten
Vorlesung:
- Problemstellung: Suche des Musters (Pattern) pat[0..m] im Text
text[0..n]. Laufzeitkomplexität des naiven Suchalgorithmus ist O(n*m)
- Der Boyer-Moore Algorithmus mit günstigster Laufzeitkomplexität O(n/m)
Literatur zu Session 5: Gunter Saake, Kai-Uwe Sattler: Algorithmen und
Datenstrukturen. dpunkt 2004, Kapitel 17, insbesondere Abschnitt 17.3
Session 6: Refelection
Vorlesung:
- Attribut
class und (äquivalent) Methode
getClass() sind auf allen Objekten verfügbar und geben die
Referenz auf ein
``Auskunftsobjekt'' vom Typ Class an.
- Methoden auf Class bzw. Class-Instanzen:
- Methoden auf Method:
-
getName()
-
getParameterTypes()
-
invoke()
- Beispielprogramm
Java und Reflection.
Literatur zu Session 6: Link zur Dokumentation von
java.lang.reflect
In diesem Abschnitt findet Ihr die Aufgabenblätter und gegebenenfalls
Zusatzinformationen für die Lektürestunden zum Herunterladen und
ausdrucken.
Die Lösungen zu den Aufgabenblättern müssen mit LaTeX
gesetzt werden. Dazu gibt es die Dokumentenklasse und ein Beispiel für die Erstellung der
Lösungsvorschläge mit LaTeX/pdfLaTeX. Für manche Installationen
(z.B. MikTeX) werden auch noch fancyhdr.sty und moreverb.sty benötigt.
Diese kann man aber auch
über das Setup-Programm nachinstallieren (empfohlen)
Für die Bewertung der Programmieraufgaben haben
wir unsere Grundzüge
aufgeschrieben, ebenso wie Hinweise zum
Kommentieren und Testen der
Programme.
Die mit Latex gesetzten Übunszettel werden ausgedruckt und montags
nach der Vorlesung abgegeben. Quellcode müsst außerdem per Email an eure
Praktikumsleiter schicken.
Die Kriterien für den Erwerb eines Leistungsnachweises wurden in der
ersten Vorlesung verhandelt.
Aus den 10 Übungszetteln ergibt sich die Vornote für das
Fachgespräch am Ende des Semesters.
Ab 95%: 1,0
Ab 90%: 1,3
Ab 85%: 1,7
Ab 80%: 2,0
Ab 75%: 2,3
Ab 70%: 2,7
Ab 65%: 3,0
Ab 60%: 3,3
Ab 55%: 3,7
Ab 50%: 4,0
Unter 50%: nicht bestanden
Ein
Übungsblatt kann durch den Zusatzzettel (Serie 9 optional)
ersetzt werden.
An dieser Stelle findet sich eine kleine Auswahl an Literatur zur
Vorlesung. Weitere Lerninhalte, die nicht direkt in der hier genannten
Literatur verfügbar sind, werden als Skripte im Laufe des
Semesters im WWW veröffentlicht, die Links werden in diesem
Abschnitt angegeben.
Literatur zu Java
-
Die intuitive, motivierende ;-) Einführung in Java erfolgt
auf Grundlage des Tutoriums The Java Tutorial - A practical guide for
programmers welches im WWW unter
http://java.sun.com/docs/books/tutorial zu finden ist.
-
Das systematische, wissenschaftlich ausgerichtete Erlernen von Java
Syntax und Semantik erfolgt auf Grundlage der "offiziellen"
Dokumentation The Java Language Specification von James
Gosling, Bill Joy, Guy Steele und Gilad Bracha. Auch dieses Dokument
ist im WWW erhältlich:
http://java.sun.com/docs/books/jls/index.html
-
Einen guten Einstieg bietet das Handbuch Java 2 , Grundlagen
und Einführung geeignet, welches beim Zentrum für Netze
erhältlich ist.
- Die Java-Klassenbibliothek zum Nachschlagen
- Java-Buch das auch 1.5 behandelt: Programmieren mit Java von Reinhard
Schiedermeier, Pearson Studium
Online-Literatur zur Java
Algorithmen und Datenstrukturen
- Zu den Themen Algorithmen und
Datenstrukturen wird im Wesentlichen folgendes Buch verwendet:
Gunter Saake, Kai-Uwe Sattler: Algorithmen und Datenstrukturen. dpunkt
2004
Rechnerorganisation und -architektur
- Einige Grundlagen in Bezug auf Rechnerorganisation, -Architektur
und Assembler-/Maschinensprachen werden auf Basis des Buches
W. Oberschelp und G. Vossen: Rechneraufbau und
Rechnerstrukturen. Oldenburg 1998 eingeführt.
Latex
- Für die eingehendere Beschäftigung mit diesem System zum
anspruchsvollen Setzen von Dokumenten ist als Einstieg Leslie Lamport:
Das LaTeX Handbuch. Addison-Wesley 1995
- ebenso wie Helmut Kopka: LaTeX Einführung, Band
1. Addison-Wesley 2000 zu empfehlen.
- Alles, was in Bezug auf LaTeX für die Abgabe der
Aufgabenblätter notwendig ist,
findet man ebenfalls in der online verfügbaren Kurzanleitung zu LaTeX
Linux und Unix
- Eine Einführung in die Grundlagen der Benutzung des UNIX
bzw. Linux Betriebssystems findet man in dem
SuSE-Linux
Handbuch im Kapitel 19. Interessant sind dabei insbesondere die
Abschnitte 19.5 bis 19.9.
Nachschlagewerke
Allgemeine Fachbegriffe und auch spezielle Begriffe der Informatik
werden häufig sehr gut in den im WWW
verfügbaren Nachschlagewerken erklärt.
Online-Wörterbuch Deutsch-Englisch
Ein sehr gutes Wörterbuch für Übersetzungen Deutsch-Englisch wird von der
TU-Chemnitz zur Verfügung gestellt:
http://dict.tu-chemnitz.de
Wenn Ihr lieber zuhause arbeiten möchtet, so könnt Ihr das unter allen
gängigen Betriebssystemen tun - alle notwendigen Tools dafür stehen
kostenfrei im Internet zur Verfügung.
Für Linux (auch auf jeder aktuellen Distribution vertreten):
Für Windows:
Eine Einführung in die Installation von Latex unter Windows findet ihr
hier (Miktex-Webseite) und
hier
(bebildertes pdf-Dokument).
Für MacOS:
|
|