CL-Blog

Computerlinguistik & Politik

Du durchsuchst gerade das Archiv der Kategorie ‘C++ in der Computerlinguistik I’.

Kategorie: C++ in der Computerlinguistik I

Hier finden Sie einen Katalog mit den zur Verfügung stehenden Programmierprojekten für die Kurse CL-Techniken und C++ I.

Jedes Projekt enthält Informationen dazu, für welchen Kurs das Projekt zur Verfügung steht (Python bedeutet dabei CLT).

Der letztmögliche Abgabetermin ist in beiden Fällen der 9.4.2017, 23:59. Von “Verlängerungsanträgen” sehen Sie bitte ab. Die Abgabe bitte als einzelne Zip-Datei (Programm, Dokumentation und  alle nötigen Daten) an meine Email-Adresse.

Bewertungsmaßstab für alle Projekte ist

  • die Höhe des Aufwands
  • die Qualität der Kommentierung (auch der Kopfzeilen zu Beginn, Zeilenkommentierung, doxygen in C++, docstrings in Python),
  • die Lesbarkeit und Übersichtlichkeit des Codes (z.B. keine zu langen Zeilen machen, ausreichend Leerraum verwenden)
  • die Qualität der Fehlermeldungen
  • die Robustheit und Absturzsicherheit
  • und die Eleganz des Codes

Allgemeine Hinweise für C++-Projekte finden Sie hier. (im PDF steht fälschlicherweise der 10.4.)

2017 12 Feb

C++-Besprechungstermin am 13.2. entfällt

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Statt dessen veröffentliche ich bis Morgen Projektspezifikationen

2017 6 Feb

Themen für Semesterprojekte

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

  • Aho-Corasick-Mustererkenner
  • Cocke-Younger-Kasami-Parser für prob. Baumbankgrammatiken
  • Übersetzung regulärer Ausdrücke in endliche Automaten
  • Sprachidentifikation
  • Training eines Hidden-Markov-Modells
  • Konstruktion eines HMM-Taggers mit dem Viterbi-Algorithmus
  • Meinten-Sie-Funktion

Bitte schreiben Sie mir bis spätestens Sonntag-Abend, für welche Themen Sie sich interessieren. Ich biete dann für Themen, die mind. einmal genannt werden, nächsten Montag (13.) Nachmittag individuelle Besprechungstermine an.

 

2017 6 Feb

C++ I, 6.2.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Konstruktionsprinzipien eines einfachen Compilers: Parsing, Tokenisierung, Semantik

Programmcode:

  • JSON-Parser (komplette Version von 2015, dient auch als Referenzprojekt für Ihre Semesterferienprojekte)

Materialien:

 

2017 30 Jan

C++ I, 30.1.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • JSON-Sprache zur einfachen Repräsentation komplexer Objekte in Textform
  • Syntaxgraphen
  • Recursive-Descent-Parsing bietet sich an bei unambigen Sprachen mit nicht-linksrekursiver Grammatik (wobei sich Linksrekursion auch beseitigen lässt)
  • Grundprinzip von Recursive-Descent-Parsern: mache aus jedem Nichtterminal der Grammatik eine boolsche Funktion. Damit übernimmt die verwendete Programmiersprache die gesamte Buchführung der Rekursionen, das ganze Hin- und Zurückspringen zwischen den verschiedenen Syntaxgraphen
  • Weitere Parsprinzipien: parse inkrementell (Token für Token, lese also nicht die gesamte Eingabe ein), lasse internen Tokenizer die Token finden (Tokenizer wiederum basieren oft auf endlichen Automaten)

Programmcode:

2017 27 Jan

C++ I – Übung 9

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

In dieser Übung geht es um das Einlesen und Schreiben von Dateien.
Informationen und Anweisungen finden sich auf dem Übungsblatt.

Übung9

2017 23 Jan

C++ I, 23.1.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Tries: interne Datenstruktur
  • Ausgabe im Graphviz-dot-Format.
    Dot-Dateien kann man übrigens mit dot -Tpdf -O input.dot nach PDF umwandeln

Programmcode:

 

2017 18 Jan

C++ I, 16.1.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Dateien einlesen mit std::ifstream
  • Trie-Implementierung mit 2 Vektoren (einen für Zustände, einen für Übergänge)
  • Mögliche Abschlussprojekte: Suffixbäume, Suffixarrays, DAWGs, Aho-Corasick-Patternmatcher, Huffman-Bäume

Programmcode:

Goldene Regeln:

  • Prüfen Sie stets beim Öffnen von Dateien mit ifstreams, ob das auch geklappt hat.

2017 13 Jan

C++I – Übung 8

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

In dieser Übung geht es um Klassen, Konstruktoren und Structs.

Übung8

2017 10 Jan

C++, 9.1.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Konstruktoren, Default-Konstruktor
  • Typinferenz
  • CFG-Klasse
  • Tries

Programme:

2017 4 Jan

C++I – Übung 7

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die siebte Übung zum Thema Klassen in C++ und Doxygen-Dokumentation.

Übung7

2017 3 Jan

C++ I, 2.1.17

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • String-Manipulation
  • Objektorientierte Programmierung:
    • struct vs. class
    • private vs. public
    • Konstruktoren: initialisieren eine Instanz
  • doxygen: automatische Erzeugung von Quellcodedokumentationen (www.doxygen.org)

Programme:

2016 7 Dez

C++ I – Übung 6

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die sechste Übung.
Alle Anweisungen und Hinweise finden sich in der beigefügten PDF und in den Quellcode-Dateien.

Übung6

2016 6 Dez

C++ I, 5.12.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Externe und interne Repräsentation
  • Strukturen (structs) repräsentieren Tupel in C/C++. Der Zugriff auf die Komponenten erfolgt über Namen (Selektoren genannt) mit dem Punkt-Operator.
  • Objektorientierte Erweiterung von structs um Funktionen.
  • Programmierparadigmen: funktional – objektorientiert – imperativ – logisch
  • Header-Dateien: enthalten Definitionen und werden über #include bei Kompilieren hineinkopiert.

Goldene Regeln:

  • Gehe nicht davon aus, dass Eingabedaten, die von Benutzern kommen, korrekt sind. Validiere stets.
  • Schreibe aussagekräftige Fehlermeldungen, die dem Benutzer helfen, seine Eingabefehler zu korrigieren

Programmcode:

2016 30 Nov

C++ I – Übung 5

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die fünfte Übung.

Diesmal soll ein Automat codiert werden, der nicht tokenisiert, sondern einen regulären Ausdruck zur Wortsuche in Texten beschreibt.

Tipps und Anweisungen sind in dem PDF zu finden.

Übung5

2016 28 Nov

C++ I, 28.11.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Direkte Umsetzung von endlichen Automaten nach C++
  • Tokenisierung in C++

Programmcode:

2016 23 Nov

C++ I – Übung 4

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die vierte Übung.

Übung4

2016 22 Nov

C++ I, 21.11.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Unicode
  • Textkodierungen: ISO-8859, UTF-8
  • Unterschiedliche Repräsentation von Zeilenenden
  • Lesen von Textdateien mit std::getline()
  • Ausgabe-Streams std::cout und std::cerr
  • Umleitung der Ein/Ausgabe und Pipes
  • Fehlersuche
  • casts
  • Bigramm-Zeichenfrequenz
  • Tokenisierung mit endlichen Automaten

Materialien:

Goldene Regeln:

  • Strukturiere Ausgabedaten übersichtlich, z.B. in Tabellenform (TSV-Format)

 

2016 21 Nov

C++ I – Musterlösung Übung3

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier gibt es die Musterlösung zur dritten Übung.

Die dritte Aufgabe war ziemlich tricky und zudem auch missverständlich gestellt (Entschuldigung!).

Dennoch hoffe ich, dass ihr durch die Übung sicherer im Umgang mit Matrizen und Vektoren geworden seid.

Schaut mal rein!

Musterlösung

2016 16 Nov

C++ I, Übung 3

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier gibt es die dritte Übung.

Themen sind Vektoren und Matrizen, sowie die Fertigstellung des Programms aus dem Seminar.

Es gibt eine Datei “programmieruebungIII.cpp” mir der main() Funktion, die ihr kompilieren sollt und in den übrigen Dateien löst ihr die Aufgaben.

Achtet darauf, dass die “aufgabe4.cpp” das Encoding “ISO 8859-1” (Westeuropäisch, Latin1) hat.

Wenn ihr nicht wisst, wie das geht, dann müsst ihr das für euren Editor im Internet nachschauen.

Falls die Datei in Unicode kodiert ist, kann es zu Fehlermeldungen kommen, weil dann die Umlaute in dem dort verwendeten String anders interpretiert werden.

Übung3

2016 14 Nov

C++ I, 14.11.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Vektoren in C++
  • Strings in C++: std::string ist eine Klasse (mehr dazu später), mit der man Zeichenketten repräsentieren kann. Nützlich ist z.B. die Indizierung mit [] und die size() Funktion
  • ISO 8859: Erweiterung von ASCII, um Sonderzeichen europäischer Sprachen darstellen zu können
  • Zählen von Buchstabenunigrammen und -bigrammen

Programm-Code:

Materialien:

Goldene Regeln:

  • Schreibe stets totale Funktionen, d.h. vergiss nie das return.
  • Initialisiere Vektoren vor dem Gebrauch (sonst enthalten sie Datenmüll)
  • Schreibe niemals über den linken oder rechten Rand von Vektoren hinaus

 

2016 14 Nov

C++ I, Übung 2 – Musterlösung

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier gibt es die Musterlösung zu der zweiten Übung.

Schaut euch die Lösung mal an und vergleicht das mit euren eigenen Ideen.

Fast jede Zeile Code wird hier kommentiert und das ist die Regel.
So programmiert man schnell mal 200 Zeilen.

In der Zukunft werden die Programmierübungen etwas übersichtlicher ausfallen und auf einzelne Dateien verteilt, anstatt alles in einer Datei zu bearbeiten.

MusterlösungII

2016 8 Nov

C++ I, Übung 2

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die zweite Übung.

Ich habe die zweite Aufgabe noch inhaltlich etwas abgeändert und Beschränkungen eurerseits verlangt.

Bitte benutzt für die zweite Aufgabe nur die bereitgestellte vorzeichen() Funktion, ist_null() Funktion, die arithmetischen Operatoren und die logischen Operatoren “==, !=”.

 

Bitte schickt mir die Übungen bis zum Samstag, den 12.11.2016, damit ich diese rechtzeitig korrigieren kann.

Ihr müsst die Dateien nicht umbenennen. Tragt euren Namen und eure Matrikelnummer in den Kopf der Datei ein, bearbeitet sie und gebt sie mir so wieder zurück. Eure ausführbaren Dateien brauche ich nicht. Ich kompiliere euren Code selbst.

Hinweis: Löst die Aufgaben zuerst auf dem Papier und programmiert dann.

Übung2

2016 7 Nov

C++ I, Woche 3

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Funktionen in der Mathematik und in Programmiersprachen
  • Probleme der Rechengenauigkeit in Computern; vgl. auch hier
  • Kontrollstrukturen in C++ (die gleichen wie in Python): Sequenz, Auswahl, Iteration, Rekursion
  • Eingebaute Datentypen: int, float, double, char, bool
  • ASCII vs. Unicode

Programme:

2016 26 Okt

Übungsaufgabe I

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier sind die ersten Übungsaufgaben für den Kurs C++ I.

Aufgaben:

Die Aufgaben sind immer zweigeteilt.

Der erste Teil besteht aus einer Programmierübung, bei der ihr den Code selber schreiben sollt.

Der zweite Teil ist eine Syntaxübung, wo der Code von euch berichtigt werden soll, bis er funktioniert.

Beides soll als praktische Übung dienen, damit ihr euch mit der Sprache auseinandersetzt.

Die Übungen werden in der Regel am Dienstag, spätestens Mittwoch, nach dem Kurs hochgeladen, im Tutorium auch besprochen und gegen Ende der jeweiligen Woche kontrolliert und an euch zurückgegeben.

Abgabe:

Bearbeitet bitte die mitgelieferten C++-Dateien direkt im Code und gebt mir eure Versionen davon zurück.

Übung1

2016 24 Okt

C++ I, Woche 2

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

Programmcode:

2016 19 Okt

C++ I, Woche 1

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Hardware eines Computers
  • Software: Betriebssystem, Compiler, Terminal und Shell

2011 26 Okt

C++ I, 26.10.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen

  • Eingebaute Datentypen (int, char, float, double, char)
  • Funktionen: Signatur, partiell vs. total
  • Kontrollstrukturen Auswahl (if … else), Rekursion
  • Zeichenkodierung (ASCII, ANSI)

Quelltexte:

cpp1_26.10.11

2011 20 Okt

Staatstrojaner

Abgelegt unter: Allgemein,C++ in der Computerlinguistik I,Politisches | RSS 2.0 | TB | Kommentare geschlossen

In der FAZ findet sich ein mehrseitiger Abdruck des Assemblercodes von relevanten Teilen des Staatstrojaners. Gut zum Selbststudium und zur Demystifizierung dieser ganzen Sache geeignet.

2011 19 Okt

Doodle-Umfrage zum C++-Tutorium

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Bitte wählen Sie einen Termin aus:
http://www.doodle.com/pp26ps5mq4fw38mg


CL-Blog läuft unter Wordpress 3.5.1
Anpassung und Design: Gabis Wordpress-Templates
23 Verweise - 0,283 Sekunden.