Leitfaden Programmierkentnisse im Physikstudium: Unterschied zwischen den Versionen

Aus ZaPFWiki
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
[[Kategorie:Unsortiert]]
[[Kategorie:Programmierung]]





Aktuelle Version vom 2. November 2019, 09:32 Uhr


Basierend auf dem SoSe19 AK Programmierkentnisse (SoSe19_AK_Programmierkenntnisse)

Entwurf für Modul

Im Folgenden soll erst einmal ein Entwurf für die vom AK als ideal erachtete Vorgehensweise zur Vermittelung von grundlegenden Programmierkenntnissen dargestellt werden.

Einführungsveranstaltung

Eine Einführungsveranstaltung mit ca 4 SWS hierzu sollte spätestens im dritten Semester [1]liegen und verpflichtend sein. Die Vorlesung besteht idealerweise aus kurzen Inputvorträgen gefolgt von Präsenzprogrammierübungen mit direkter Betreuung durch die Tutoren während der Vorlesungszeit in einer grundlegenden Sprache. Die Aufgaben werden von den Tutoren (idealerweise Doktoranden) korrigiert, wobei idealerweise der Schwerpunkt auf Funktion des Codes gelegt wird. Von einer Benotung [2] sowie einer Anwesenheitspflicht [3] wird stark abgeraten, evtl. ist das Ganze Voraussetzung für die Klausurzulassung.

Vertiefung

In den folgenden zwei bis drei Semestern wird eine verpflichtende Programmierübung (2SWS) zur Festigung der Kenntnisse eingeführt. Die Übung besteht aus zwei sich abwechselnden Formaten.

  • In Woche 1 stellt der*die Tutor*in die Aufgaben mit ihren grundlegenden Ideen vor. In der folgenden Woche haben die Studierenden dann die Zeit die Aufgabe in Zweiergruppen zu erledigen. Um die Arbeitsbelastung auszugleichen werden in dieser Woche die Arbeitsblätter der Physikvorlesung etwas reduziert.
  • In Woche 2 werden dann die Resultate der zuhause gelösten Übungen im Dreiergespräch mit dem*der Tutor*in abgesprochen. Die Studierenden haben in dieser Woche dann keine Aufgaben zu erledigen.

Weitere Hinweise

  • Die oben beschriebenen Formate werden idealerweise als ein Modul (z.B. Einführung in die naturwissenschaftliche Programmierung) angeboten.
  • Bezüglich der Inhalte wird auf das zugehörige ZaPF Positionspapier verwiesen (https://zapf.wiki/Datei:Programmierkenntnisse.pdf). Evtl. Punkt 1 (Kompilierung Versionierung etc.) auslassen
  • Prinzipiell werden Professor*innen auch dazu angehalten, passende Programmieraufgaben in ihren Übungsblättern zu integrieren.
  • Im Fortgeschrittenenpraktikum soll es die Möglichkeit geben, als Versuch eine Simulation zu schreiben.

Begründungen

  1. Die ersten beiden Semester sind zu stressig und für die höheren APs und das FP brauch man die Kenntnisse.
  2. Reduziert die Motivation abzuschreiben und erlaubt "kreative" Ansätze. Reduziert auch den Vorteil der Leute, die schon programmieren können.
  3. Manche Leute können schon gut programmieren und wären bei Anwesenheitspflicht stark unterfordert.

NoGos

  • Starke Niveausprünge zwischen den Veranstaltungen (Kommunikation zwischen Dozent*innen anregen)
  • "Programmieren auf Papier" (kein handschriftlicher Code in Prüfungen oder Übungszetteln)
  • Frontalübung
  • An der Tafel "vorrechnen"

Beispiele für sinnvolle Versuche

Weiche Materie(Computersimulationen, numerische Verfahren)

Theorieversuche im Fortgeschrittenen-Praktikum (Beispiel aus Duisburg)

Es wird die Hardware gestellt und Studierende schreiben in der Uni unter Anleitung einer betreuenden Person eine Simulation. Eine Anleitung mit der zugrunde liegenden Theorie steht zur Verfügung, die sich die Studierenden vor dem Versuchstag nachvollziehen. Am Versuchstag selbst wird diese Theorie in einem Vorgespräch mit dem Betreuer durchgesprochen und offene Fagen geklärt bzw. Fehler diskutiert.

Anschließend muss die Theorie auf das vorliegende Problem bezogen und implementiert werden (z.B. bei einem der Versuche wird wird über den Virialsatz, die Monte Carlo-Methode und Pfadintegrale gesprochen und man muss sich vor der Implementierung überlegen, wie man Observablen messen kann). Der*die Betreuer*in ist während der Implementierung anfänglich für ein paar Stunden anwesend oder in seinem*ihrem Büro erreichbar, sodass Rückfragen direkt möglich sind und Hilfestellungen, wenn notwendig, geleistet werden können.

Durch die "Präsenzzeit" ist der Versuch vom Aufwand vergleichbarer mit den experimentellen Versuchen. Die Implementatierung dauert üblicherweise länger bei experimentellen Versuchen, dafür ist das Post-Processing der Daten weniger aufwendig. Im Protokoll wird dann die Theorie beschrieben (Virialsatz usw. siehe oben). Das Programm wird angehängt und ist idealerweise minimal kommentiert.