diff options
author | orangerot <orangerot@orangerot.dev> | 2025-08-31 00:06:04 +0200 |
---|---|---|
committer | orangerot <orangerot@orangerot.dev> | 2025-08-31 00:22:36 +0200 |
commit | d5c2f311c665b31400efaf95ba0d95cc56644b82 (patch) | |
tree | 3a7f59abd7b15edca83301e2ef3b5106b0435a45 | |
parent | ece97801594754efbf6113dc893e54a05a4d82a2 (diff) |
feat: template for muendliche Pruefung
-rw-r--r-- | mundl-prufung/lib.typ | 199 | ||||
-rw-r--r-- | mundl-prufung/prufung.typ | 169 |
2 files changed, 236 insertions, 132 deletions
diff --git a/mundl-prufung/lib.typ b/mundl-prufung/lib.typ new file mode 100644 index 0000000..7349c76 --- /dev/null +++ b/mundl-prufung/lib.typ @@ -0,0 +1,199 @@ +#let kind = (: + "wahlpflicht": "Wahlpflicht", + "vertiefungsfach": "Vertiefungsfach", + "ergaenzungsfach": "Ergänzungsfach", + "none": "" +) + +#let prufung( + study: "", // Studiengang + lecture: "", // Fach + kind: kind.none, // Prüfungsart (Wahlpflicht, Vertiefungsfach, Ergänzungsfach) + date: datetime(year: 0, month: 1, day: 1), // Prüfungsdatum + examiner: "", // PrüferIn (Prof) + assistant: "", // BeisitzerIn + grade_received: 0.0, // Note + grade_reasonable: "", // War die Note angemessen? + exam_duration: duration(minutes: 0), // Prüfungsdauer + attendance: ( + /* Veranstaltung, Dozent(in), Jahr, regelmäßig besucht? */ + (lecture: "", lecturer: "", year: "", did_attend: ""), + (lecture: "", lecturer: "", year: "", did_attend: ""), + (lecture: "", lecturer: "", year: "", did_attend: ""), + (lecture: "", lecturer: "", year: "", did_attend: ""), + ), + attendance_worth: [ + // Hat sich der Besuch / Nichtbesuch der Veranstaltung für dich gelohnt? + ], + preparation_time: [ + // Wie lange und wie hast alleine bzw. mit anderen vorbereitet? + ], + agreements: [ + // Fanden vor der Prüfung Absprachen zu Form oder Inhalt statt? Wurden sie eingehalten? + ], + preparations: [ + // Welche Tips zur Vorbereitung kannst Du geben? + ], + examiner_behavior: [ + // Wie war der Prüfungsstil des Prüfers / der Prüferin? + ], + examiner_recommendation: (none, [ + // Kannst du ihn / sie weiterempfehlen? Warum? + ]), + examinee_behavior: [ + // Kannst Du Ratschläge Verhalten in der Prüfung geben? + ], + doc +) = [ + #set page("a4", margin: 1.1cm) + #set text(lang: "de", size: 10pt) + #set grid(column-gutter: .5cm, inset: (bottom: 10pt)) + #set table(stroke: 0.5pt) + #show emoji.hand.write: box(height: 10pt, clip: true, scale(x:-100%)[🖎]) + #show table.cell: it => block(inset: (bottom: 4pt, rest: 8pt), box(height: 1em, it.body)) + #let radiobox(checked: false) = if checked {$circle.filled$} else {$circle$} + #let input(width: 1fr, body) = box(width: width, height: 1em, inset: (bottom: 2pt), baseline: 2pt, stroke: (bottom: (dash: "loosely-dotted")),align(right, body)) + #let question(q, body) = [ + #grid(columns: 2, inset: 0pt, emoji.hand.write, box(inset: (top: 3pt))[*#q*]) + + #body + ] + + #page([ + #grid(columns: 2 * (1fr,), + [ + #v(1em) + #grid(columns: 2, + image(width: 1.8cm, "fsmi-logo.svg"), + text(size: 15pt)[ + Fragebogen der Fachschaft zu + *mündlichen Prüfungen* \ + im Informatikstudium + ]) + ], + [ + ], + [],[ + #align(center)[Barcode:] + ], + par(justify: true)[ + Dieser Fragebogen gibt den Studierenden, die nach dir die Prüfung ablegen + wollen, einen Einblick in Ablauf und Inhalt der Prüfung. Das erleichtert die + Vorbereitung. \ + Bitte verwende zum Ausfüllen einen schwarzen Stift. Das erleichtert das + Einscannen. \ + Vielen Dank für deine Mitarbeit! + ], + [ + #grid( + columns: (.1cm, 1fr, .1cm), + rows: (.1cm, 2.5cm, .1cm), + stroke: (x,y) => (: + top: if x != 1 and y == 0 {.5pt}, + bottom: if x != 1 and y == 2 {.5pt}, + left: if y != 1 and x == 0 {.5pt}, + right: if y != 1 and x == 2 {.5pt}, + )) + #v(2em) + ], + [ + Dein Sudiengang: #input[#study] + + Prüfungsart: + #let module_kinds = ( + "Wahlpflicht", + "Vertiefungsfach", + "Ergänzungsfach", + ) + #for module_kind in module_kinds [ + \ #radiobox(checked: kind == module_kind) #module_kind + ] + + Welches? #input[#lecture] + ], + [ + #grid(columns: (auto, 1fr), + [Prüfungsdatum:], input[#if date.year() > 0 {date.display("[day].[month].[year]")}], + [Prüfer(in): ], input[#examiner], + [Beisitzer(in):], input[#assistant], + ) + ]) + + #let modules = attendance + 4 * ((lecture: "", lecturer: "", year: "", did_attend: ""),) + + *Prüfungsfächer und Vorbereitung:* + + #table(columns: 4 * (1fr,), row-gutter: (2pt, ..(3*(0pt,))), + table.header[Veranstaltung][Dozent(in)][Jahr][regelmäßig besucht?], + ..modules.map(((lecture, lecturer, year, did_attend)) => + (lecture, lecturer, year, did_attend) + ).slice(0,4).flatten() + ) + + #v(1em) + #grid(columns: 2 * (1fr,),[ + Note: #input[#if grade_received > 0.0 {str(grade_received+0.01).slice(0,3).replace(".",",")}] + ],[ + Prüfungsdauer:#input[#if exam_duration.minutes() > 0 {exam_duration.minutes()}] Minuten + ]) + + #v(1em) + War diese Note angemessen? #input[#grade_reasonable] + + #v(1em) + #question[Wie war der Prüfungsstil des Prüfers / der Prüferin?][ + Prüfungsatmosphäre, (un)klare Fragestellungen, Frage nach Einzelheiten oder eher größeren Zusammenhängen, kamen häufiger Zwi- + schenfragen oder ließ er/sie dich erzählen, wurde dir weitergeholfen, wurde in Wissenslücken gebohrt? + + #examiner_behavior + ] + + ], footer: [#h(1fr)$arrow.r.hook$ *Rückseite bitte nicht vergessen!*]) + + #page()[ + #grid(rows: (3 * (22em,)), columns: 2 * (1fr,), + question[ + Hat sich der Besuch / Nichtbesuch der Veran- + staltung für dich gelohnt? + ][#attendance_worth], + question[ + Kannst du ihn / sie weiterempfehlen? Warum? \ \ + ][ + #radiobox(checked: examiner_recommendation.at(0) == true) Ja \ + #radiobox(checked: examiner_recommendation.at(0) == false) Nein + + #examiner_recommendation.at(1) + ], + question[ + Wie lange und wie hast du dich alleine oder + mit anderen auf die Prüfung vorbereitet? + ][#preparation_time], + question[ + Fanden vor der Prüfung Absprachen zu Form + oder Inhalt statt? Wurden sie eingehalten? + ][#agreements], + question[ + Welche Tipps zur Vorbereitung kannst du ge-\ ben? + ][ + Wichtige / unwichtige Teile des Stoffes, gute Bücher / Skrip- + ten, Lernstil, ... + + #preparations + ], + question[ + Kannst du Ratschläge für das Verhalten in der + Prüfung geben? + ][#examinee_behavior] + ) + + *Inhalte der Prüfung (bitte auf weitere Blätter):* + + #set list(spacing: 1.2em, indent: 1.5em) + - Schreibe bitte möglichst viele Fragen und Antworten auf. + - Wo wurde nach Herleitungen oder Beweisen gefragt oder sonstwie nachgehakt? + - Worauf wollte der Prüfer / die Prüferin hinaus? + - Welche Fragen gehörten nicht zum eigentlichen Stoff? + ] + #doc +] + diff --git a/mundl-prufung/prufung.typ b/mundl-prufung/prufung.typ index db8ce42..a661177 100644 --- a/mundl-prufung/prufung.typ +++ b/mundl-prufung/prufung.typ @@ -1,140 +1,45 @@ -#set page("a4", margin: 1.1cm) -#set text(lang: "de", size: 10pt) -#set grid(column-gutter: .5cm, inset: (bottom: 10pt)) -#set table(stroke: 0.5pt) -#show emoji.hand.write: box(height: 10pt, clip: true, scale(x:-100%)[🖎]) -#show table.cell: it => block(inset: (bottom: 4pt, rest: 8pt), box(height: 1em, it.body)) -#let radiobox(checked: false) = if (checked) {$circle.filled$} else {$circle$} -#let question(q, body) = [ - #grid(columns: 2, emoji.hand.write, box(inset: (top: 3pt))[*#q*]) - - #body -] -#let input(width: 1fr, body) = box(width: width, height: 1em, inset: (bottom: 2pt), baseline: 2pt, stroke: (bottom: (dash: "loosely-dotted")),align(right, body)) - -#page([ - #grid(columns: 2 * (1fr,), - [ - #v(1em) - #grid(columns: 2, - image(width: 1.8cm, "fsmi-logo.svg"), - text(size: 15pt)[ - Fragebogen der Fachschaft zu - *mündlichen Prüfungen* \ - im Informatikstudium - ]) +#import "lib.typ": prufung, kind + +#show: prufung.with( + study: "", // Studiengang + lecture: "", // Fach + kind: kind.none, // Prüfungsart (Wahlpflicht, Vertiefungsfach, Ergänzungsfach) + date: datetime(year: 0, month: 1, day: 1), // Prüfungsdatum + examiner: "", // PrüferIn (Prof) + assistant: "", // BeisitzerIn + grade_received: 0.0, // Note + grade_reasonable: "", // War die Note angemessen? + exam_duration: duration(minutes: 0), // Prüfungsdauer + attendance: ( + /* Veranstaltung, Dozent(in), Jahr, regelmäßig besucht? */ + (lecture: "", lecturer: "", year: "", did_attend: ""), + (lecture: "", lecturer: "", year: "", did_attend: ""), + (lecture: "", lecturer: "", year: "", did_attend: ""), + (lecture: "", lecturer: "", year: "", did_attend: ""), + ), + attendance_worth: [ + // Hat sich der Besuch / Nichtbesuch der Veranstaltung für dich gelohnt? ], - [ + preparation_time: [ + // Wie lange und wie hast alleine bzw. mit anderen vorbereitet? ], - [],[ - #align(center)[Barcode:] + agreements: [ + // Fanden vor der Prüfung Absprachen zu Form oder Inhalt statt? Wurden sie eingehalten? ], - par(justify: true)[ - Dieser Fragebogen gibt den Studierenden, die nach dir die Prüfung ablegen - wollen, einen Einblick in Ablauf und Inhalt der Prüfung. Das erleichtert die - Vorbereitung. \ - Bitte verwende zum Ausfüllen einen schwarzen Stift. Das erleichtert das - Einscannen. \ - Vielen Dank für deine Mitarbeit! + preparations: [ + // Welche Tips zur Vorbereitung kannst Du geben? ], - [ - #grid( - columns: (.1cm, 1fr, .1cm), - rows: (.1cm, 2.5cm, .1cm), - stroke: (x,y) => (: - top: if (x != 1 and y == 0) {.5pt}, - bottom: if (x != 1 and y == 2) {.5pt}, - left: if (y != 1 and x == 0) {.5pt}, - right: if (y != 1 and x == 2) {.5pt}, - )) - #v(2em) + examiner_behavior: [ + // Wie war der Prüfungsstil des Prüfers / der Prüferin? ], - [ - Dein Sudiengang: #input[] - - Prüfungsart: - #let module_kind = ( - "Wahlpflicht", - "Vertiefungsfach", - "Ergänzungsfach", - ) - #for kind in module_kind [ - \ #radiobox() #kind - ] - - Welches? #input[] + examiner_recommendation: (none, [ // true, false + // Kannst du ihn / sie weiterempfehlen? Warum? + ]), + examinee_behavior: [ + // Kannst Du Ratschläge Verhalten in der Prüfung geben? ], - [ - #grid(columns: (auto, 1fr), - [Prüfungsdatum:], input[], - [Prüfer(in):], input[], - [Beisitzer(in):], input[], - ) - ]) - - *Prüfungsfächer und Vorbereitung:* - #table(columns: 4 * (1fr,), row-gutter: (2pt, ..(3*(0pt,))), - table.header[Veranstaltung][Dozent(in)][Jahr][regelmäßig besucht?], - ..range(4*4).map(it => []) - ) - #v(1em) - #grid(columns: 2 * (1fr,),[ - Note: #input[] - ],[ - Prüfungsdauer:#input[] Minuten - ]) - - #v(1em) - War diese Note angemessen? #input[] - - #v(1em) - #question[Wie war der Prüfungsstil des Prüfers / der Prüferin?][ - Prüfungsatmosphäre, (un)klare Fragestellungen, Frage nach Einzelheiten oder eher größeren Zusammenhängen, kamen häufiger Zwi- - schenfragen oder ließ er/sie dich erzählen, wurde dir weitergeholfen, wurde in Wissenslücken gebohrt? - ] - -], footer: [#h(1fr)$arrow.r.hook$ *Rückseite bitte nicht vergessen!*]) - -#page()[ - - // #grid(rows: (3 * (7.8cm,)), columns: 2 * (1fr,), - #grid(rows: (3 * (22em,)), columns: 2 * (1fr,), - question[ - Hat sich der Besuch / Nichtbesuch der Veran- - staltung für dich gelohnt? - ][], - question[ - Kannst du ihn / sie weiterempfehlen? Warum? \ \ - ][ - $circle$ Ja \ - $circle$ Nein - ], - question[ - Wie lange und wie hast du dich alleine oder - mit anderen auf die Prüfung vorbereitet? - ][], - question[ - Fanden vor der Prüfung Absprachen zu Form - oder Inhalt statt? Wurden sie eingehalten? - ][], - question[ - Welche Tipps zur Vorbereitung kannst du ge- ben? - - ][ - Wichtige / unwichtige Teile des Stoffes, gute Bücher / Skrip- - ten, Lernstil, ... - ], - question[ - Kannst du Ratschläge für das Verhalten in der - Prüfung geben? - ][] - ) +) - *Inhalte der Prüfung (bitte auf weitere Blätter):* +// Schreibe bitte möglichst viele Fragen und Antworten auf. +// Hier ist Platz für deinen Kommentar - #set list(spacing: 1.2em, indent: 1.5em) - - Schreibe bitte möglichst viele Fragen und Antworten auf. - - Wo wurde nach Herleitungen oder Beweisen gefragt oder sonstwie nachgehakt? - - Worauf wollte der Prüfer / die Prüferin hinaus? - - Welche Fragen gehörten nicht zum eigentlichen Stoff? -] |