KIF385:Wie lernt man das Programmieren im Informatikerstudium

Aus KIF
Zur Navigation springenZur Suche springen

Problematik

  • Erstis haben verschiedene Vorkenntnisse
  • Auch mitten im Studium können nicht alle mit Computern besonders gut umgehen
  • Teilweise gibt es keine Programmierkurse an der Uni, Programmierkenntnisse werden aber vorausgesetzt

Lösungsansätze

  • TU Darmstadt: Kaum jemand hat Vorerfahrungen mit Scheme -> also wird das gemacht, weil alle was lernen
    • Dann Übergang ins Imperative/Objektorientierte und Übersetzung auf andere Bereiche (z.B. VHDL)
  • RWTH Aachen: Java, Haskell, Prolog in einer Vorlesung im ersten Semester -> alle großen Programmierparadigmen
    • Auch Hintergründe erklären, z.B. Hoare-Kalkül
    • Später dann Softwarepraktika, wo teilweise z.B. C++ gebraucht wird -> Fokus mehr auf Softwareentwicklung
  • Uni Erlangen: Java wird in Ansätzen erklärt
    • Danach beibringen, wie man die Java-Dokumentation liest und klare Ansage: beschäftigt euch damit!
  • Berlin (BHT): Semesterprojekt im 2. Semester (nach allgemeiner Vorlesung im 1. Semester), z.B. Musikverwaltung bauen (kein Fokus auf Softwareentwicklung, sondern konkret Programmieren)
    • außerdem kostenlose Nachhilfekurse (L++) wenn man Schwierigkeiten hat

Voraussetzungen

Kontroverse Ansichten gibt es darüber, ob man Programmieren einfach voraussetzen sollte

  • Nebenbedingungen wie z.B. Bafög sind problematisch, weil sich für Menschen ohne Programmiererfahrung die Studiendauer verlängert -> kein Befög mehr, Studienzeitverlängerung, etc.
  • Auf der anderen Seite sollen die Leute auch im Studium selbstständig arbeiten können (selbstverantwortliches Lernen sollte jedem Studierenden zugetraut werden)
  • Es ist besser, die Konzepte hinter Programmiersprachen zu lernen, allgemein Programmieren zu können - anstatt nur eine Sprache konkret zu erlernen und nicht die Fähigkeit zu besitzen, sich weitere Sprachen gut aneignen zu können

Wie kann man Programmieren lehren?

  • Paradigmen und Konzepte wichtiger als konkrete Sprachen
  • Lehre wird aber über konkrete Programmiersprache gemacht
  • Zu wenig und zu seltene Beschäftigung mit Programmieren (nur eine Übung die Woche)
    • Zu kleine Stückelung
    • Zu wenig als "Handwerkszeug" wahrgenommen, das man allgemein und häufiger mal verwenden kann
  • Praktika können helfen, Programmier-Kenntnisse zu vertiefen
  • Problem Gruppenarbeit: es kann von Erfahrenen nicht verlangt werden, dass sie sich um Unerfahrene kümmern. Es kann umgekehrt nicht sein, dass das Niveau so hoch ist, dass die Unerfahrenen nicht durchkommen können
  • Wer den Willen hat Programmieren zu lernen, sollte genügend Hilfestellung von der Uni bekommen - das ist nicht Aufgabe anderer Studis!
  • Möglicherweise gute Idee: Programmieraufgaben, wo man ein kurzes (< 500 Zeilen) Programm bekommt, einen Teil ergänzen muss, dafür anderen Code lesen muss (Code-Review, Dekomposition, etc.)
    • man kann sich Sachen abgucken, man kann das Programm nachvollziehen und lernt das automatisch

Gruppenarbeit bei der Abgabe von Übungen?

  • teilweise muss in Gruppen gearbeitet werden, da die Arbeitsaufträge für nur eine Person zu umfangreich sind
  • zu zweit ist man mehr als nur doppelt so schnell
  • zu viel Glückssache, gerade im ersten Semester: wer arbeitet mit wem zusammen, wenn sich keiner kennt?
    • auch der Tutor in den Übungsgruppen kann scheiße sein -> erheblicher Nachteil, keine echte Möglichkeit das zu ändern
    • wie könnte man das besser machen?
      • vielleicht mit Tutorenschulungen
  • häufiges Konzept: jeder muss mal vorrechnen, dadurch müssen alle in der Gruppe arbeiten
    • nicht immer erfolgreich, wenn dadurch Defizite erst am Ende des Semester klar werden
  • Anwesenheitspflicht
    • kann ziemlich doof sein
    • Gruppenanwesenheitspflicht vielleicht besser: Gruppenmitglieder wollen nicht immer alle da sein, "schwächere" müssen also angeleitet werden, damit sie da sind und sinnvoll zuhören oder vorrechnen können

You actually make it seem relaly easy with your presentation however I find this matter to be relaly one thing that I think I would by no means understand. It sort of feels too complex and extremely wide for me. I'm taking a look ahead on your next publish, I’ll attempt to get the hang of it!

Tutoren

  • wird sehr veschieden gut bezahlt (teilweise nur "Kontaktzeit"=2 Stunden, teilweise alles inklusive=11 Stunden)
  • kann an manchen Unis angerechnet werden (ECTS)
  • keine große Auswahl (es gibt zu wenig Freiwillige für Tutorenstellen)
  • sollten sowohl über Fach- und Veranstaltungs-spezifische, als auch über didaktische als auch über menschliche Fähigkeiten verfügen

Hilfestellungen

  • den Studierenden sollte frühzeitg im Studium klargemacht werden, welche später im Studium benötigten/geforderten Fähigkeiten sie sich (selbstständig) erarbeiten sollten (z.B. Ausgabe einer Liste an die Ersties)
  • optionale Kurse in der vorlesungsfreien Zeit für diejenigen, die nicht klar kommen
    • sinnvoller vor Beginn des "Nachholsemesters"
  • optionale Kurse in Vorlesungszeit: wäre direkt aktuell, wenn man merkt, dass man nicht klar kommt
    • aber Problem des Zeitaufwandes; es gibt ja für den Pflichtstudienplan schon genug zu tun
  • nicht dieselben Kurse für Wiederholer wie für Erstis!
  • Problem der Finanzierung
    • evtl. Finanzierung durch die Industrie? Das wird von Vielen sehr skeptisch gesehen
  • Mentoring: konkretes Eingehen auf spezifische Probleme
    • einzelne Hilfestellungen können gegeben werden, z.B. Verweise auf gute Tutorials
    • Mentor kann allerdings nicht persönlich Nachhilfe geben (keine Kapazität)
  • Meta-Workshops/-Seminare: zum Abbau von Prüfungsstress, lernen des Lernens, etc.
    • eher allgemein, wenn man ein Problem anerkennt

sich ergebene/ noch zu diskutierende Fragestellungen

(*Wink mit dem Leuchtturm* könnten ja mal auf einer zukünftigen KIF in einem AK aufgegriffen werden)

  • Wie kann man das Programmieren motivieren?
  • Wie motiviert man Teamarbeit bei Gruppenprojekten? bzw. Wie kann man dem Problem entgegenwirken, dass bei Gruppenprojekten einige nicht mitarbeiten und die Arbeit an Einzelnen "hängenbleibt"?
  • Gibt es sinnvolle Werkzeuge für den Informationsaustausch bei Gruppenarbeit, wenn die Gruppe gerade nicht an einem Ort versammelt ist?
  • Ist sichergestellt, dass Räume für Gruppenarbeit zur Verfügung stehen? Wie sollten diese Räume gestaltet bzw. ausgestattet sein?
  • Gibt es im Studium weitere Inhalte, für die man mal darüber nachdenken sollte, wie sie gelehrt werden können/sollten? Wie z.B. lehrt man Mathematik im Informatikstudium?