ZiP Computergestütstes Wissenschaftliches Rechnen

Aus ZaPFWiki

AK Computergestütztes Wissenschaftliches Rechnen

Protokoll vom 17.05.2012

Beginn: 13:00
Ende: 14:30
Redeleitung: Katharina (Uni Göttingen)
Protokoll: Sebastian (Uni Bremen)
Anwesende:

FU Berlin, HU Berlin, Uni Bielefeld, Uni Bonn, Uni Bremen, Uni Frankfurt, Uni Göttingen, Uni Hamburg, Uni Heidelberg , TU Kaiserslautern, Karlsruher Institut für Technologie, Uni Leipzig, Uni Oldenburg, Uni Potsdam, Uni Rostock, Uni Tübingen, Uni Wuppertal,

Einleitung/Ziel des AKs

In Göttingen gibt es eine Veranstaltung Computergestütztes Wissenschaftliches Rechnen, für die Programmierkenntnisse vorausgesetzt werden. Deswegen wurde zunächst von Studenten eine Einführung in die Programmierung gegeben, die aber inzwischen von der Fakultät im 1. Semester verpflichtend durchgeführt wird und bisher schlecht evaluiert wird. Insbesondere können die meisten Programmieranfänger danach genauso wenig programmieren, wie vorher. Göttingen hätte gerne Input, wie man diese Veranstaltung besser machen kann.
Es handelt sich um einen Austausch-AK zu Veranstaltungen zum Erlernen von wissenschaftlichem Programmieren mit einer Sammlung von Ideen zur Verbesserung.

Protokoll

Sammlung

Folgenden Fragen werden beantwortet:

  1. Gibt es eine Einführung in die Programmierung? Wenn nicht, ist das problematisch?
  2. Was ist die Veranstaltungsform? (Vorlesung, Übung, Rechnertutorium, Online-Kurs, ...)
  3. Wer ist die Zielgruppe? (Programmieranfänger oder Fortgeschrittene?)
  4. Von wem wird die Veranstaltung durchgeführt? (Fakultät, Fachschaft, ...)
  5. Erfahrungen (Evaluationsergebnisse, Beschwerden?)
  6. Wie gut werden Programmieranfänger erreicht? Können diese danach (rudimentär) programmieren?
  7. Ist die Veranstaltung verpflichtend/freiwillig/benotet/unbenotet?
  • Göttingen: Vorlesung mit Übung zur Einführung in die Programmierung (C++) im 1. Semester (sehr schlecht evaluiert) als Vorbereitung auf eine Vorlesung im 2. Semester, die Algorithmen in der Vorlesung theoretisch und in den Übungen praktisch behandelt.
  • Wuppertal: 2-Wochen-Kurs Einführungskurs in Programmierung vor Praktikum (schlecht), frühere Veranstaltung Computational Science abgesetzt, weil schlecht/zu hoher Anspruch/keine Grundlagen; jetzt Programmieren für Physiker (Vorlesung + Übung), verpflichtend.
  • Kaiserslautern: Numerische Physik, gehalten von Didaktik-Doktor, ’Pseudocode’ umsetzen soll erlernt werden; verpflichtend, unbenotet.
  • Bremen: mehrere Kurse; ComputerundSoftware I/II (2V+2Ü), Einführung/Grundlagen des Programmierens, durch Doktor aus Computational-Bereich; 4. Semester ’Wissenschaftliches Programmieren’ von selbem Dozent, Fortran oder C (2V+1Ü)
  • Frankfurt: verpflichtendes Programmierpraktikum wurde dieses Semester erst eingeführt, (evtl.) Linux und Java, V+Ü beides im Computerraum
  • Oldenburg: Übungen mit Matlab sind Teil des Grundpraktikums; im 4. Sem. numerische Methoden (Matlab), gut evaluiert, gehalten durch Doktor, der Ahnung hat.
  • Tübingen: es gibt den Schwerpunktbereich Numerische Physik; freiwilliger 3-Wochen-Kurs in den Ferien für Anfänger, Praktikum mit Projekten, gut evaluiert, i.d.R. kann man danach programmieren
  • Heidelberg: sehr knappe Mathematica-Einführung (letzte Vorlesungsstunde eines Schlüsselkompetenzkurses), Verweis an Mathe/Informatik zum Erlernen
  • Bonn: Einführungsveranstaltung im 4. Sem. durch Physik-Prof; außerdem 2-Wochen-Kurs in C durch zwei Mathematikstudenten mit Projektarbeit, V+Ü Blockkurs, von Fachschaft organisiert, läuft sehr gut.
  • Rostock: Projektwoche, 4 Tage Einführungskurs durch Fachschaft für Grundlagen von LaTeX, Mathematica, Matlab etc., funktioniert gut, keine Veranstaltung zum wissenschaftlichen Rechnen
  • Hamburg: Grundlagenvorlesung im 1. Semester anhand C++, 3V+3Ü, Fokus auf Algorithmen, verständnisorientiert
  • Leipzig: Besuch von Kursen aus anderen FBs (z.B. 3-Wochen-Kurs in C oder Java-Programmierung bei Informatikern), funktioniert ganz gut
  • Kalrsruhe: früher Einführung für Erstsemester sehr knapp/zu hoher Anspruch; 4. Sem. C++ V+Ü, sehr anspruchsvoll für Leute ohne Grundlagenwissen, Physik-Prof.; 5. Sem. Rechnernutzung, Einblicke in versch. Programme; inzwischen bessere Einführung
  • Potsdam: Informatik für NaWis (früher sehr theoretisch); C++ Kurs, 2SWS, geteilt für Anfänger/Fortgeschrittene, läuft OK, reines Praktikum; 4. Sem. Messtechnik mit LabView, einfache Projekte; freiwilliger Java-Ferienkurs von Mathematik
  • HUB: 2-Wochen-EDV-Kurs, Rundumschlag durch alles, was mit Rechnern zu tun hat, durch Doktor; 4. Semester Programmieren mit Matlab, Erfolg sehr wechselhaft; jetzt neuer Einführungskurs durch Fachschaft zu Programmiergrundlagen (mit Abschlussaufgabe anhand physikalischer Fragestellung), der wohl gut funktioniert
  • FUB: meist Info als Nebenfach, rudimentäres Programmieren; Praktikum später erfordert Grundlagen im Programmieren (Mathematica, Schleifen, Regressionsgeraden), anfangs große Probleme, in Zukunft Extrakurs
  • Bielefeld: Computerpraktikum, 1 Woche Block (LaTeX, GNUPlot, etc (Praktikumsvorbereitung)), später weiterführende Veranstaltungen, erst Programmieren, dann Basics

Diskussion zu Einführung in die Programmierung

Zunächst werden die Veranstaltungen, die in die Programmierung an sich einführen, diskutiert.
Frage von Tübingen: Wo wird die zu verwendende Sprache vorgeschrieben? Es gibt 3 1/2 Meldungen, bei den meisten ist die Sprache also durch die Studenten frei wählbar.
Die besonders gut evaluierten Veranstaltungen werden noch einmal genauer erläutert:

  • Bonn: 2-Wochen-Kurs, morgens 2h Vorlesung, nachmittags 2h Übung, in Vorlesung werden Beispielprogramme live programmiert, sehr grundlegend, begleitete Übung mit einfachen Schritt-für-Schritt-Aufgaben, Skript.
  • Karlsruhe: Übungszettel mit Saalübung, sehr grundlegend gemacht, so dass jeder es verstehen kann.
  • Potsdam: gute Erfahrung mit nach Wissensstand getrennten Gruppen wegen sehr verschiedenem Vorwissen, direkt begleitet im Computerraum.
  • Tübingen: Vorlesung und Übung direkt im Computerraum zusammen.

Sehr schlecht bewertete Veranstaltungen/schlechter Lernerfolg: Göttingen. Die Vorlesung wird kaum besucht. Aufgrund der großen Studentenzahl ist eine Durchführung der gesamten Veranstaltung nur in den Computerräumen zumindest durch einen einzigen Dozenten nicht möglich.

Es wird gefragt, welche Püfungsleistungen es gibt und ob sie benotet sind. Die Frage wird getrennt nach Einführungskursen in die Programmierung und Veranstaltungen zum Wissenschaftlichen Rechnen beantwortet.

  • Programmieren: Klausur (7), Projekt (4), Ü-Zettel (6)
  • Wissenschaftl. Rechnen: Klausur (4), Projekt (4), Ü-Zettel (3)
  • Benotung: Einführung meist unbenotet, Wissenschaftliches Rechnen: 9 mal benotet, 4 mal unbenotet.

Frage: Warum gibt es so unterschiedliche Lernerfolge in manchen Veranstaltungen und eine große Zahl von Leuten, bei denen nichts hängen bleibt? Eine Schwierigkeit ist das Verständnis von Programmierstruktur/Denken in Algorithmen.

Karlsruhe merkt an, dass Hilfe durch fortgeschrittene Kommilitonen am meisten hilft.
Wuppertal meint, dass das Algorithmendenken wichtiger ist, als nur Bausteine (Schleife etc.) stumpf anwenden zu können. Dies könnte durch Pseudocode und Zeichnen von Ablaufdiagrammen gefördert werden.
Kaiserslautern ergänzt, dass das Umsetzen von vorgegebenem Pseudocode in Programmiersprache hilfreich ist.
Potsdam schlägt eine dreikomponentige Veranstaltung vor: Vorlesung behandelt die Theorie, in Übungen schreibt man mit Stift und Papier Pseudocode/Codestruktur (Ablaufdiagramme, ...), im Praktikum wendet man die Programmiersprache an.

Wissenschaftliches Rechnen

An einigen Unis wird keine Vorlesung zum Wissenschaftlichen Rechnen angeboten. Es wird gefragt, wie diese bei anderen Unis ins Curriculum eingebaut ist und worauf bei den Veranstaltungen eher der Fokus liegt:

  • theoretisch/mathematisch (4)
  • praktisch (ausgehend von der physikalischen Fragestellung) (2)
  • Mischung (3)

Die Herangehensweisen sind also sehr verschieden.

Einige Unis berichten, dass es teilweise Programmieraufgaben in frühen Semestern auf den Übungszetteln gibt, was kritisch gesehen wird (Bremen, Göttingen, Oldenburg, Kalrsruhe (Bonusaufgaben)).

Zusammenfassung

Es wurden Ideen/Konzepte für bessere (Einführungs-)Veranstaltungen gesammelt.

  • Vermitteln der grundlegenden "Programmierdenkweise"/"Pseudocode lesen" über Vorlesung/Übungen
  • Sprache lernen mit möglichst gut betreuten praktischen Übungen/Veranstaltungen
  • wer der Dozent ist, ist relativ egal, solange er weiß, was er tut/selbst im Arbeitsalltag mit Programmieren beschäftigt ist
  • schrittweises Vorstellen einzelner Programmierbausteine ("if"-Schleife, Algorithmen) mit gleichzeitigem Ausprobieren erweist sich meist als sehr effektiv
  • leider mitunter viel Abschreiben/Kopieren bekannter Probleme, daher geringer Lernerfolg.