1 Prüfung
1.1 Allgemeines
Es handelt sich um eine Einzelleistung.
1.2 Prüfungsleistung: Portfolio-Prüfung
1.2.1 Beschreibung
Die Prüfungsleistung dieses Moduls ist eine Portfolioprüfung.
Nach §17 Absatz 4, Satz 2 ff der APO der HS Ansbach (vom 9. Februar 2023):
Eine Portfolioprüfung ist eine modulbezogene Prüfungsleistung, die mehrere Prüfungsbestandteile umfasst, welche über die gesamte Lehrveranstaltung eines Moduls hinweg abgeprüft werden. ³Die einzelnen Prüfungsbestandteile ergeben eine Gesamtnote.
1.2.2 Bestandteile
Die Portfolioprüfung setzt sich aus folgenden Teilnoten zusammen:
- Teilnoten für die 10 Challenges
- Teilnote für ein abschließendes Fachgespräch
Die (Gesamt-)Note setzt sich aus folgenden Teilen zusammen:
- Teilnote 1: Punktzahl bei den Challenges (50%)
- Teilnote 2: Note beim Fachgespräch (50%)
Jede Teilnote darf nicht schlechter als 4,0 bewertet werden, um die Prüfung als Ganze zu bestehen.
1.3 Teil 1: Wöchentliche Challenges
Bitte beachten Sie, dass sich die Challenges noch ändern können, solange sie nicht begonnen haben.
Bitte beachten Sie auch die Hinweise zum Thema ‘Programmieren’.
Die Challenges werden im Unterricht vorgestellt und besprochen.
Für jede Aufgabe lassen sich verschiedene Lösungswege finden. Es ist nicht nötig, dass Ihre Lösung exakt der Musterlösung entspricht. Wichtig ist, dass Sie die Aufgabe lösen und Ihre Lösung nachvollziehbar dokumentieren. Treffen Sie Annahmen, wenn die Aufgabenstellung dies erfordert, und dokumentieren Sie diese Annahmen in Ihrer Lösung. Schreiben Sie nicht nur Code, sondern erklären Sie diesen auch kurz: was machen Sie da gerade und warum? Erläutern Sie ebenfalls das Ergebnis: Was resultiert aus Ihrem Code als Ausgabe? Wie ist die Ausgabe zu interpretieren? Wie fügt Sie sich als Antwort zur Aufgabenstellung?
1.3.1 Benotung der Challenges
Jede Challenge wird wie folgt bepunktet:
- 0 Punkte: nicht eingereicht oder keine substanzielle Lösungsansätze
- 0,5 Punkte: substanzielle Lösungsansätze eingereicht, aber nicht komplett gelöst
- 1 Punkt: komplett oder fast komplett gelöst
Punkte-Noten-Zuordnung:
- mind. 50% der Punkte - Note 4,0
- mind. 60% der Punkte - Note 3,0
- mind. 70% der Punkte - Note 2,0
- mind. 80% der Punkte - Note 1,0
1.3.2 Formalia
- Wird eine Lösung für eine bestimmte Challenge nicht frist- und formgerecht eingereicht, so gilt sie als nicht eingereicht (0 Punkte).
- Die Bearbeitungszeit jeder Challenge ist jeweils eine Woche, d.h. die Lösung muss bis zum jeweiligen Abgabetermin eingereicht werden. Der späteste Abgabetermin ist der Vorabend des nächsten Unterrichtstermin - um 23.59.00. Beispiel: Der Unterricht findet wöchentlich am Dienstag statt. Die Challenge wird am Dienstag diese Woche besprochen und muss bis Montagabend der nächsten Woche eingereicht werden. Ausnahmen von dieser Regel (z.B. bei Feiertagen) werden rechtzeitig bekannt gegeben; s. auch den Modulverlaufsplan.
- Im Falle von Krankheit oder anderen schwerwiegenden Gründen, die eine fristgerechte Abgabe verhindern, ist die Lehrkraft unverzüglich zu informieren. Ein ärztliches Attest ist vorzulegen.
- Prüfen Sie vor Beginn der ersten Challenge, ob Sie auf die Daten zugreifen können und diese einlesen können. Melden Sie sich bei Problemen vor Beginn der (jeweiligen) Challenge beim Dozenten.
- Geben Sie in jeder eingereichten Datei Ihren Namen und die Nummer der Challenge an.
- Benennen Sie Ihre Dateien nach folgendem Schema:
challenge01-max-mustermann.R(für R-Skripte) oderchallenge01-max-mustermann.qmd(für Quarto-Dateien). - Nutzen Sie den Tidyverse-Styleguide.
- Im Fall eines Plagiats (d.h. wenn Sie Code von anderen übernehmen, ohne dies kenntlich zu machen), wird das Modul mit “nicht bestanden” bewertet.
- Im Fall, dass sich (quasi) identischer Text in mehreren Lösungen findet, wird dies als Plagiat gewertet bei allen Beteiligten.
- Reichen Sie in einer Challenge Ihre Lösungen zu dieser Challenge ein, nicht auch die Lösungen vorheriger Challenges.
- Füllen Sie im YAML-Header von Quarto-Dateien die Felder
title,authorunddateaus.
1.3.3 Tipps
- Gehen Sie nicht davon aus, dass die Groß- bzw. Kleinschreibung von Datei- oder Spaltennamen in der Aufgabenstellung notwendig der in der Datendatei entspricht. Beispiel: “actiondetails_” und “actionDetails_” können sind möglich. Sie (bzw. Ihr Computer-Code) sollte damit zurechtkommen.
- Nutzen Sie die Markdown-Syntax sinnvoll bei der Formatierung/Gestaltung von Quarto-Dateien (.qmd). Beispiel:
##### Der häufigste Wert ist "action" und er kommt 30mal vor. Hier wird eine Überschrift auf Ebene 5 verwendet, das ist nicht empfehlenswert. - Oftmals lassen Aufgabenstellung Freiraum und Interpretationsspielraum. In diesem Fall haben Sie das Recht und die Pflicht, (sinnvolle) Annahmen zu treffen.
- Experimentieren Sie mit der Source- und der Visual-Ansicht des Editors. Beide haben Vorteile.
1.3.4 Abgabeformat
1.3.4.1 Quarto
Sofern das Ausgabeformat “Quarto” definiert ist, reichen Sie Ihre Ergebnisse bitte in Form eines Dokuments ein,
- das die Lösung (der Aufgabenstellung) enthält,
- das Ihren Computer-Code enthält (mit Syntax-Highlighting),
- das Ihre Ausgaben zu Ihrem Computer-Code enthält,
- das Ihre Gedanken und Überlegungen (also Text, angereichert ggf. mit Diagrammen etc.) enthält,
- das übersichtlich und ansprechend formatiert ist,
- das in RMarkdown oder Quarto erstellt wurde,
- das die Grundlagen wissenschaftlichen Arbeitens beachtet,
- das “Standalone” lesbar ist, also keine Abhängigkeiten zu anderen Dokumenten benötigt,
- das als PDF- oder HTML-Datei formatiert ist,
- das soweit als möglich reproduzierbar ist.
- das kommentiert ist,
- das wohl gegliedert ist
- das durchläuft, ohne Fehler zu werfen.
- das alle Inhalte (Syntax, Diagramme und sonstigen Ouput) enthält.
1.3.4.2 R
Sofern als Ausgabeformat “R-Syntax” definiert ist, reichen Sie Ihren Code bitte in Form eines R-Skripts ein,
- das die Lösung der Challenge enthält.
- reproduzierbar ist
- durchläuft, ohne Fehler zu werfen
- kommentiert ist
- wohl gegliedert ist
- reichen Sie auch alle R-Funktionen und sonstigen Code ein, den Sie selber geschrieben haben. Dazu bietet sich ein Zip-Archiv mit allen relevanten Quelldateien an (R-Code im Format
file.R).
1.3.5 Musterlösungen
Nach Ablauf der Bearbeitungszeit jeder Challenge werden die Musterlösungen auf Github veröffentlicht, z.B. https://github.com/sebastiansauer/hans-hackathon2025/blob/main/challenge01-solution.qmd.
1.4 Teil 2: Fachgespräch
Die Termine für das Fachgespräch liegen in der Prüfungszeit und werden rechtzeitig bekannt gegeben über geeignete Kanäle.
Weitere Hinweise zum Fachgespräch finden sich im entsprechenden Kapitel im Hinweisbuch.
1.4.1 Gegenstand
Prüfungsgegenstand sind alle Inhalte aus dem Unterricht. Ein Schwerpunkt liegt auf den Musterlösungen sowie den eigenen, selbst eingereichten Lösungen der Challenges.
1.4.2 Beispiele für Prüfungsfragen
- Erklären Sie den Aufbau einer Funktion in R!
- Wie haben Sie die Glotzdauer berechnet?
- Was besagt die Variable idvisit?
- Wie groß war der von uns verwendete Rohdatensatz (Zeilen, Spalten)?
- Nennen Sie ein Beispiel für einen gut und einen schlecht gewählten Objektnamen!
- Erläutern Sie, wie die Daten laut Musterlösung in R importiert wurden.
- Mit welchem R-Paket wurden laut Musterlösung Datums-/Zeitangaben bearbeitet?
- Erklären Sie eine Funktion aus dem R-Paket
stringr! - Was macht die Funktion
purrr::map? - Was ist das “Tidyverse”?
- Wann ist ein Mittelwert mehr bzw. weniger aussagekräftig?
- Was macht ein gutes Datendiagramm aus?
- Im Rohdatensatz: Es gibt ein Muster in den Spaltennamen. Was fällt Ihnen dazu auf?
- Im Rohdatensatz: Was fällt Ihnen zur Anteil und zum Muster der fehlenden Werte auf?
- Was versteht man unter “Regex” im Kontext der String-Verarbeitung?
- Wie kann man leere Zeilen oder leere Spalten auf einem Dataframe entfernen?
- Wie kann man konstante Zeilen oder Spalten aus einem Dataframe entfernen? Warum sollte man das tun?
- Erläutern Sie folgenden R-Code:
out <1. list()
for (i in 1:length(datafiles_list)) {
out[[i]] <1. read.csv(datafiles_list[i])
}
- Wie kann man eine Spalte an den Anfang eines Dataframes ziehen?
- Nennen Sie Vor1. und Nachteile des Einsatzes von Excel für eine Aufgabe wie das Projekt im vorliegenden Modul.
- Nennen Sie eine Funktion, um eine als String (
character) formatierte Spalte (z.B. “1970-01-01”) in ein Datums-/Zeitobjekt umzuwandeln! - Erklären Sie folgende Syntax:
str_remove(string = names(d),
pattern = "_[:digit:].*") |>
unique()
- Erklären Sie folgende Syntax:
d_only_subtitles_and_timestamps |>
mutate(across(contains("timestamp"), ~ as_datetime(as.numeric(.x))))
- Erklären Sie folgende Syntax:
d_time_repaired |>
filter(!str_detect(actionDetails_0_subtitle, "developer|lecturer|admin"))
- Erläutern Sie, was mit “Pivotieren” gemeint ist im Kontext des vorliegenden Projekts der Datenanalyse. Was ist der Nutzen des Pivotierens?
- Geben Sie eine Syntax an, um alle Spalten als Strings (
character) zu formatieren. - Erläutern Sie den Aufbau einer Targets-Pipeline.
- Beim zeilenweisen Zusammenbinden einer großen Zahl an CSV-Dateien kann es zu Problemen kommen. So auch im vorliegenden Projekt. Erläutern Sie ein Problem und schlagen Sie eine Lösung vor.
- An welchen Wochentagen und an welchen Uhrzeiten wird Hans bevorzugt besucht?
- Was ist der älteste und was der neueste Timestamp in unserem Datensatz?
- Beschreiben Sie ein Problem, das während Ihrer Analyse aufgetreten ist und wie Sie es gelöst haben. Was haben Sie daraus gelernt?
- Was würden Sie anders machen, wenn Sie die Daten erneut analysieren würden?
- Was ist eine (wichtige) Sache, die Sie während der Analyse gelernt haben?
- Was macht die “Pfeife”
|>in einer R-Syntax? - Diskutieren Sie die Für und Wider einer kompetenzorientierten Prüfung, also einer Prüfung, in der es weniger um Kenntnis theoretischer Inhalte, sondern um die Kompetenz zur Lösung eines Problems geht.
- Hier ist ein Auszug aus Ihrer Lösung zu Challenge X. Erläutern Sie Ihre Syntax zu Aufgabe Y!
- Erläutern Sie einen Weg, um die Musterlösung auf Geschwindigkeit zu optimieren.
- Geben Sie ein Beispiel für eine zu wenig allgemeine Funktion! Beispiel:
read_csv_meine_lieblingsdatei(). - Was sind Vorteile, Funktionen beim Programmieren zu nutzen?
- Erläutern Sie folgenden Code:
unique_counts <- sapply(Matomo1[ , spalten_aufgabe7], function(x) length(unique(x))). - Erläutern Sie folgenden Code:
matomo_aufgabe8 <- Matomo1[, (spalten_aufgabe7)]; lapply(matomo_aufgabe8, unique). - Erläutern Sie folgenden Code:
daten_clean %>% summarise(across(everything(), ~ mean(is.na(.)))). - ?
sum(str_detect(names(matomo_day1), "^actionDetails_")) - ?
grep("id|ID|Ip|ip|fingerprint", names(matomo_day1), value = TRUE) - Erklären Sie den Unterschied zwischen
select(contains("action.")und `select(matches(“action.”). - ?
mutate( days_since_last_visit = as.numeric(server_date - lag(server_date)) )
1.5 Sonstiges
Bitte beachten Sie die allgemeinen Hinweise im Hinweisbuch besonders die allgemeinen Prüfungshinweise sowie die Hinweise zum Programmieren.
Bei Fragen, die eine Verteilung als Antwort haben, sollten Sie die Verteilung mit statistischen Methoden beschreiben. Beispiel: “Was ist die typische Verweildauer?” - Antwort: “Die mittlere Verweildauer beträgt 3 Minuten, mit einer Standardabweichung von 2 Minuten. Die Verteilung ist rechtsschief.” Eine Visualisierung der Verteilung bietet sich an (z.B. mit einem Histogramm).
Wiederverwendung
Zitat
@online{untitled,
author = {},
url = {https://sebastiansauer.github.io/hans-hackathon2025/pruefung.html},
langid = {de-DE}
}