===== Progamm ===== ==== KW 17 ==== === Ziele === * Vorträge sind vorbereitet === Aufträge === * Bildet Gruppen von **maximal 3** Personen und wählt euch ein Thema und notiert dies an der Wandtafel. * Bearbeitet das Thema und bereitet eine kurze Präsentation (s.u.) für nächstes Mal vor. === Bewertungskriterien und Rahmenbedingungen Voträge === == Form == Wir haben 8 Voträge für 90 Minuten: Maximale Dauer eines Votrags 10 Minuten. Präsentationstechnik und -medium sind frei wählbar. == Bewertungskriterien == * Kurzweiligkeit des Vortrages (50%) * Klarheit des Votrages (25%) * Vollständigkeit der Beantwortung der Leitfragen (siehe [[lehrkraefte:ks:informatik-glf4-23-4iw#kw_17|letztes Mal]]) (25%) == Vortragsinhalte == - [[https://chat.openai.com/|ChatGPT]] - [[https://www.midjourney.com/|Midjourney]] (braucht Discord-Account) - [[https://labs.openai.com/|DALL-E 2]] - [[https://www.bing.com/new|BingChat]] - [[https://www.perplexity.ai/|Perplexity AI]] - [[https://beta.elevenlabs.io/|Eleven Labs]] - [[https://www.d-id.com/|D-ID]] - [[https://www.nytimes.com/2023/04/19/arts/music/ai-drake-the-weeknd-fake.html|Fake Drake]] (Kein Tool, aber eine Reihe von Tools; Artikel ggf. bei [[https://bldsg-my.sharepoint.com/:b:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/literature/An%20AI%20Hit%20of%20Fake%20%E2%80%98Drake%E2%80%99%20and%20%E2%80%98The%20Weeknd%E2%80%99%20Rattles%20the%20Music%20World%20-%20The%20New%20York%20Times.pdf?csf=1&web=1&e=jV4ppB|PDF]]) == Leitfragen == Für jedes Thema sollen die folgenden vier Fragen beantwortet werden: * Was ist der Zweck des KI-Tools und wie funktioniert es? * Was sind die mögliche Vor- und Nachteile der Verwendung des KI-Tools? * Wie genau und zuverlässig ist das KI-Tool, und welche Faktoren beeinflussen die Resultate? * Welche Auswirkungen (Geschäftsmodelle, Ethik, Politik, etc.) könnte der Einsatz des KI-Tools haben? ==== KW 16 ==== === Ziele === Bericht ist beendet. === Eckpunkte Bericht === **Abgabe Bericht: ** Bis 8.5.2023 um 20:00 auf SharePoint abgeben. Dokumentation der eigenen Analyse in einem PDF-Dokument, welches - Eine Einleitung enthält, welche * Beschreibt (Screenshot; Shortcut: ''PrtScr'' oder ''Alt+PrtScr'') woher die Daten kommen und wie diese aussehen. * Beschreibt, welche Daten erhoben werden. - Eine Frage formuliert, welche auf Grund von Excel-Analysen (mindestens eine Pivot-Tabelle) der eigenen Daten beantwortet kann. - Mindestens eine Analyse der eigenen Daten welche die Frage aus dem vorigen Punkt beantwortet. Z.B. Wann mache ich xxx am häufigsten? - Einen Abschnitt, welcher Zusammenfasst, was du in diesem Teil der Informatik gelernt hast, bzgl. * Excel * Python * BigData und sozialen Netzen im Allgemeinen. - Bonus: Einen Abschnitt (mindestens 1000 Zeichen inkl. Lehrschläge) zur Frage <>. Falls dir die Thematik neu ist, lies dir die nachfolgenden Artikel durch. Ihr könnt auch einen Text zu viert abgeben. Damit kann jede:r eine Quelle lesen und ihr könnt einen Abschnitt (zu 1000 Zeichen) abgeben. - https://www.nzz.ch/feuilleton/juergen-habermas-warnt-soziale-netzwerke-gefaehrden-die-demokratie-ld.1702434 oder als [[https://bldsg-my.sharepoint.com/:b:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/literature/nzz_habermas.pdf?csf=1&web=1&e=yrbdRN|PDF]] - https://www.mdr.de/wissen/medien-und-demokratie-100.html - https://www.tagesanzeiger.ch/eine-demokratie-destabilisieren-team-jorge-machts-ab-6-millionen-396187159107 oder als [[https://bldsg-my.sharepoint.com/:b:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/literature/ta_jorge.pdf?csf=1&web=1&e=aIdRl0|PDF]] - https://www.ft.com/content/0e2f6f8e-bb03-4fa7-8864-f48f576167d2 oder als [[https://bldsg-my.sharepoint.com/:b:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/literature/ft_twenge.pdf?csf=1&web=1&e=4DYsik|PDF]] Bewertungskriterien: * Nachvollziehbarkeit der Ausführungen und Analysen * Dokumentation der Analysen (Erklärungen, Screenshots, etc.) * Ausführlichkeit der Analysen * Darstellung des Berichts * Stringenz der Argumentation === Tipps Word === * ''PrtScr'' erstellt ein Bildschirmfoto des ganzen Bildschirms in der Zwischenbalge (''CTRL''+''V'' zum Einfügen) * ''Alt''+''PrtScrn'' erstellt ein Bildschirmfoto des aktiven Fensters in der Zwischenbalge (''CTRL''+''V'' zum Einfügen) * ''Win''+''PrtScrn'' erstellt ein Bildschirmfoto und speichert es im Bilder-Ordner von Windows * ''Win''+''Shift''+''S'' öffnet einen Dialog um ein Bildschirmfoto aufzunehmen und einen Bereich auszuwählen und speichert es dann in der Zwischenbalge (''CTRL''+''V'' zum Einfügen) === Abgabe Format === Bitte Bericht im **PDF**-Format auf dem Sharepoint-Abgabe-Ordner abgeben. Dateiname ''vorname_nachname_bericht_bigdata.pdf''. Der Dateiname muss **genau** so gewählt werden. ==== KW 13 ==== === Ziele === Erste Analysen mit Pivot-Tabellen in Excel deiner Daten von Youtube oder Instagram aus der letzten Lektion. === Auftrag === - [[lehrkraefte:ks:informatik-glf4-23-4iw#knaus_best-of-_excel-_shortcuts|Shortcuts]] nochmals durchlesen und **verwenden**. - CSV von letzter Woche in Excel öffnen - [[https://web.microsoftstream.com/video/114ca60b-fa45-4b99-bb9e-a62b032fd5c6|Einführungsvideo Excel]] schauen - Folgende Excel-Funktionen nachlesen resp. ausprobieren: - [[https://support.microsoft.com/de-de/office/wochentag-funktion-60e44483-2ed1-439f-8bd0-e404c190949a|Wochentag]] - [[https://support.microsoft.com/de-de/office/stunde-funktion-a3afa879-86cb-4339-b1b5-2dd2d7310ac7|Stunde]] - [[https://support.microsoft.com/de-de/office/mittelwert-funktion-047bac88-d466-426c-a32b-8f33eb960cf6|Mittelwert]] - Spalten erstellen mit den den notwendigen Informationen, z.B. Stunde am Tag, Wochentag, etc. (siehe oben) und diese dann als Excel-Datei speichern. - Folgende Fragen mit Filter oder Pivot beantworten: * Zu welcher Tageszeit schaue ich am meisten Videos? * An welchem Wochentag schaue ich am meisten Videos? * Wie viele Videos schaue ich durchschnittlich pro Tag? * Gibt es Unterschieden zwischen Ferien- und Schulzeit? * Eigene Fragen geben mehr Punkte. ==== KW 12 ==== === Ziele === Du kennst deine Daten aus Instagram oder Youtube und hast sie in strukturierter Form in Excel vorliegen. === Auftrag === * Schau dir das [[https://web.microsoftstream.com/video/4507c9a3-4afe-44c1-acd4-a96cd91c6fb8|Einführungsvideo]] an. * Navigiere zur heruntergeladenen ZIP-Datei, das heisst, geh mit dem Windows-Explorer (Win+E) zu diesem Ordner. Mit einem Rechtsklick kannst du die Datei entpacken. * Untersuche die heruntergeladene Datei (das heisst, entpacke sie und öffne die enthaltenen Dateien und Ordner) * Wähle unten deinen Code für Instagram (deutsch oder englisch) resp Youtube (deutsch oder englisch). Passe den Dateipfad im Code an und führe den Code aus. * Überprüfe die erhaltene CSV-Datei in Excel Hast du keine eigenen Daten kannst du {{lehrkraefte:ks:informatik-glf4-22:jan14-history.html|diese Datei verwenden}} (Rechtsklick -> herunterladen). Für Interessiere: Der Code zur Aufbereitung der Youtube-Daten (Instagram ist analog) ist in diesem [[https://web.microsoftstream.com/video/4c478e5b-609d-4429-bc20-78b9f8abab93|Video]] erklärt **Achtung: ** Entweder ins Homeverzeichnis kopieren (da habt nur ihr Leserechte) oder //unbedingt// nachher wieder permanent löschen (''Shift+Del''). === Code === === Spotify === import re # Regular Expressions import datetime # Datum/Zeit import os # Files suchen import json # Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor. rootdir = "C:/Users/Simon.Knaus/OneDrive - Kt. SG BLD/ksbg/Informatik/bigdata/spotify_data" # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 100 # Alle HTML-Dateien im Verzeicznis anzeigen for root, dirs, files in os.walk(rootdir): for file in files: if file.endswith(".json"): filepath = os.path.join(root, file) # Datei oeffnen f = open(filepath, "r") #html = f.read() # Alles einlesen data=json.load(f) print(data) f.close() # Datei schliessen for d in (data): # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde if debug>0: # Ausgabe zur Kontrolle, produziert folgendes Format print(d["endTime"]) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. csv += str(d["endTime"])+";"+str(d["msPlayed"])+"\n" # Ausgabe in Datei schreiben f = open("resultat_spotify.csv", "w") f.write(csv) f.close() == Twitter == import re # Regular Expressions import datetime # Datum/Zeit import os # Files suchen # Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor. rootdir = "C:/Users/Simon.Knaus/OneDrive - Kt. SG BLD/ksbg/Informatik/bigdata/twitter/data" # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 100 # Alle HTML-Dateien im Verzeicznis anzeigen for root, dirs, files in os.walk(rootdir): for file in files: if file.endswith(".js"): filepath = os.path.join(root, file) # Datei oeffnen f = open(filepath, "r") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der aus zwei verschiedenen Formaten einlesen # Alle nötigen Angaben werden in Klammern "ge-captured" daten = re.findall("(\d{1,4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2}).000Z", html) daten2 = re.findall("(\d{1,4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})", html) #print(daten2) #print(daten2) if(debug>0): print(file,": ",len((daten+daten2))) debug-=1 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in (daten2+daten): # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [int(x) for x in d] if debug>0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[0], e[1], e[2], e[3], e[4],e[5]) if debug>0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n") #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. # Ausgabe in Datei schreiben f = open("resultat_twitter.csv", "w") f.write(csv) f.close() == Snapchat == import re # Regular Expressions import datetime # Datum/Zeit import os # Files suchen # Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor. rootdir = "C:/Users/Simon.Knaus/OneDrive - Kt. SG BLD/ksbg/Informatik/bigdata/mydata_1678177023208/html" # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 30 # Alle HTML-Dateien im Verzeicznis anzeigen for root, dirs, files in os.walk(rootdir): for file in files: if file.endswith(".html"): filepath = os.path.join(root, file) # Datei oeffnen f = open(filepath, "r") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der Form 30.12.2021, 22:13 einlesen # Alle nötigen Angaben werden in Klammern "ge-captured" daten = re.findall("(\d{1,4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2}) UTC", html) if(debug>0): print(file,": ",len(daten)) debug-=1 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in daten: # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [int(x) for x in d] if debug>0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[0], e[1], e[2], e[3], e[4],e[5]) if debug>0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n") #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. # Ausgabe in Datei schreiben f = open("resultat_snapchat.csv", "w") f.write(csv) f.close() == Instagram Deutsch == import re # Regular Expressions import datetime # Datum/Zeit import os # Files suchen # Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor. rootdir = "C:/pfad/zum/entpackten/instagram/ordner/" # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 10 # Alle HTML-Dateien im Verzeicznis anzeigen for root, dirs, files in os.walk(rootdir): for file in files: if file.endswith(".html"): filepath = os.path.join(root, file) # Datei oeffnen f = open(filepath, "r") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der Form 30.12.2021, 22:13 einlesen # Alle nötigen Angaben werden in Klammern "ge-captured" daten = re.findall("(\d{1,2}).(\d{1,2}).(\d{1,4}), (\d{1,2}):(\d{1,2})", html) if(debug>0): print(file,": ",len(daten)) debug-=1 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in daten: # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [int(x) for x in d] if debug>0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[2], e[1], e[0], e[3], e[4],0) if debug>0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n") #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. # Ausgabe in Datei schreiben f = open("resultat.csv", "w") f.write(csv) f.close() == Instagram Englisch == import re # Regular Expressions import datetime # Datum/Zeit import os # Files suchen # Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor. rootdir = "C:/pfad/zum/entpackten/instagram/ordner/" mnum = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10,"Nov":11, "Dec":12}; # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 10 # Alle HTML-Dateien im Verzeicznis anzeigen for root, dirs, files in os.walk(rootdir): for file in files: if file.endswith(".html"): filepath = os.path.join(root, file) # Datei oeffnen f = open(filepath, "r") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der Form 30.12.2021, 22:13 einlesen # Alle nötigen Angaben werden in Klammern "ge-captured" daten = re.findall("([A-Z][a-z][a-z]) (\d{1,2}), (\d{4}), (\d{1,2}):(\d{1,2}) ([AP]M)", html) if(debug>0): print(file,": ",len(daten)) debug-=1 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in daten: # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [mnum[d[0]]] + [int(x) for x in d[1:-1]] if d[5]=="PM": # Nachmittag? Plus 12 Stunden (Ausser Mitternacht = 0) e[3]=(e[3]+12) % 24 if debug>0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[2], e[1], e[0], e[3], e[4],0) if debug>0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Wochentag (Mo=0, Di=1, ..., So=6) # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects wday = datum.weekday() # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n") #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. # Ausgabe in Datei schreiben f = open("resultat.csv", "w") f.write(csv) f.close() == Youtube Englisch == import re # Regular Expressions import datetime # Datum/Zeit # Erklärungen zu diesem Code gibt es auch als Video hier: # https://web.microsoftstream.com/video/4c478e5b-609d-4429-bc20-78b9f8abab93 # und für Datensparsame und solche ohne BLDSG-Account auch hier: # https://fginfo.ksbg.ch/~ivo/videos/informatik/vierte-klasse/daten-extraktion-youtube-watchtime-extraktion.mp4 # Daten einlesen # Entweder vollständiger Pfad zur Datei oder (wie z.B. C:\Users\Hansli\Desktop\watch-history.html) oder # nur Dateiname, wenn die Datei im gleichen Verzeichnis wie das Pythonprogramm liegt. f = open("jan14-history.html", "r") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der Form Jan 6, 2021, 9:23:12 PM CET # Alle nötigen Angaben werden in Klammern "ge-captured" daten = re.findall(r"([A-Z][a-z][a-z]) (\d{1,2}), (\d{4}), (\d{1,2}):(\d{1,2}):(\d{1,2}) ([AP]M) CET", html) #Erste 3 Einträge zur Kontrolle ausgeben print(daten[0:3]) # Zuordnung der Monatsnamen zu Monatsnummern, z.B. ist mnum["Jul"] gleich 7 mnum = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10,"Nov":11, "Dec":12}; # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 10 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in daten: # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [mnum[d[0]]] + [int(x) for x in d[1:-1]] if d[6]=="PM": # Nachmittag? Plus 12 Stunden (Ausser Mitternacht = 0) e[3]=(e[3]+12) % 24 if debug>0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[2], e[0], e[1], e[3], e[4], e[5]) if debug>0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Wochentag (Mo=0, Di=1, ..., So=6) # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects wday = datum.weekday() # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. csv += datum.strftime("%Y-%m-%d %H:%M:%S\n") #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. # Ausgabe in Datei schreiben f = open("resultat.csv", "w") f.write(csv) f.close() == Youtube Deutsch == import re # Regular Expressions import datetime # Datum/Zeit # VERSION FUER DEUTSCHE EXPORTE, Datumsangabe in der Form 09.02.2012, 14:15:59 MEZ # Erklärungen zu diesem Code gibt es auch als Video hier: # https://web.microsoftstream.com/video/4c478e5b-609d-4429-bc20-78b9f8abab93 # und für Datensparsame und solche ohne BLDSG-Account auch hier: # https://fginfo.ksbg.ch/~ivo/videos/informatik/vierte-klasse/daten-extraktion-youtube-watchtime-extraktion.mp4 # Daten einlesen # Entweder vollständiger Pfad zur Datei oder (wie z.B. C:\Users\Hansli\Desktop\watch-history.html) oder # nur Dateiname, wenn die Datei im gleichen Verzeichnis wie das Pythonprogramm liegt. f = open("jan14-history.html", "r") html = f.read() # Alles einlesen f.close() # Datei schliessen # Datum der Form Jan 6, 2021, 9:23:12 PM CET # Alle nötigen Angaben werden in Klammern "ge-captured" # Datum der Form 09.02.2012, 14:15:59 MESZ daten = re.findall(r"(\d{2})\.(\d{2})\.(\d{4}), (\d{2}):(\d{2}):(\d{2}) MESZ", html) #Erste 3 Einträge zur Kontrolle ausgeben print(daten[0:3]) # Zuordnung der Monatsnamen zu Monatsnummern, z.B. ist mnum["Jul"] gleich 7 mnum = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10,"Nov":11, "Dec":12}; # Resultat, das am Schluss geschrieben werden soll csv = "" # Comma separated values # Wie viele Kontrollausgaben? debug = 10 # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag for d in daten: # Einträge in Zahlen umwandeln # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt # Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42. e = [int(x) for x in d] if debug>0: # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren print(e) # [1, 6, 2021, 21, 23, 12] debug -= 1 # Um 1 vermindern # Datum daraus generieren (macht die Datumsmanipulation einfacher). # Jahr, Monat, Tag, Stunde, Minute, Sekunde datum = datetime.datetime(e[2], e[1], e[0], e[3], e[4], e[5]) if debug>0: # Ausgabe zur Kontrolle, produziert folgendes Format print(datum) # 2021-01-06 21:23:12 debug -= 1 # Um 1 vermindern # Wochentag (Mo=0, Di=1, ..., So=6) # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects wday = datum.weekday() # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp # \n heisst neue Zeile. csv += datum.strftime("%Y-%m-%d %H:%M:%S\n") #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann. # Ausgabe in Datei schreiben f = open("resultat.csv", "w") f.write(csv) f.close() ==== KW 11 ==== Lade deine Daten bei Youtube, Instagram, o.ä. herunter resp. beantrage das Herunterladen. Trage dann [[https://forms.office.com/r/UGDmxD7XzG|hier]] ein, wo du die Daten <> hast. Üblicherweise kannst du deine Daten in HTML und JSON herunterladen. HTML (i.e., Webseiten-Format) kann direkt angeschaut werden JSON ist einfacher weiterzuverarbeiten. Achtung: Die Daten können sehr gross sein, dass sie unter Umständen kein Platz in deinem Home-Verzeichnis haben. Dazu entweder * Home-Verzeichnis löschen * Oder, auf dem Laufwerk C ein Ordner (z.B. ''temp'') oder auf einen Memorystick erstellen und dann den Ziel-Speicherordner des Downloads (s.u.) anpassen. {{ :lehrkraefte:ks:informatik-glf4-23:download_change.png?400 |}} Wenn du die Daten nicht <>, schau dir die Tipps unten an. * **Instagram**: Webseite: Mehr -> Deine Aktivität -> [[https://www.instagram.com/download/request|Deine Informationen herunterladen]]. Als Format sollte mindestens HTML gewählt werden.((JSON wäre praktischer, ist aber <> um direkt anzuschauen)) * **YouTube**: Ist Teil von Googles Data-Takeout Portal: [[https://takeout.google.com/|Takeout Portal]]. Bei YouTube (unten) Verlauf wählen und wiederum mindestens HTML herunterladen.((JSON wäre praktischer, ist aber <> um direkt anzuschauen)) * **SnapChat**: Bei Snapchat ider Download bei der Privatsphäre untergebracht, schliesslich bei [[https://accounts.snapchat.com/accounts/downloadmydata?lang=de-DE]] * Irgendeine andere Platform **Achtung**: Die Daten sind für alle einsehbar, wenn sie nicht im persönlichen Home-Verzeichnis sind! Ggf. nachher wieder löschen. Fordere die Daten an und trage im [[https://forms.office.com/r/UGDmxD7XzG|Formular]] ein, welche Daten du angefordert hast. Hast du mehrere Daten angefordert, kannst du diese mehrfach eintragen. == Ressourcen == * Weniger reisserische Kurz-Dokumentation von ARD zu [[https://www.ardmediathek.de/video/planet-wissen/der-fall-cambridge-analytica/wdr/Y3JpZDovL3dkci5kZS9CZWl0cmFnLTY5N2RmYTYwLTA1ZTktNGY0Ni1hZTg1LWQyYmY0Njk1YTNmNw|Cambridge Analytica]] * Forschung zu neurologischen Effekten von Likes in einer [[https://www.cdmc.ucla.edu/wp-content/uploads/sites/170/2019/12/The-Power-of-the-Like-in-Adolescence-Effects-of-Peer-I....pdf|wissenschaftlichen Publikation]]. * [[https://www.theguardian.com/global/2021/aug/22/how-digital-media-turned-us-all-into-dopamine-addicts-and-what-we-can-do-to-break-the-cycle|Artikel des Guardians]] zum Thema Abhängigkeit und Social Media. ==== KW 10 ==== === Ziele === * Jede:r hat die wichtigsten Konzepte und Funktionen (siehe Aufträge letzte Woche) festgehalten * Jede:r kann Vor- und Nachteile einer Simulation in Excel benennen. * Jede:r kennt die wichtigsten Shortcuts in Excel. === Aufträge === * Aufträge von letzter Woche abschliessen. * Klassendiskussion anfangs L2 [[https://padlet.com/simon_knaus1/mru1qk8851ll3l5j|Padlet]] * Shortcuts: * Excel: Erstelle eine Excel-Datei mit Inhalten in den Zellen ''D3'' bis ''F11''. Platziere nachher den Cursor in eine der Zellen und versuche die Shortcuts unten durch. * Windows resp. Word: Navigiere zu [[https://www.un.org/en/about-us/universal-declaration-of-human-rights|Menschenrechten]] und schreibe Artikel 5 und Artikel 17 ab in Winword ab. Nutze dabei Shortcuts und/oder Bildschirmaufteilung. * Stelle deinem/deiner Nachbar:in einen Challenge. * Notiert gemeinsam einen Challenge für die Klasse auf [[https://padlet.com/simon_knaus1/shortcut-padlet-zuwq7861ykbg4tok|diesem Padlet]]. Die Lösungen (Shortcut-Abfolge) können die anderen Gruppen als Kommentare verfassen. * Welche SocialMedia-Plattformen nutzt du? Bitte [[https://forms.office.com/Pages/ResponsePage.aspx?id=vUGvXYwzEUOxsOEpmInDS12XSwf-80xHjgGMQjpEmz9UNEo1WU5DNTdPNDdNQkhVRVQyMURRV0JOOCQlQCNjPTEu|hier]] beantworten. === Knaus' Best-of-Shortcuts === Generelles: * **Shift** ändert die Richtung oder markiert. Im Browser mit mehreren Tabs z.B. Ctrl+Tab und Ctrl+Shift+Tab ausprobieren. * **Ctrl** fügt hinzu oder springt Wortweise. Im Text z.B. mit Ctrl+Pfeilen ausprobieren und Ctrl+Shift+Pfeilen. * **Alt** zeigt bei Office-Applikationen verfügbare Shortcuts an. Zusammen mit den Pfeiltasten kann man im Browser und Dateimanager vor- und zurücknavigieren. |^ Shortcut | ^ Beschreibung | |Win+D | Desktop anzeigen| |Alt+Tab | Zwischen Applikationen wechseln| |Win+Tab | Zwischen Applikationen wechseln mit Desktop Übersicht| |Win+Crtl Links / Rechts | Zwischen virtuellen Desktops wechseln| |Win+Pfeiltasten | Minimieren / Maximieren Split Links/Rechts| |Win+Q | Startmenü mit Suchfeld aufrufen| |Win+R | Eingabeprompt, z.B. wenn Name der Applikation bekannt, diesen eingeben, e.g., ''winword''.| |Win+E | Explorer Anzeigen| |Esc | Aktuelle Eingabe verlassen o.ä., z.B. in Excel von den Menüs zur Tabelle wechseln.| |Alt+F4 | Applikation schliessen | |Ctrl+W | Dokument/Fenster schliessen| ==== KW 9 ==== === Ziele === * Jede:r kennt die wichtigsten (Excel-)Shortcuts. * Jede:r kann mit Excel Zufallszahlen simulieren und visuell darstellen, wie die untersuchte Grösse sich mit zunehmender Anzahl Versuche stabilisiert. * Jede:r kann eine Aussage darüber treffen, wann sich die Simulation einer Zufallsgrösse stabilisiert. * Jede:r kann mit //named ranges// (//benannte Bereiche//) arbeiten === Aufträge === * Shortcuts in Excel: Erstelle eine Excel-Datei mit irgendwelchen Inhalten in den Zellen ''D3'' bis ''F11''. Platziere nachher den Cursor in eine der Zellen und versuche die Shortcuts unten durch. * Warm-up resp. Intermezzo * Betrachte das [[https://bldsg-my.sharepoint.com/:v:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/glfinfo4/Zellbez%C3%BCge%20in%20Excel_%20Fixieren%20und%20Benennen.mp4?csf=1&web=1&e=n5nZyr|Video zu Referenzieren in Excel]]: Wie kann über Blätter hinweg referenziert werden und wie Zellen fixiert werden. * Erstelle eine Multiplikationstabelle mit den Zahlen 1 bis 10 multipliziert mit 1 bis 10 wobei der Rest bei einer Division durch $p$ angegeben wird. * Simuliere den Verlauf eines Durchschnitts ($y$-Achse) gegenüber der Anzahl Simulationen ($x$-Achse). Verwende dabei ''MITTELWERT()'' resp. ''AVERAGE()'' und fixiere die erste Zeile des Bereichs mit ''$''-Zeichen um einen rollenden Durcschnitt zu erhalten. Verwende dabei eine Grösse (Ein Würfel, "3er-Wurf", Geburtstagsproblem, Overbooking, o.ä.) deiner Wahl und füge dann ein $XY$-Diagramm ein. (Einfügen -> Diagramm) und speichere ein Bild (Screenshot mit ''Win+Shift+S'') auf dem Sharepoint-Abgabe-Ordner ab. * Schliesse die Aufträge von letzter Woche ab, insb. das "3er-Wurf"-Problem * Simuliere das Geburstagsproblem in Excel. * Verwende dazu mehrere Tabellenblätter: Im ersten simulierst du alle Personen einer Klasse pro Zeile, in der zweiten zählst du für jeden Tag im Jahr ($1,2,\ldots,365$) wie viele Personen an diesem Tag Geburtstag haben * Lies die Hilfe von ''ZÄHLEWENN()'' durch. * Simuliere das Overbooking Problem * Lies dir die Theorie (Mathe: optional) unten durch, schaue das [[https://web.microsoftstream.com/video/5a6921b4-7b0e-4013-865f-863afb23e243?channelId=56bb4050-f51d-4a5e-bd0c-f8efc24c2809|Intro-Video]] und beantworte dann mit der zu erstellenden Simulation die gestellten Fragen. * Simuliere jeden Platz als Spalte für einen Flug einzeln, ob die Reisenden erscheinen (`1`) oder nicht (`0`). Zähle dann die Anzahl erschienen Reisenden. * Definiere die **Antretenswahrscheinlichkeit** als Zelle (//named range// oder //benannte Bereiche// ([[https://support.microsoft.com/de-de/office/verwendung-des-namens-managers-in-excel-4d8c4c2b-9f7d-44e3-a3b4-9f61bd5c64e4|Hilfe]] zu benannte Bereiche) und beziehe deine Formeln darauf. * Berechne den Durchschnitt der angetretenen Plätze pro Flug und betrachte die Verteilung als Histogramm. * Halte (auf Papier, digital) fest, was du bis jetzt neu in Excel gelernt hast, das heisst, notiere Formeln, Ideen, Funktionen,Shortcuts (F2, Ctrl+ ->, etc.) u.ä. darauf. === Overbooking-Problem === Immer wieder verpassen Leute ihren gebuchten Flug, z.B. wegen Krankheit oder einer Verspätung bei der Anreise. Deshalb geht die Fluggesellschaft ein Risiko ein und verkauft mehr Sitzplätze als sie eigentlich zur Verfügung hat. Wir werden hier ein Beispiel durchrechnen: * Wir gehen davon aus, dass durchschnittlich $5\%$ aller Reisenden ihren Flug nicht antreten. * Für einen Flug mit $100$ Plätzen werden $110$ Tickets verkauft. Wie gross ist die Wahrscheinlichkeit, dass alle Reisenden ihre Flugreise durchführen können? * Wie gross wäre diese, wenn $120$ Plätze verkauft werden würden? * Welchen Einfluss hat die **Antretenswahrscheinlichkeit**? == Mathematischer Hintergrund (optional) == Es handelt sich hier um eine Binomial-verteilte Zufallsgrösse $X$. Die Erfolgswahrscheinlichkeit auf einer Stufe $p$ entspricht der **Antretenswahrscheinlichkeit**. Die verkauften Plätze entsprechen $n$. Damit ist die erwartete Anzahl der angetretenen Plätz der Erwartungswert $\mu=n\cdot p$. Damit ist die Wahrscheinlichkeit, dass es $k$ Personen gibt, welche ihren Flug antreten h $$ \mathrm{P}(X=k)=C(n,k) \cdot p^k\cdot (1-p)^{n-k}$$ wobei $C(n,k)=\frac{n!}{k!\cdot (n-k)!}$ ist. === Knaus' Best-of-(Excel-)Shortcuts === Alle Excel-Shortcuts finden sich in dieser [[https://support.microsoft.com/de-de/office/tastenkombinationen-in-excel-1798d9d5-842a-42b8-9c99-9b7213f0040f|Liste]]. Die Shortcuts bis und mit F1 funktionieren bei den meisten gängingen (Office) Applikationen. | ^ Shortcut | ^ Beschreibung | | Ctrl+Pfeil | Bewegt den Cursor ans Ende des Blocks der aktiven Zelle in Richtung des Pfeils| | Shift+Pfeil | Markiert die Zellen in Richtung des Pfeils | | Shift+Ctrl+Pfeil| Markiert die Zellen in Richtungs des Pfeils bis Ende des Blocks| |Ctrl+Z| Letzter Schritt rückgängig machen| |Ctrl+Y| Letzer Schritt wiederholen (z.B. Formatierung)| |F1 | Hilfe |F2 | Zeigt die Abhängikeiten einer Formel in der aktiven Zelle graphisch an| |F4 | Fixiert Zeile und Spalte, Zeile und Spalte bei erneutem Drücken | |F9 | Berechnet ein Arbeitsblatt neu (inkl. neuer Zufallszahl) | |Ctrl+PgDn/PgUp | Wechselt nach rechts/links durch die Arbeitsblätter | |Ctrl+-| Markierte Zeile/Spalte löschen| |Ctrl++| Zeile/Spalte einfügen| ==== KW 6 ==== === Ziele === Jede:r kann mit Excel Zufallszahlen und Würfel simulieren und auf Grund einer Simulation entscheiden, ob z.B. ein Spiel fair ist, ein Flugzeug durschnittlich ausgebucht ist o.ä. === Aufträge === * Lies die einführende Theorie unten kurz durch * Simuliere das folgende Spiel "3er Wurf" * Schaue dir die Einführungsvideos zu [[https://bldsg-my.sharepoint.com/:v:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/glfinfo4/Von%20der%20Zufallszahl%20zum%20W%C3%BCrfel.mp4?csf=1&web=1&e=vGlEZq|Zufallszahlen]] und [[https://bldsg-my.sharepoint.com/:v:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/glfinfo4/3er%20Wurf_%20W%C3%BCrfeln%20mit%20Excel.mp4?csf=1&web=1&e=8WQhjD|Würfel]] an. === 3er Wurf === Du darfst drei Würfel werfen. Treten dabei Sechser auf, so hast du gewonnen und ich gebe dir einen Franken. Wenn keine Sechser vorkommen, habe ich gewonnen und du gibst mir einen Franken. Ist das Spiel fair? Diskutiere zuerst mit der Person neben dir und versuche dann die Frage mit Excel zu beantworten. == Auftrag == Erstelle eine Excel-Tabelle in der du würfelst. Ein Würfel soll in einer Spalte stehen. Wenn du die Funktionen ''OR()'' resp. ''AND()'' (''ODER()'' resp. ''UND()'') benutzt, kannst du mehrere Bedingungen überprüfen. Simuliere mehre Durchführungen dieses Experiments (eine Zeile ist eine Durchführung) und zähle, wie oft du eine Murmel erhalten hast, resp. wie of du eine Murmel hast geben müssen. * Wie kann in Excel gewürfelt werden? [[https://bldsg-my.sharepoint.com/:v:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/glfinfo4/3er%20Wurf_%20W%C3%BCrfeln%20mit%20Excel.mp4?csf=1&web=1&e=8WQhjD|Würfel]] * Wie erhalte ich Zufallszahlen von $[0,1]$ zu $\{1,2,3,4,5,6\}$? [[https://bldsg-my.sharepoint.com/:v:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/glfinfo4/Von%20der%20Zufallszahl%20zum%20W%C3%BCrfel.mp4?csf=1&web=1&e=vGlEZq|Zufallszahlen]] === Theorie === Die Simulation ist eine Arbeitsweise zur Analyse von komplexen Systemen und Zusammenhängen. Typischerweise sind das Fragestellungen, bei welchen man mit theoretischer und formelmässiger Behandlung an Grenzen stösst. In der Forschung und Industrie, aber auch in der Finanzwelt spielen Computersimulationen eine wichtige Rolle. Computersimulationen haben gegenüber realen Experimenten und Untersuchungen den Vorteil, dass sie kostengünstig und umweltschonend durchführbar sowie ungefährlich sind. Allerdings können sie die Wirklichkeit meist nie exakt wiedergeben. Die Gründe dafür sind vielfältig: * Die Wirklichkeit kann wegen Messfehlern nie exakt in Zahlen gefasst werden (ausser bei Abzählungen). * Das Zusammenwirken der Komponenten ist oft nicht exakt bekannt, da die zu Grunde liegenden Gesetze nicht exakt sind oder nicht alle Einflüsse berücksichtigt werden. Immerhin werden Computersimulationen mit steigender Rechenleistung der Computer immer präziser, man denke etwa an die Wetterprognosen für die nächsten Tage. ==== KW 6: Alternative ==== Schulmaterial Backup [[lehrkraefte:blc:informatik:ksbg-backup|Backup]] ===== Ressourcen ===== * Übersetzung Excel: https://excelnova.org/excel-ressourcen/excel-formeln-ubersetzt-englisch-deutsch/ * [[https://tobiaskohn.ch/files/PythonCheatSheet.pdf|CheatSheet]] Tigerjython * [[https://support.microsoft.com/de-de/office/tastenkombinationen-in-excel-1798d9d5-842a-42b8-9c99-9b7213f0040f|Excel Shortcuts]] * [[https://bldsg.sharepoint.com/:f:/r/sites/cl03-ksbg-el/classes/1fNP_2019/Theorie/Informatik/4_Klasse?csf=1&web=1&e=hTxT9z|Sharepoint:]] Lösungen, etc.