Vorlesungsmitschrift zu Übersetzerbau

Am 15. Oktober 2009 abgelegt unter Uni

Dieses Semester (Wintersemester 2009/2010) besuche ich bei Frau Fehr die Vorlesung über Übersetzerbau (oder neudeutsch Compilerbau). Obwohl die Vorlesung zu einer studentenunfreundlichen Uhrzeit stattfindet, probiere ich dennoch erstens immer hinzugehen und zweitens dabei eine Mitschrift anzufertigen, die Sinn ergibt. Diese Mitschrift werdet ihr dann an dieser Stelle finden.

  1. Vorlesung: Einführungen zu Compilern, grober Aufbau.
  2. Vorlesung: Wir beschäftigen uns nun mit der Syntaxanalyse, die in den Compilern durchgeführt wird. Dazu gucken wir uns nochmals kontextfreie Grammatiken an.
  3. Vorlesung: Es ging um syntaxgerichtete Übersetzung und Syntaxschemata.
  4. Vorlesung: Es ging um die Syntaxanalyse des Parsers und wie man prädiktive Syntaxanalyse betreiben kann
  5. Vorlesung: Wir haben die bisher besprochenen Komponenten zu einem vollständigen Front-End eines Übersetzers kombiniert.
  6. Vorlesung: Die lexikalische Analyse war heute Thema.
  7. Vorlesung: Wir haben uns die Interaktion zwischen Lexer und Parser angeschaut und wie man Fehlerbehandlung schon im Lexer betreiben kann.
  8. Vorlesung: Wir haben uns mit regulären Definitionen beschäftigt.
  9. Vorlesung: Wir haben uns überlegt, wie man Token durch endliche Automaten erkennen kann.
  10. Vorlesung: Der Lexer-Generator Lex wurde vorgestellt.
  11. Vorlesung: Syntaxanalyse im Parser (höchst unvollständig ;-))
  12. Vorlesung:  Wir haben uns Techniken angesehen, wie man Nichtterminismus Eliminieren kann. Ein Beispiel ist die Eliminierung der Linksrekursion oder die Linksfaktorisierung.
  13. Vorlesung: Wir haben die deterministische Top-Down-Syntaxanalyse betrachtet und wie man FIRST- und FOLLOW-Mengen bildet.
  14. Vorlesung: Als Fortsetzung der Top-Down-Analyse haben wir eine Parse-Tabelle aufgestellt und geguckt, wie man damit eine Fehlerbehandlung betreiben kann.
  15. Vorlesung: Es ging weiter mit der Parse-Tabelle. Dann haben wir noch mit der Bottom-Up-Analyse angefangen.
  16. Vorlesung: Weiter mit Bottom-Up-Analyse. Und wir haben uns die Shift-Reduce-Analyse angeschaut.
  17. Vorlesung: Die einfache LR-Syntaxanalyse (Simple LR-Parser) war Thema.
  18. Vorlesung: Struktur und Aufbau der Parse-Tabelle bei SLR
  19. Vorlesung: Semantische Analyse und syntaxgerichtete Definitionen war Thema.
  20. Vorlesung: Wir haben uns die topologische Sortierung von SDDs angeschaut.
  21. Vorlesung: Wir haben uns als weitere Anwenund syntaxgerichteter Definitionen Syntaxbäume angeschaut.
  22. Vorlesung: Statt einem Syntaxbaum erstellen wir nun einen DAG (directed acyclic graph)
  23. Vorlesung: Wir beginnen mit dem Abschnitt Zwischencode-Erzeugung. Als einen Vertreter davon betrachten wir den 3-Adress-Code
  24. Vorlesung: Wir schauen uns an, wie man 3-Adress-Code für imperative Programmiersprachen erzeugen kann.
  25. Vorlesung: Laufzeitumgebungen sind das Thema.
  26. Vorlesung: Codeerzeugung und Kosten von Befehlen
  27. Vorlesung: Grundblöcke und Flussgraphen
  28. Vorlesung: Lebendigkeit und nächste Verwendung mit dem Blick auf Code-Optimierung

Download der Übersetzerbau Mitschrift

Letztes Update am 8.02.2010 14:59

6 Kommentare »

Vorlesungsmitschrift zu Mustererkennung

Am 24. August 2009 abgelegt unter Uni

Im Wintersemester 2008/2009 besuchte ich die Mustererkennungsvorlesung und dazu gibt es natürlich auch wieder eine Mitschrift (handschriftlich).

  1. Vorlesung: Ausblick in Mustererkennung anhand von Viola-Jones (siehe Paper)
  2. Vorlesung: KNN (k nearest neighbours) Algorithmus
  3. Vorlesung Clustering (k-means) und unüberwachtes Lernen
  4. Vorlesung: EM-Algorithmus (Expectation Maximization) und Lineare Regression
  5. Vorlesung: PCA (Principal Component Analysis) und der Algorithmus von Oja
  6. Vorlesung: Fisher’s linear discriminant
  7. Vorlesung: Perzeptrons und Perzeptronlernen (Dank an Lisa für ihre Mitschrift!)
  8. Vorlesung: Verallgemeinerung des Perzeptron-Lernalgorithmus (Neuronale Netze) mit Backpropagation
  9. Vorlesung: Backprop-Algorithmus mit Matrizen und Verfeinerungen mit Silva & Almeida, Momentum und RPROP.
  10. Vorlesung: Blind source separation (independent component analysis)
  11. Vorlesung: Non-negative matrix factorization
  12. Vorlesung: Entscheidungsbäume und ID3-Algorithmus
  13. Vorlesung: Über Merkmalsextraktionen und bekannte Features
  14. Vorlesung: Boosting

Download der Mustererkennungsmitschrift (27 MB da Scan!)

Keine Kommentare »

Materialien zu Prüfungsvorbereitungen

Am 10. August 2009 abgelegt unter Uni

Letzten Montag hatte ich meine erste mündliche Diplomprüfung in Datenbanksysteme (Gedächnisprotokoll siehe Spline) und so peu à peu werden die nächsten folgen. In meiner Vorbereitung für DBS ist dabei eine ziemlich lange stichpunktartige Zusammenfassung des ganzen Stoffs entstanden, die ich hier gerne der Allgemeinheit zu Verfügung stellen möchte. Auch wenn ich nur jedem raten kann, solche Zusammenfassungen selber anzufertigen, da man (oder zumindest ich) bei dieser Arbeit schon am meisten lernt.

Für die weiteren Prüfungen (Höhere Algorithmik etc.) plane ich auch solche Zusammenfassungen und werde die Materialienliste also nach und nach erweitern.

Letztes Update am 31.10.2009 9:49

Keine Kommentare »

Vorlesungsmitschrift zu Computer Vision

Am 10. Juli 2009 abgelegt unter Uni

Das Semester ist jetzt zwar fast vorbei, dennoch wollte ich es nicht versäumen, noch meine (handschriftliche) Mitschrift der Computer Vision Vorlesung im Sommersemester 2009 online zu stellen.

  1. Vorlesung: Farbsegmentierung
  2. Vorlesung: Farbtabellen mit KD-Bäumen
  3. Vorlesung: Radiale Verzerrung bzw. Entzerrung
  4. Vorlesung: Lokalisierung im Raum anhand 3 bzw. 4 Punkten
  5. Vorlesung: Fortsetzung zu Lokalisierung, diesmal mit EM-Algorithmus. Quaternionen angeschnitten.
  6. Vorlesung: Fortsetzung zu Quaternionen, Rotation und homogene Koordinaten dazu.
  7. Vorlesung: Stereo Vision und Tiefeninformation
  8. Vorlesung: Optischer Fluss (Optical Flow)
  9. Vorlesung: SIFT Features (nicht im Skirpt enthalten, da Slides)
  10. Vorlesung: Hough-Transformation und Harris-Corner-Detector

Download Computer Vision Mitschrift (ca. 14MB, da Scan!)

Letztes Update am 24.08.2009 22:03

1 Kommentar »

Bildergallerie mit Apache Wicket, Teil 2

Am 13. März 2009 abgelegt unter Programmieren

Im vorherigen Teil haben wir uns mit der Verbindung zur Datenbank beschäftigt, jetzt wollen wir tatsächlich uns die Gallerieansicht vornehmen und erste Seiten mit Wicket dann darstellen, so dass am Ende von diesem Tutorial-Teil die Gallerie wie folgt ausschaut.

Zwischenergebnis Gallerie

Zwischenergebnis Gallerie

Einheitliches Layout

Im Verlauf des Tutorials werden mehrere Seiten erstellt. Schön wäre es da, wenn man ein einheitliches Layout einfach produzieren könnte, so dass z.B. auch überall die selbe Navigation erscheint oder die selben CSS-Dateien eingebunden werden. In Wicket läuft dieser Prozess unter dem Namen “Markup Inheritance”.

Bei Wicket ist es so, dass zu jeder sichtbaren Seite eine Java-Klasse und eine HTML-Datei gleichen namens existieren müssen, die auch im selben Verzeichnis liegen, bei mir im Package page. Zudem muss die Klasse von WebPage erben, das ist die Standardklasse für Webseiten von Wicket.

Wir erstellen uns also zunächst eine abstrakte Layout-Klasse, die die Funktionalität zu Verfügung stellt, welche alle anderen Klassen von ihr erben sollen. Zunächst wollen wir nur, dass jede Seite einen Titel bekommt und in der Fusszeile das aktuelle Datum erscheint.

public abstract class Layout extends WebPage {
	private String title = "Layout title";
	private Date date;
	public Layout() {
		date = new Date();
		add(new Label("title", new PropertyModel(this, "title")));
		add(new Label("pageTitle", new PropertyModel(this, "title")));
		add(new Label("date", new PropertyModel(this, "date")));
	}

	public void setTitle(String t) {
		title = t;
	}

	public String getTitle() {
		return title;
	}

Ein Label ist in Wicket einfach ein ganz normales Textobjekt, welches durch add() als sichtbar markiert wird und dann auch ein Äquivalent im HTML-Code besitzen muss. Generell benötigt jede Komponente, die man zu einer Seite hinzufügt, mindestens zwei Angaben. Erstens den Namen, über den das Objekt im HTML-Code referenziert wird (hier z.B. “title” oder “date”) und ein Model, von welchem der Inhalt der Komponente stammt. Über die Angabe von new PropertyModel(this, "title") wird ein PropertyModel erstellt, welches in dem aktuellen Objekt (this) eine Objektvariable mit dem Namen “title” sucht uns dieses dort einbindet. Genauso geht das mit dem Datum.

Ich habe gesagt, dass zu jeder Klasse, die von WebPage erbt, eine gleich benannte HTML-Datei existieren muss. Diese gucken wir uns nun an und schauen, wie wir ganz simpel Objekte, die per oben beschriebener add() Methode hinzugefügt wurden, im HTML-Quellcode referenzieren und einbinden können.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title wicket:id="pageTitle">Insert title here</title>
</head>
<body>
<div id="header"><h1 wicket:id="title">title here</h1></div>

<!-- Begin main -->
<div id="main">
	<wicket:child />
</div>
<!-- End main -->

<div id="footer"><small wicket:id="date">date</small></div>
</body>
</html>

Es ist zu erkennen, dass es sich bei der Layout.html um eine ganz normale HTML-Datei handelt. Das einzige bisschen mehr, was wir noch kennen müssen, um Wicket an entsprechender Stelle Inhalte einfügen zu lassen, ist der Zusatz wicket:id="{hier die entsprechende Bezeichnung}", die als Zusatz in jeden x-beliebigen HTML-Tag eingebaut werden kann. Es funktioniert so, dass man z.B. wie unten im Footer in den Small-Tag das aktuelle Datum rein generieren lassen möchte. So fügt man also wicket:id="date" hinzu. Dann wird automatisch beim Aufruf der Wert der add() Methode mit dem Bezeichner “date” hier eingebunden. Das date, was im HTML-Code schon zwischen dem Anfang- und Ende-Tag steht, dient nur als Platzhalter und zur besseren Übersicht, er kann auch weggelassen werden.

So simpel ist das! Interessant zu erwähnen ist noch der neue Wicket-Tag <wicket:child /> mit dem dann an entsprechender Stelle generierter Code aus einer anderen Wicket-Klasse eingefügt wird. Wie es genau funktioniert, wird später deutlich.

Seiten: 1 2 3

Letztes Update am 6.07.2009 10:02

Keine Kommentare »
Seiten: 1 2 3 4 5 6 Weiter
Naja's Blog
© 2007-2010 Naja's Corner
Artikel (RSS) und Kommentare (RSS).
Creative Commons License