Seite anzeigenÄltere VersionenLinks hierherCopy this pageFold/unfold allNach oben Diese Seite ist nicht editierbar. Du kannst den Quelltext sehen, jedoch nicht verändern. Kontaktiere den Administrator, wenn du glaubst, dass hier ein Fehler vorliegt. ====== Planung HS 2023 ====== * Tutorial Flask: Einfache Server-based Website erstellen, z.B Encryption * **HA:** Anfangen mit Game of Life Web (mit Flask) == HERBSTFERIEN == == 23.10.2023 (L9) == * Weiter an Game of Live Web * fertig machen als HA == 30.10.2023 (L10) == Laurin übernimmt als Lehrer === Gruppe B === == 06.11.2023 (L1) == * in Gruppe zusammensitzen * selbständig arbeiten, da LP beschäftigt * **Auftrag 1** ([[talit:python_advanced_problems]]) * **HA:** Auftrag fertig == 13.11.2023 (L2) == Auftrag II (DGL) == 20.11.2023 (L3) == Auftrag III (DGL) == 27.11.2023 (L4) == Game of Live (Version 1) (Auftrag "Eigener DGL-Solver" wird (für Moment?) übersprungen) == 04.12.2023 (L5) == == 11.12.2023 (L6) == Game of Life: Modellierung besprechen, verbesserte Version programmieren == 18.12.2023 (L7) == [[talit:flask_webserver|Flask-Tutorial]] Programmiere eine einfache Website, die mit dem Server kommuniziert Ideen: * Einfache Caesar-Verschlüsselung: Wort eingeben, wird an Server gesendet, dort verschlüsselt, zurückgeschickt und angezeigt * Taschenrechner, bei dem nur auf Server gerechnet wird * ... == WEIHNACHTSFERIEN == == 08.01.2024 (L8) == == 15.01.2024 (L9) == ++++ ++++3M Hofmann| Link zum Modul: [[talit:spatial|Information Retrieval & Spatial Queries]] - Wie rufen wir Daten effizient ab? Wie funktioniert das bei sehr grossen Datenmengen? Wie, wenn die Suchanfrage eine geometrische Grösse ist? === Gruppe B === == 14.08.2023 (L1) == * in Gruppe zusammensitzen * selbständig arbeiten, da LP beschäftigt * **Aufgaben 1/2a/2b** * **HA:** Auftrag fertig == 21.08.2023 (L2) == * Aufgaben 1&2 besprechen * Range queries (Aufgaben 3) besprechen und lösen * ev. preview auf Spatial Queries / Quadtrees == 28.08.2023 (L3) == == 04.09.2023 (L4) == == 11.09.2023 (L5) == == 18.09.2023 (L6) == * Basic Binary Search Tree (BST) zum laufen kriegen [[https://github.com/tkilla77/ksr_talit_indexing/blob/main/bst.ipynb|Notebook]] * Übertragen auf 140k Dataset von http://download.geonames.org/export/dump/ (Cities500) * **HA**: github repo mit BST, das im 140k Dataset in weniger als 0.1s eine Range-Query nach Bevölkerungszahl ausführt. * **Teilen mit hof@ bis Freitag.** == 25.09.2023 (L7) == * KD-Tree: Theorie, Life-Coding Session == 02.10.2023 (L8) == * KD-Tree auf dem mittleren oder grossen Dataset zum laufen bringen * Optimierungen * Metriken: Tiefe des Trees, Laufzeit, Speicherbedarf - Schreibe eine Funktion `tree_height(node)`, die rekursiv die maximale Höhe des Baums berechnet. - Wie viel grösser ist die Höhe im Vergleich zum Optimum? Ist das ein Problem? - Verwende die `%time` und `%timeit` iPython magics, um die Laufzeit zu messen (Baum bauen, Query) * Wie beeinflusst der Median-Algorithmus die Tiefe und Laufzeit? - Entwickle Strategien, um eine geringere Tiefe zu erreichen, und teste sie aus. - Randomisierung? - Sortieren und Median finden auf jeder Ebene? * Speicherbedarf für Build-Tree? == HERBSTFERIEN == == 23.10.2023 (L9) == * Schritt zurück: wie funktioniert Indexing für Text-Dokumente * Query, Retrieval, Ranking * Invertierter Index * 2 Aufgaben in [[https://github.com/tkilla77/ksr_talit_indexing/blob/main/04_text_indexing.ipynb|04_text_indexing.ipynb]] lösen == 30.10.2023 (L10) == * Text Indexing (Wiederholung): * Aufgabe: Indexiere alle {{:talit:movies_1985.csv.zip|Wikipedia-Artikel über Filme von 1985}} (387 Artikel, 0.7MB) * Die Artikel sind im CSV-Format mit zwei Spalten: Wikipedia URL, Artikeltext (Deutsch) * Finde heraus, in welchem epischen Film ein _DeLorean_-Sportwagen eine Rolle spielt (yup, Sie erleben hier fächerübergreifende Bildung!). * Mehr Daten unter https://if.ksr.ch/talit/indexing/ * Ranking * Implementiere eine Suche, bei der die Suchresultate die Vereinigung (`set.union()`) aller Resultate für jeden Term der Query bilden. * Die Suche nach `Michael Fox` gibt eine Vielzahl von Suchresultaten zurück - weshalb? * Wir möchten Dokumente, die `fox` enthalten, höher einstufen, als Dokumente, die `michael` enthalten, weil zweiteres in viel mehr Dokumenten vorkommt. * Enters [[wpde>Tf-idf-Maß#Inverse_Dokumenthäufigkeit|Inverse Document Frequency]] (IDF): ein Mass dafür, wie spezifisch ein Term für einen Dokumentenkorpus ist. Grundidee: bei $n$ Dokumenten beträgt die IDF $idf(t) = \frac{n}{countDocs(t)}$, wobei `countDocs` angibt, wieviele Dokumente den Term $t$ enthalten. Ein Term, der in jedem Dokument vorkommt, hat das Gewicht $1$, ein Term, der maximal spezifisch ist und nur in einem Dokument vorkommt, hat das Gewicht $n$. * Erste Aufgabe: Berechne die Liste der Terme und deren Vorkommenshäufigkeit, sortiert nach letzerer. * Plotte die Vorkommenshäufigkeit mit pyplot. Was fällt auf? * Überlege, welche mathematische Transformation uns helfen könnte, die IDF etwas praktischer zu machen. === Gruppe A === == 06.11.2023 (L1) == * [[talit:spatial]] Intro lesen * Jupyter Notebook in frischem Repository erstellen, Repo mit `hof@`teilen * **Aufgaben 1/2/3a** lösen * 3b Lösung disktutieren == 13.11.2023 (L2) == * [[talit:spatial#separater_index|Aufgabe 3a]] * Zeit messen (im Notebook) für eine Linearsuche im 140k Dataset. * [[talit:spatial#aufgabe_3b|Aufgabe 3b]]: Index-Erstellung * Lösung diskutieren * Implementieren * mit Toydataset testen / Zeit messen * mit dem 140k / 12M Dataset * wie lange dauert die Index-Erstellung? * wie lange dauert der Zugriff * Nach wiewielen Zugriffen ist die Index-Erstellung amortisiert (im Vergleich zur Linearsuche)? == 20.11.2023 (L3) == * [[talit:indexing|Text Indexing]]: Aufgaben 1-3 == 27.11.2023 (L4) == * [[talit:indexing|Text Indexing]]: Aufgabe 4: Multiple Tokens == 04.12.2023 (L5) == * Abschluss [[talit:indexing|Text Indexing]]: Aufgabe 4: Ranking with IDF == 11.12.2023 (L6) == * Zurück zu unserem Geo-Dataset und [[talit:spatial|Spatial Indexing]]. * Wir möchten nicht nur nach Text-Werten suchen, die genau übereinstimmen, sondern nach einem Bereich (Range). * Beispielsweise möchten wir alle Städte finden, die zwischen 10 und 15 Mio Einwohner haben. * Range queries ([[talit:spatial#range_queries|Aufgaben 4a & 4b]]) besprechen und lösen. * ev. Vorschau auf Binary Search Trees. == 18.12.2023 (L7) == * [[talit:spatial#graph_visualization|Graph Visualization]] inkl. Christmas BSTree Challenge == WEIHNACHTSFERIEN == == 08.01.2024 (L8) == * KD-Tree: Theorie, Life-Coding Session * Auf Toy-Dataset implementieren == 15.01.2024 (L9) == * KD-Tree auf dem mittleren oder grossen Dataset zum laufen bringen * Optimierungen * Metriken: Tiefe des Trees, Laufzeit, Speicherbedarf - Schreibe eine Funktion `tree_height(node)`, die rekursiv die maximale Höhe des Baums berechnet. - Wie viel grösser ist die Höhe im Vergleich zum Optimum? Ist das ein Problem? - Verwende die `%time` und `%timeit` iPython magics, um die Laufzeit zu messen (Baum bauen, Query) * Wie beeinflusst der Median-Algorithmus die Tiefe und Laufzeit? - Entwickle Strategien, um eine geringere Tiefe zu erreichen, und teste sie aus. - Randomisierung? - Sortieren und Median finden auf jeder Ebene? * Speicherbedarf für Build-Tree? ++++ </nodisp> talit/planung_hs_2023.txt Zuletzt geändert: 2024-08-08 11:11von sca