KIF385:Wie lernt man das Programmieren im Informatikerstudium: Unterschied zwischen den Versionen
Aus KIF
T (Diskussion | Beiträge) (Änderung 19011 von 94.23.1.28 (Diskussion) rückgängig gemacht.) |
|||
(10 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 16: | Zeile 16: | ||
=Voraussetzungen= | =Voraussetzungen= | ||
Kontroverse Ansichten gibt es darüber, ob man Programmieren einfach voraussetzen | 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. | *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 | *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 | *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''?= | =Wie kann man Programmieren ''lehren''?= | ||
*Paradigmen und Konzepte wichtiger als konkrete Sprachen | *Paradigmen und Konzepte wichtiger als konkrete Sprachen | ||
*Lehre wird aber über konkrete Programmiersprache | *Lehre wird aber über konkrete Programmiersprache gemacht | ||
*Zu wenig und zu seltene Beschäftigung mit Programmieren (nur eine Übung die Woche) | *Zu wenig und zu seltene Beschäftigung mit Programmieren (nur eine Übung die Woche) | ||
**Zu kleine Stückelung | **Zu kleine Stückelung | ||
**Zu wenig als "Handwerkszeug" wahrgenommen, das man allgemein und häufiger mal verwenden kann | **Zu wenig als "Handwerkszeug" wahrgenommen, das man allgemein und häufiger mal verwenden kann | ||
*Praktika können helfen, | *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 | *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! | *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 | *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 | **man kann sich Sachen abgucken, man kann das Programm nachvollziehen und lernt das automatisch | ||
==Gruppenarbeit bei der Abgabe von Übungen?== | ==Gruppenarbeit bei der Abgabe von Übungen?== | ||
*muss | *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 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? | *zu viel Glückssache, gerade im ersten Semester: wer arbeitet mit wem zusammen, wenn sich keiner kennt? | ||
Zeile 58: | Zeile 58: | ||
*wird sehr veschieden gut bezahlt (teilweise nur "Kontaktzeit"=2 Stunden, teilweise alles inklusive=11 Stunden) | *wird sehr veschieden gut bezahlt (teilweise nur "Kontaktzeit"=2 Stunden, teilweise alles inklusive=11 Stunden) | ||
*kann an manchen Unis angerechnet werden (ECTS) | *kann an manchen Unis angerechnet werden (ECTS) | ||
*keine große Auswahl | *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= | =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 | *optionale Kurse in der vorlesungsfreien Zeit für diejenigen, die nicht klar kommen | ||
**sinnvoller vor Beginn des "Nachholsemesters" | **sinnvoller vor Beginn des "Nachholsemesters" | ||
*optionale Kurse in Vorlesungszeit: wäre direkt aktuell wenn man merkt, dass man nicht klar kommt | *optionale Kurse in Vorlesungszeit: wäre direkt aktuell, wenn man merkt, dass man nicht klar kommt | ||
**aber Problem des Zeitaufwandes; es gibt ja genug zu tun | **aber Problem des Zeitaufwandes; es gibt ja für den Pflichtstudienplan schon genug zu tun | ||
*nicht dieselben Kurse wie für Erstis! | *nicht dieselben Kurse für Wiederholer wie für Erstis! | ||
*Problem der Finanzierung | *Problem der Finanzierung | ||
**evtl. Finanzierung durch die Industrie? Das wird von Vielen sehr skeptisch gesehen | **evtl. Finanzierung durch die Industrie? Das wird von Vielen sehr skeptisch gesehen | ||
Zeile 73: | Zeile 75: | ||
*Meta-Workshops/-Seminare: zum Abbau von Prüfungsstress, lernen des Lernens, etc. | *Meta-Workshops/-Seminare: zum Abbau von Prüfungsstress, lernen des Lernens, etc. | ||
**eher allgemein, wenn man ein Problem anerkennt | **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? | |||
<noinclude>{{Kategorie_AK}}</noinclude> | <noinclude>{{Kategorie_AK}}</noinclude> |
Aktuelle Version vom 17. Juni 2012, 13:52 Uhr
Problematik[Bearbeiten]
- 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[Bearbeiten]
- 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[Bearbeiten]
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?[Bearbeiten]
- 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?[Bearbeiten]
- 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
Softwareprojekt - gut oder schlecht?[Bearbeiten]
- 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[Bearbeiten]
- 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[Bearbeiten]
- 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[Bearbeiten]
(*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?