summaryrefslogtreecommitdiff
path: root/muendliche-pruefung-mathematik
diff options
context:
space:
mode:
authororangerot <orangerot@orangerot.dev>2025-09-05 07:09:47 +0200
committerorangerot <orangerot@orangerot.dev>2025-09-05 07:17:39 +0200
commitf028dde18dc81dfe5db6f3312a38b81e9f605350 (patch)
tree49f7969999b4090bfb32875513cd8134b849dc9d /muendliche-pruefung-mathematik
parentf8b904e1a56b8a41e2a8022c200b14cf4c65b3a4 (diff)
feat(lib, mathe): template lib for Pruefungsfragebogen Mathematik
Diffstat (limited to 'muendliche-pruefung-mathematik')
-rw-r--r--muendliche-pruefung-mathematik/lib.typ110
-rw-r--r--muendliche-pruefung-mathematik/muendliche-pruefung.typ53
2 files changed, 138 insertions, 25 deletions
diff --git a/muendliche-pruefung-mathematik/lib.typ b/muendliche-pruefung-mathematik/lib.typ
new file mode 100644
index 0000000..efc0b87
--- /dev/null
+++ b/muendliche-pruefung-mathematik/lib.typ
@@ -0,0 +1,110 @@
+#let KIND = (:
+ "DIPLOM": "Diplomprüfung",
+ "STAATSEXAM": "Staatsexamensprüfung",
+ "STUDIENBEGLEITEND": "Studienbegleitende Prüfung",
+ "BACHELOR": "Bachelorprüfung",
+ "MASTER": "Masterprüfung",
+ "NONE": ""
+)
+
+#let oral-exam(
+ study: "", // Studiengang
+ lecture: "", // Fach
+ kind: KIND.NONE, // Prüfungsart (Diplom, Staatsexam, Studienbegleitend, Bachelor, Master)
+ date: datetime(year: 0, month: 1, day: 1), // Prüfungsdatum
+ examiner: "", // PrüferIn (Prof)
+ grade_received: 0.0, // Note
+ grade_reasonable: "", // War die Note angemessen?
+ exam_duration: duration(minutes: 0), // Prüfungsdauer
+ checked_knowledge_gaps: none, // Wurde Unwissen abgeprüft?
+ attendance: (
+ // Titel der Vorlesung, Dozent, Wann gehört, SWS, ECTS, LP
+ (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""),
+ (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""),
+ (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""),
+ (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""),
+ (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""),
+ ),
+ attendance_worth: [
+ // Wie regelmäßig hast du die Lehrveranstaltungen besucht? Hat sich der
+ // Besuch/Nichtbesuch in der Prüfung positiv/negativ ausgewirkt?
+ ],
+ literature: [
+ // Welche Literatur hast du benutzt (Bücher, Skripten, Vorlesungsmitschriften)?
+ ],
+ preparation_time: [
+ // Hast du dich alleine/zu mehreren auf die Prüfung vorbereitet? Wie lange?
+ // Hat es etwas gebracht?
+ ],
+ agreements: [
+ // Fanden vor der Prüfung Absprachen statt (Form, Inhalt, ...)?
+ // Wenn ja, welche? Wurden sie eingehalten?
+ ],
+ preparations: [
+ // Welche Tipps zur Vorbereitung kannst du geben?
+ // (wichtige/unwichtige Teile des Stoffs, gute Literatur, Lernstil)
+ ],
+ examiner_behavior: [
+ // Was kannst du zum Prüfungsstil des/der Prüfenden sagen?
+ // (Prüfungsatmosphäre, (un)klare Fragestellungen, Fragen nach Einzelheiten
+ // oder eher gröÿere Zusammenhänge, gezielte Zwischenfragen oder lässt
+ // er/sie dich erzählen, Weiterhelfen bei Unsicherheiten ...)
+ ],
+ examiner_recommendation: (none, [
+ // Kannst du die Prüfenden weiterempfehlen?
+ ]),
+ examinee_behavior: [
+ // Welche Ratschläge für das Verhalten in der Prüfung kannst du geben?
+ ],
+ doc
+) = [
+ #let checkbox(checked: false) = if (checked) {$times.square$} else {$square$}
+ #let input(width: 1fr, name: "", body) = box(width: width, height: 1em, inset: (bottom: 2pt), baseline: 2pt, stroke: (bottom: 0.5pt),align(right, [#body #label(name)]))
+ #let grid_arguments(it) = {
+ let g = it.fields()
+ let _ = g.remove("label")
+ let _ = g.remove("children")
+ return g
+ }
+
+ #show <study>: study
+ #show <lecture>: lecture
+ #show <date>: if date.year() > 0 {date.display("[day].[month].[year]")}
+ #show <examiner>: examiner
+ #show <literature>: literature
+ #show <preparation_time>: preparation_time
+ #show <attendance_worth>: attendance_worth
+ #show <agreements>: agreements
+ #show <preparations>: preparations
+ #show <exam_duration>: if exam_duration.minutes() > 0 {exam_duration.minutes()}
+ #show <examiner_behavior>: examiner_behavior
+ #show <examinee_behavior>: examinee_behavior
+ #show <grade_received>: if grade_received > 0.0 {str(grade_received+0.01).slice(0,3).replace(".",",")}
+ #show <grade_reasonable>: grade_reasonable
+ #show <examiner_recommendation>: examiner_recommendation.at(1)
+ #show <kind>: it => grid(..grid_arguments(it),
+ ..KIND.values().filter(it => it != KIND.NONE).map(exam_kind => [
+ #checkbox(checked: kind == exam_kind) #exam_kind
+ ]),
+ [#checkbox(checked: kind not in KIND.values() and kind != "")
+ #input(width: 1fr)[ #if kind not in KIND.values() [#kind] ]
+ ]
+ )
+ #show <attendance>: it => table(..grid_arguments(it),
+ ..it.fields().children.at(0).children,
+ ..(attendance.map(lecture => lecture.values()).flatten() + 5*6*([],)).slice(0,count: 5*6)
+ )
+ #show <checked_knowledge_gaps>: [
+ #h(1fr)
+ #checkbox(checked: checked_knowledge_gaps == true) ja
+ #h(0.8cm)
+ #checkbox(checked: checked_knowledge_gaps == false) nein
+ ]
+
+ #include "muendliche-pruefung.typ"
+
+ #doc
+]
+
+#oral-exam()[]
+
diff --git a/muendliche-pruefung-mathematik/muendliche-pruefung.typ b/muendliche-pruefung-mathematik/muendliche-pruefung.typ
index 377087e..fceb0ff 100644
--- a/muendliche-pruefung-mathematik/muendliche-pruefung.typ
+++ b/muendliche-pruefung-mathematik/muendliche-pruefung.typ
@@ -8,7 +8,8 @@
#show heading: it => box(inset: (bottom: 1em), it)
#let checkbox(checked: false) = if (checked) {$times.square$} else {$square$}
-#let input(width: 1fr, body) = box(width: width, height: 1em, inset: (bottom: 2pt), baseline: 2pt, stroke: (bottom: 0.5pt),align(right, body))
+#let input(width: 1fr, name: "", body) = box(width: width, height: 1em, inset: (bottom: 2pt), baseline: 2pt, stroke: (bottom: 0.5pt),align(right, [#body #label(name)]))
+#let textfield(..args, name: "", body) = block(..args)[#body #label(name)]
#v(4em)
#align(center)[
@@ -17,7 +18,7 @@
#text(size: 16pt)[der Fachschaft Mathematik]
#v(3.5em)
- #block(width: 14cm)[
+ #textfield(width: 14cm)[
#align(left)[
#par(first-line-indent: (amount: 0.5em, all: true))[
Dieser Fragebogen dient dazu, den Studierenden, die nach dir die Prüfung
@@ -36,15 +37,15 @@
[
_Welchen Studiengang/Profl studierst du?_
],
- input[
+ input(name: "study")[
// Hier ist Platz für deinen Kommentar.
],
[
_Wann hast du die Prüfung abgelegt (Monat/Jahr)?_
],
- input[
+ input(name: "date")[
// Hier ist Platz für deinen Kommentar.
- ]
+ ],
)
_Was war es für eine Prüfung?_
@@ -70,14 +71,14 @@ _Was war es für eine Prüfung?_
// Hier ist Platz für deinen Kommentar.
]
]
-)
+) <kind>
-_Wer hat die Prüfung abgenommen?_ #input[
+_Wer hat die Prüfung abgenommen?_ #input(name: "examiner")[
// Hier ist Platz für deinen Kommentar.
]
_Welche Vorlesungen wurden geprüft und bei wem hast du sie gehört?_
-#block(height: 1em)[
+#textfield(height: 1em, name: "lecture")[
// Hier ist Platz für deinen Kommentar.
]
@@ -96,13 +97,13 @@ _Welche Vorlesungen wurden geprüft und bei wem hast du sie gehört?_
)}, rows: (auto,) + 5 * (2.5em,),
table.header[Titel der Vorlesung][Dozent][Wann gehört][SWS][ECTS][LP],
..(lectures + 5*6*([hi],)).slice(0,5*6)
-)
+) <attendance>
#pagebreak()
_Wie *regelmäßig* hast du die Lehrveranstaltungen besucht?
Hat sich der Besuch/Nicht- besuch in der Prüfung positiv/negativ ausgewirkt?_
-#block(height: 1cm)[
+#textfield(height: 1cm, name: "attendance_worth")[
// Hier ist Platz für deinen Kommentar.
]
@@ -110,25 +111,25 @@ Hat sich der Besuch/Nicht- besuch in der Prüfung positiv/negativ ausgewirkt?_
== Vorbereitung auf die Prüfung
_Welche *Literatur* hast du benutzt (Bücher, Skripten, Vorlesungsmitschriften)?_
-#block(height: 2cm)[
+#textfield(height: 2cm, name: "literature")[
// Hier ist Platz für deinen Kommentar.
]
_Hast du dich *alleine/zu mehreren* auf die Prüfung vorbereitet? Wie lange?
Hat es etwas gebracht?_
-#block(height: 1cm)[
+#textfield(height: 1cm, name: "preparation_time")[
// Hier ist Platz für deinen Kommentar.
]
_Fanden vor der Prüfung *Absprachen* statt (Form, Inhalt ...)? Wenn ja, welche?
Wur- den sie eingehalten?_
-#block(height: 3cm)[
+#textfield(height: 3cm, name: "agreements")[
// Hier ist Platz für deinen Kommentar.
]
_Welche *Tipps* zur Vorbereitung kannst du geben? (wichtige/unwichtige Teile des
Stoffs, gute Literatur, Lernstil)_
-#block(height: 3cm)[
+#textfield(height: 3cm, name: "preparations")[
// Hier ist Platz für deinen Kommentar.
]
@@ -142,7 +143,7 @@ Beweisen gefragt wurde, wo besonders nachgehakt wurde. Schreibe wenn möglich
auch auf, worauf der Prüfer hinaus wollte. Kennzeichne bitte Fragen, die
eigentlich nicht direkt zum Stoff gehören._
-_Dauer der Prüfung?_ #input[
+_Dauer der Prüfung?_ #input(name: "exam_duration")[
// Hier ist Platz für deinen Kommentar.
]
@@ -150,18 +151,20 @@ _Was kannst du zum *Prüfungsstil* des/der Prüfenden sagen? (Prüfungsatmosphä
(un)klare Fragestellungen, Fragen nach Einzelheiten oder eher gröÿere
Zusammenhänge, gezielte Zwischenfragen oder lässt er/sie dich erzählen,
Weiterhelfen bei Unsicherhei- ten...)_
-#block(height: 3cm)[
+#textfield(height: 3cm, name: "examiner_behavior")[
// Hier ist Platz für deinen Kommentar.
]
_Wurde an Stelle deines Wissens auch dein Unwissen abgeprüft?_
-#h(1fr)
-#checkbox(checked: false) ja
-#h(0.8cm)
-#checkbox(checked: false) nein
+#[
+ #h(1fr)
+ #checkbox(checked: false) ja
+ #h(0.8cm)
+ #checkbox(checked: false) nein
+] <checked_knowledge_gaps>
_Welche *Ratschläge für das Verhalten* in der Prüfung kannst du geben?_
-#block(height: 3.5cm)[
+#textfield(height: 3.5cm, name: "examinee_behavior")[
// Hier ist Platz für deinen Kommentar.
]
@@ -171,20 +174,20 @@ _Welche *Ratschläge für das Verhalten* in der Prüfung kannst du geben?_
[
_Welche Note hast du bekommen?_
],
- input[
+ input(name: "grade_received")[
// Hier ist Platz für deinen Kommentar.
],
[
_Empfandest du sie als angemessen?_
],
- input[
+ input(name: "grade_reasonable")[
// Hier ist Platz für deinen Kommentar.
],
[
_Kannst du die Prüfenden weiterempfehlen?_
],
- input[
+ input(name: "examiner_recommendation")[
// Hier ist Platz für deinen Kommentar.
- ]
+ ],
)