KIF385:Wie lernt man das Programmieren im Informatikerstudium: Unterschied zwischen den Versionen
Aus KIF
Marlin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Marlin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 32: | Zeile 32: | ||
*Möglicherweise gute Idee: Programmieraufgaben, wo man ein kurzes (< 500 Zeilen) Programm bekommt, einen Teil ergänzen muss, dafür anderen Code lesen muss | *Möglicherweise gute Idee: Programmieraufgaben, wo man ein kurzes (< 500 Zeilen) Programm bekommt, einen Teil ergänzen muss, dafür anderen Code lesen muss | ||
**man kann sich Sachen abgucken, man kann das Programm nachvollziehen und lernt das automatisch | **man kann sich Sachen abgucken, man kann das Programm nachvollziehen und lernt das automatisch | ||
==Gruppenarbeit bei der Abgabe von Übungen?== | |||
*muss teilweise, weil sonst zu viel Arbeit für nur eine Person | |||
*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 | |||
=Softwareprojekt - gut oder schlecht?= | =Softwareprojekt - gut oder schlecht?= | ||
Zeile 41: | Zeile 54: | ||
**sprechen über "was ist guter Code? Wie programmiert man ''gut''? | **sprechen über "was ist guter Code? Wie programmiert man ''gut''? | ||
**erst Programmieren lernen, dann Gruppenarbeit wo es ne Aufteilung gibt | **erst Programmieren lernen, dann Gruppenarbeit wo es ne Aufteilung gibt | ||
=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 |
Version vom 13. November 2010, 13:33 Uhr
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, wird 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 kann
- 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
- Es ist besser, die Konzepte hinter Programmiersprachen zu lernen, allgemein Programmieren zu können - anstatt nur eine Sprache konkret zu können und sich nicht weitere gut aneignen zu können
Wie kann man Programmieren lehren?
- Paradigmen und Konzepte wichtiger als konkrete Sprachen
- Lehre wird aber über konkrete Programmiersprache macht
- 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, Programmieren 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 homogene von 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
- man kann sich Sachen abgucken, man kann das Programm nachvollziehen und lernt das automatisch
Gruppenarbeit bei der Abgabe von Übungen?
- muss teilweise, weil sonst zu viel Arbeit für nur eine Person
- 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
Softwareprojekt - gut oder schlecht?
- Muss nicht in Gruppenarbeit sein, weil es da Zufall ist, ob es gut funktioniert (je nach Teammitgliedern)
- Kann sehr demotivierend sein, wenn man erst hinterher lernt, wie es "in echt" laufen sollte
- Gruppenarbeit muss aber auf jeden Fall im Studium vorkommen und funktionieren - das gehört später zum Programmieren dazu!
- Trennung zwischen Programmieren und Softwareentwicklung
- beides gleichzeitig lernen geht nicht
- sprechen über "was ist guter Code? Wie programmiert man gut?
- erst Programmieren lernen, dann Gruppenarbeit wo es ne Aufteilung gibt
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