KIF460:Wie lernt man Programmieren (sinnvoll, effizient) ? (Austausch, Brainstorming): Unterschied zwischen den Versionen

Aus KIF
(Die Seite wurde neu angelegt: „# Programmieren lernen ## Beispiele * TU Darmstadt: * Programmiervorkurs (1 Woche vor Semester) * reines Programmieren (Java, da in Vorlesungen v…“)
 
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
# Programmieren lernen
== Programmieren lernen ==


## Beispiele
=== Beispiele ===


* TU Darmstadt:
* TU Darmstadt:
    * Programmiervorkurs (1 Woche vor Semester)
** Programmiervorkurs (1 Woche vor Semester)
        * reines Programmieren (Java, da in Vorlesungen verwendet)
*** reines Programmieren (Java, da in Vorlesungen verwendet)
        * Computersysteme in der Uni verwenden
*** Computersysteme in der Uni verwenden
        * ohne Vorkenntnisse
*** ohne Vorkenntnisse
        * Schematisches ist ein Wenig enthalten
*** Schematisches ist ein Wenig enthalten
            * Wird in der Vorlesung ausfürlich genug behandelt
**** Wird in der Vorlesung ausfürlich genug behandelt
    * Java & Racket im 1. Semester und Java weiterhin im 2.
** Java & Racket im 1. Semester und Java weiterhin im 2.
    * bis ins 3. Semester in Uebungen enthalten
** bis ins 3. Semester in Uebungen enthalten
    * 4. Semester Programiersprachen werden  
** 4. Semester Programiersprachen werden  
 
* TU Dortmund:
* TU Dortmund:
    * Programmiervorkurs (1 Monat vor Semester)
** Programmiervorkurs (1 Monat vor Semester)
        * Auch für Studierende mit Vorkenntnissen geeignet
*** Auch für Studierende mit Vorkenntnissen geeignet
        * Es wird auf wenigstem Vorwissen aufgebaut
*** Es wird auf wenigstem Vorwissen aufgebaut
            * schnelles Tempo
**** schnelles Tempo
            * Fortgeschrittene helfen Anderen
**** Fortgeschrittene helfen Anderen
        * Einschraenkung auf basis Befehlssatz, erweiterte Befehle nachbauen
*** Einschraenkung auf basis Befehlssatz, erweiterte Befehle nachbauen
    * Caffeine & Code
** Caffeine & Code
        * gegen Ende des Semesters / Anfang der Semesterferien
*** gegen Ende des Semesters / Anfang der Semesterferien
        * Tutoren von Veranstaltungen bieten privat selbstgestellte Zusatzaufgaben an
*** Tutoren von Veranstaltungen bieten privat selbstgestellte Zusatzaufgaben an
        * in großer Runde
*** in großer Runde
        * quasi private Klausurvorbereitung
*** quasi private Klausurvorbereitung
    * Vorlesungen
** Vorlesungen
    * 1. S: typisch Java einstieg
** 1. S: typisch Java einstieg
    * 2. S: Algorithmik realisieren
** 2. S: Algorithmik realisieren
    * 3. S: Softwaretechnik (UML, ...)
** 3. S: Softwaretechnik (UML, ...)
    * 4. S: Softwarepraktikum (Projektgruppen, Selbststaendig, ...)
** 4. S: Softwarepraktikum (Projektgruppen, Selbststaendig, ...)
    * 5. S+: Wahlpflicht Softwareentwicklungs-Vorlesungen
** 5. S+: Wahlpflicht Softwareentwicklungs-Vorlesungen
    * 30% nur Programmieren, Algorithmik und Datenstrukturen (Java, C, Haskell)
** 30% nur Programmieren, Algorithmik und Datenstrukturen (Java, C, Haskell)
* Kiel:
* Kiel:
    * Aehnlich zu TU Dortmund
** Aehnlich zu TU Dortmund
    * Sozialproblematik wird mit Bonusaufgaben angegangen
** Sozialproblematik wird mit Bonusaufgaben angegangen
    * Programming challenges kurs von Fachschaft ausgehend
** Programming challenges kurs von Fachschaft ausgehend
        * Raetselaufgaben mit grossen Eingaben
*** Raetselaufgaben mit grossen Eingaben
        * Teamarbeit
*** Teamarbeit
        * 1.-5. Fachsemester empfohlen
*** 1.-5. Fachsemester empfohlen
        * zum Spass, nicht pflicht
*** zum Spass, nicht pflicht
    * 1. Semester: OOP (Java + Konzepte)
** 1. Semester: OOP (Java + Konzepte)
    * 2. Semester: Betriebs-/Kommunikationssysteme (ein wenig C)
** 2. Semester: Betriebs-/Kommunikationssysteme (ein wenig C)
    * 2. Semester: (Algorithmen in Java Umsetzen)
** 2. Semester: (Algorithmen in Java Umsetzen)
    * 3. Semester: Java Nebenlaeufigkeit + Generics
** 3. Semester: Java Nebenlaeufigkeit + Generics
    * 3. : Prolog
** 3. : Prolog
    * 4. : Softwaretechnik
** 4. : Softwaretechnik
    * weiter nicht bekannt
** weiter nicht bekannt
* HU Berlin:
* HU Berlin:
    * 1 Modul 1. Semester
** 1 Modul 1. Semester
        * Code wird vorgelesen
*** Code wird vorgelesen
        * Begleitend entsprechende Uebungen
*** Begleitend entsprechende Uebungen
* Tuebingen:
* Tuebingen:
    * 1. S: OOP
** 1. S: OOP
    * 2. S: Prozedurell (Racket)
** 2. S: Prozedurell (Racket)
    * Nichts weiter bis Projektarbeiten
** Nichts weiter bis Projektarbeiten
        * dort *koennen* ca. 1 bis 2 pro 10er gruppe "programmieren"
*** dort *koennen* ca. 1 bis 2 pro 10er gruppe "programmieren"
* Goettingen:
* Goettingen:
    * 1. S: Java
** 1. S: Java
    * 1.5 S: C-Kurs
** 1.5 S: C-Kurs
    * 2. S: Haskell und Assembler
** 2. S: Haskell und Assembler
    * 2. S: Gruppenarbeit Java
** 2. S: Gruppenarbeit Java
* Heidelberg:
* Heidelberg:
    * Vorkurs
** Vorkurs
        * begrenzt viele Plaetze (50)
*** begrenzt viele Plaetze (50)
        * C++
*** C++
        * Skript durcharbeiten mit Hilfe vor Ort
*** Skript durcharbeiten mit Hilfe vor Ort
        * breit gefaecherte Durcharbeitungsquote
*** breit gefaecherte Durcharbeitungsquote
    * 1. S: C++ in 2 Modulen (Vorlesung + Uebung / Kurs mit live-Uebung)
** 1. S: C++ in 2 Modulen (Vorlesung + Uebung / Kurs mit live-Uebung)
    * 2. S: Algorithmen und Datenstrukturen (Python)
** 2. S: Algorithmen und Datenstrukturen (Python)
    * allgemein Veranstaltungen mit C++/Python ein Wenig
** allgemein Veranstaltungen mit C++/Python ein Wenig
* HSK:
* HSK:
    * 1. S: Clicky Bunty (Lego Mindstorms)
** 1. S: Clicky Bunty (Lego Mindstorms)
    * 2. S: Java (langsames tempo)
** 2. S: Java (langsames tempo)
    * Theorie und Praxis laufen Zeitlich sehr auseinander
** Theorie und Praxis laufen Zeitlich sehr auseinander
        * Thematisch auch, Zeitlich ist groesseres Problem
*** Thematisch auch, Zeitlich ist groesseres Problem
        * Mit Prof muss darueber gesprochen werden
*** Mit Prof muss darueber gesprochen werden
            * (Gespräche werden aktuel begonnen)
**** (Gespräche werden aktuel begonnen)
* TU Dresden:
* TU Dresden:
    * 1. S: Lego Mindstorms + Python
** 1. S: Lego Mindstorms + Python
    * C, Python, Java wie bei Anderen
** C, Python, Java wie bei Anderen
    * Diverse Programmierkurse von Fachschaft ausgehend
** Diverse Programmierkurse von Fachschaft ausgehend
        * keine Pflichtveranstaltung, wird jedoch so wahrgenomen
*** keine Pflichtveranstaltung, wird jedoch so wahrgenomen
        * nicht zwangslaeufig fuer Vorlesung benoetigt
*** nicht zwangslaeufig fuer Vorlesung benoetigt
* Emden:
* Emden:
    * 1. S: kein Programmieren
** 1. S: kein Programmieren
    * 2. S: Verzweiflung
** 2. S: Verzweiflung


## Probleme / Loesungen
== Probleme / Loesungen ==


Ausstehende Fragen:
Ausstehende Fragen:
Zeile 96: Zeile 97:
* Best practices / Coding conventions (in welchem Rahmen?)
* Best practices / Coding conventions (in welchem Rahmen?)
* Ziel?
* Ziel?
    * Spass?
** Spass?
    * Vorbereitung Studium?
** Vorbereitung Studium?
    * Freizeit-Motivation?
** Freizeit-Motivation?
* Spannende Beispiele?
* Spannende Beispiele?
    * nicht nur langweiliger Pytagoras
** nicht nur langweiliger Pytagoras


## Meinungen
== Meinungen ==


* Nur Folien statt ausprobieren ist nicht zu empfehlen
* Nur Folien statt ausprobieren ist nicht zu empfehlen
    * => Live-Coding
** => Live-Coding
        * grosse Probleme bei Anderen, da Prof zu schnell und Anfaenger*innen kommen nicht mit ("keine Chance")
*** grosse Probleme bei Anderen, da Prof zu schnell und Anfaenger*innen kommen nicht mit ("keine Chance")
* Abstraktes Prinzip lernen ist schwierig
* Abstraktes Prinzip lernen ist schwierig
    * Algorithmen + Datenstrukturen Modul ist sehr hilfreich
** Algorithmen + Datenstrukturen Modul ist sehr hilfreich
        * Problemstellung
*** Problemstellung
        * Algorithmus vorstellen
*** Algorithmus vorstellen
        * Loesung selbsstaendig
*** Loesung selbsstaendig
            * Problem wird erkannt
**** Problem wird erkannt
            * Algorithmen zusammensetzen erforderlich
**** Algorithmen zusammensetzen erforderlich
            * "Baukasten" von Algorithmen
**** "Baukasten" von Algorithmen
    * Darmstadt Vorkurs
** Darmstadt Vorkurs
        * Anfang: Was ist programmieren Einfuehrung
*** Anfang: Was ist programmieren Einfuehrung
        * Beispiel: Kochrezept
*** Beispiel: Kochrezept
            * Anweisungsschreibweise
**** Anweisungsschreibweise
                * 1. Kartoffeln schneiden
***** 1. Kartoffeln schneiden
                * 2. Kartoffeln anbraten
***** 2. Kartoffeln anbraten
                * 3. ...
***** 3. ...
        * Fuer Schulklassen:
*** Fuer Schulklassen:
            * 2 Personen teams
**** 2 Personen teams
                * Aufgabe: "Druecke den Lichtschalter"
**** Aufgabe: "Druecke den Lichtschalter"
                * 2. Person muss in Teilanweisungen exakt unterteilen
**** 2. Person muss in Teilanweisungen exakt unterteilen
                    * "Hebe den Arm"
***** "Hebe den Arm"
                    * ...
***** ...
    * Meinungsbild "Ist Unterteilung in Einzelanweisungen hilfreich?"
** Meinungsbild "Ist Unterteilung in Einzelanweisungen hilfreich?"
        * Hilft nicht jedem
*** Hilft nicht jedem
            * eher labyrinth algorithmisch loesen (java-kara like)
**** eher labyrinth algorithmisch loesen (java-kara like)
        * Anderen hilft es
*** Anderen hilft es
            * gerade bei niedrigem Wissensstand mit computern
**** gerade bei niedrigem Wissensstand mit computern
        * Neukombination von elementaren Bestandteilen ist essentiell zu Lernen
*** Neukombination von elementaren Bestandteilen ist essentiell zu Lernen
    * Java-Kara als Beispiel
** Java-Kara als Beispiel
        * "Zum Kleeblatt laufen" mit Kochrezeptsystem erklaeren
*** "Zum Kleeblatt laufen" mit Kochrezeptsystem erklaeren
    * 2 geschachtelte Schleifen als Einstiegsaufgabe schon schwierig
** 2 geschachtelte Schleifen als Einstiegsaufgabe schon schwierig
        * klein anfangen "wie gebe ich x aus"
*** klein anfangen "wie gebe ich x aus"
* Praxis / Theorie
* Praxis / Theorie
    * 3 Mal snake implementieren
** 3 Mal snake implementieren
        * mit Array
*** mit Array
        * mit Liste
*** mit Liste
        * mit OOP
*** mit OOP
        * positive Erfahrung
*** positive Erfahrung
            * Es gibt nicht nur einen Weg zur Lösung
**** Es gibt nicht nur einen Weg zur Lösung
            * Bausteine kennengelernt
**** Bausteine kennengelernt
                * koennen verschieden zusammengefuegt die gleiche Aufgabe loesen
***** koennen verschieden zusammengefuegt die gleiche Aufgabe loesen


* Beispiel Kiel Haskell Vorlesung
* Beispiel Kiel Haskell Vorlesung
    * grossteil Sprachelemente kennenlernen
** grossteil Sprachelemente kennenlernen
    * es werden nur Methoden benutzen, welche auch selber implementiert werden können
** es werden nur Methoden benutzen, welche auch selber implementiert werden können
    * aufteilung auf
** aufteilung auf
        * Vorlesung
*** Vorlesung
        * Uebung
*** Uebung
        * Testat
*** Testat
* Meinung: Von Hand auf Papier programmieren ist nicht effektiv zum Lernen
* Meinung: Von Hand auf Papier programmieren ist nicht effektiv zum Lernen
    * Grund: Leute, die nur am Rechner programmieren greifen auf IDE funktionen zurueck
** Grund: Leute, die nur am Rechner programmieren greifen auf IDE funktionen zurueck
        * => fallen in (nicht E-) Klausur durch
*** => fallen in (nicht E-) Klausur durch
    * Goettingen
** Goettingen
        * in bis zu 5 Kohorten, genuegend Computer vorhanden fuer E-Klausur
*** in bis zu 5 Kohorten, genuegend Computer vorhanden fuer E-Klausur
        * paar Ersties installieren IDE trotz Abraten
*** paar Ersties installieren IDE trotz Abraten
        * Vorteil von Start am PC: Als Anfaenger*innen schnell Erfolgserlebnisse
*** Vorteil von Start am PC: Als Anfaenger*innen schnell Erfolgserlebnisse
* Meinung: Mit IDE beschaeftigen ist Sinnvoll
* Meinung: Mit IDE beschaeftigen ist Sinnvoll
    * hirzu giebt es gemischte meinungen.
** hirzu giebt es gemischte meinungen.


## Welche Sprache?
=== Welche Sprache? ===


* Wurde in vielen AKs bereits ausgiebig besprochen
* Wurde in vielen AKs bereits ausgiebig besprochen
Zeile 171: Zeile 172:




## Coding conventions
=== Coding conventions ===


* Meinung:
* Meinung:
    * Anfangen mit schlecht Formatierten und Kommentierten Code
** Anfangen mit schlecht Formatierten und Kommentierten Code
    * Spaeter verbessern
** Spaeter verbessern
* Gegenmeinung:
* Gegenmeinung:
    * Am Anfang immerhin erwahnen, nicht durchzwingen, aber erwaehnen
** Am Anfang immerhin erwahnen, nicht durchzwingen, aber erwaehnen
        * "So macht man einen Kommentar"
*** "So macht man einen Kommentar"
        * Kommentare sind Sinnvoll
*** Kommentare sind Sinnvoll
        * Variablennamen sind wichtig
*** Variablennamen sind wichtig
        * ...
*** ...
* Aufgabenstellung enthalten "Alle funktionen muessen kommentiert werden"
* Aufgabenstellung enthalten "Alle funktionen muessen kommentiert werden"
    * Bei nicht dokumentierten funktionen gibt es 0 Punkte
** Bei nicht dokumentierten funktionen gibt es 0 Punkte
    * Es wird als Sinnvoller erachtet, conventions von vornhinein zu lernen
** Es wird als Sinnvoller erachtet, conventions von vornhinein zu lernen
* Nutzt guidelines nach eigener Auswahl, aber einheitlich
* Nutzt guidelines nach eigener Auswahl, aber einheitlich
* Vorlesung beinhaltet haeufig code quality Bemerkungen
* Vorlesung beinhaltet haeufig code quality Bemerkungen
    * ab 2. Vorlesung wird code quality in Uebungspunkte einbezogen
** ab 2. Vorlesung wird code quality in Uebungspunkte einbezogen
* Meinung: Selbsterkenntnis schwierig fuer Korrektur
* Meinung: Selbsterkenntnis schwierig fuer Korrektur
    * 1. S Helfen ist schwieriger bei geringer code quality
** 1. S Helfen ist schwieriger bei geringer code quality
        * Unnoetige Arbeit
*** Unnoetige Arbeit
        * => Am Anfang richtige Grundzuege beibringen ist Sinnvoller
*** => Am Anfang richtige Grundzuege beibringen ist Sinnvoller
* Viel manuelle Auswertung bei anwesenden Hochschulen, bei einigen automatisch, auch mischungen existieren
* Viel manuelle Auswertung bei anwesenden Hochschulen, bei einigen automatisch, auch mischungen existieren
    * Wenn Tutor bei Korrektur nicht durchsteigt gibt es 0 Punkte
** Wenn Tutor bei Korrektur nicht durchsteigt gibt es 0 Punkte
    * Testate
** Testate
        * => Tutor muss nicht selbst den code verstehen
*** => Tutor muss nicht selbst den code verstehen
        * Kandidat*inn muss Code selbst erklären
*** Kandidat*inn muss Code selbst erklären
        * Hat Kandidat*inn seinen Code "selbst geschrieben"/verstanden
*** Hat Kandidat*inn seinen Code "selbst geschrieben"/verstanden
* Prof: "Bestanden."
* Prof: "Bestanden."
    * ohne feedback, ohne nachfragen, einfach draufschauen
** ohne feedback, ohne nachfragen, einfach draufschauen






## Unit Tests automatisch
== Unit Tests automatisch ==


* Fall A: sehr gut, da instant feedback und gute Rueckmeldung
* Fall A: sehr gut, da instant feedback und gute Rueckmeldung
* Fall B: schlecht, falls nur einmalige Abgabe und intransparente tests
* Fall B: schlecht, falls nur einmalige Abgabe und intransparente tests
* Fall C: 3 Versuche
* Fall C: 3 Versuche
    * mit Rueckmeldung
** mit Rueckmeldung
    * bei 3 Fehlfaellen manuelle ueberpruefung mit Teilpunkten
** bei 3 Fehlfaellen manuelle ueberpruefung mit Teilpunkten
    * Zeitbeschraenkt
** Zeitbeschraenkt
    * Vorgehende uebungen unbegrenzt
** Vorgehende uebungen unbegrenzt
* Fall D: Oeffentliche und private tests
* Fall D: Oeffentliche und private tests


* Fall C wird allgemein nicht gut angesehen
* Fall C wird allgemein nicht gut angesehen
    * zu hoher Druck fuer Studierende
** zu hoher Druck fuer Studierende
    * mehrfaches Hochladen besser, als automatische Sperre
** mehrfaches Hochladen besser, als automatische Sperre
    * Schafft aber wohl eine geringere Durchfallquote (da als Klausurzulasung nötig)
** Schafft aber wohl eine geringere Durchfallquote (da als Klausurzulasung nötig)
* Compileprobleme bei Abgabe sind problematisch
* Compileprobleme bei Abgabe sind problematisch
    * imports
** imports
    * Systemabhaengige Fehler
** Systemabhaengige Fehler
    * ab 2. Semester 0 Punkte bei fehlschlagender Kompilation
** ab 2. Semester 0 Punkte bei fehlschlagender Kompilation


## Fehlermeldungen - Wie gehte ich damit um?
== Fehlermeldungen - Wie gehte ich damit um? ==


* 1. Live-coding im Vorkurs:
* 1. Live-coding im Vorkurs:
    * befehl absichtlich Falsch schreiben
** befehl absichtlich Falsch schreiben
    * "was denkt ihr passiert?"
** "was denkt ihr passiert?"
    * ausfuehren => Fehlermeldung
** ausfuehren => Fehlermeldung
    * Aufbau von Fehlermeldung erklaeren
** Aufbau von Fehlermeldung erklaeren
    * Exkurs Fehlermeldungstypen
** Exkurs Fehlermeldungstypen
        * Ausfuehren macht nichts kaputt, keine Angst!
*** Ausfuehren macht nichts kaputt, keine Angst!
* Testen von Abgaben, bei Fehlern darauf eingehen
* Testen von Abgaben, bei Fehlern darauf eingehen
    * wie gibt man Rueckmeldung?
** wie gibt man Rueckmeldung?
        * strittig
*** strittig
* Musterloesungen Sinnvoll?
* Musterloesungen Sinnvoll?
* An HS mit IDE (Eclipse) wird funktion von IDE verwendet, um Fehler zu beheben
* An HS mit IDE (Eclipse) wird funktion von IDE verwendet, um Fehler zu beheben
* 1. + 2. Vorlesung: Helpdesk
* 1. + 2. Vorlesung: Helpdesk
    * Tutor fuer Problemfragen bzgl. Fehler (Stacktraces, ...)
** Tutor fuer Problemfragen bzgl. Fehler (Stacktraces, ...)
    * Tutoren bieten bereitwillig Hilfe an (Sprechstunden)
** Tutoren bieten bereitwillig Hilfe an (Sprechstunden)
* Programmierkurse
* Programmierkurse
    * Probleme mit Fehlermeldungen wegen anderen Begrifflichkeiten in Vorlesung
** Probleme mit Fehlermeldungen wegen anderen Begrifflichkeiten in Vorlesung
    * Fachbegriffe unterscheiden sich von Professor*in zu Professor*in
** Fachbegriffe unterscheiden sich von Professor*in zu Professor*in
* Viele Begriffe aus der Informatik sind nicht allen bekannt
* Viele Begriffe aus der Informatik sind nicht allen bekannt
    * aufpassen
** aufpassen
    * ermutigen zu Nachfragen
** ermutigen zu Nachfragen
* Prof hat Schwierigkeiten, Programmierkompetenzen einzuschaetzen
* Prof hat Schwierigkeiten, Programmierkompetenzen einzuschaetzen
    * zu schnell ueber LinkedList, ...
** zu schnell ueber LinkedList, ...
    * auch wenn leicht erscheint kann Aufgabe sehr schwierig sein
** auch wenn leicht erscheint kann Aufgabe sehr schwierig sein


## Fehlgeleitete Professoren
== Fehlgeleitete Professoren==


* Fall A: 1., 2. S (Jena):
* Fall A: 1., 2. S (Jena):
    * 1. S: C
** 1. S: C
    * 2. S: Java
** 2. S: Java
    * Vorlesung mit Folien
** Vorlesung mit Folien
        * formale Anschauung, sehr abstrakt
*** formale Anschauung, sehr abstrakt
        * keine Beispiele
*** keine Beispiele
        * kein live coding
*** kein live coding
    * Pro Woche mind. 4 Uebungsserien
** Pro Woche mind. 4 Uebungsserien
        * Pflichtabgaben
*** Pflichtabgaben
        * Pruefungszulassung durch Uebungen
*** Pruefungszulassung durch Uebungen
        * ~8% Klausur pro Woche durch Uebungspunkte
*** ~8% Klausur pro Woche durch Uebungspunkte
    * Problematisch fuer Programmieranfaenger*innen, da schon erste Uebung zur Klausur gehoert
** Problematisch fuer Programmieranfaenger*innen, da schon erste Uebung zur Klausur gehoert
        * ca. 10h Aufwand pro Uebungsserie fuer Anfaenger*innen
*** ca. 10h Aufwand pro Uebungsserie fuer Anfaenger*innen
        * Testate und Kurzklausren zusaetzlich
*** Testate und Kurzklausren zusaetzlich
        * zu wenig Zeit am Tag
*** zu wenig Zeit am Tag
    * mit Prof geredet
** mit Prof geredet
        * Problem besteht seit Jahren
*** Problem besteht seit Jahren
        * Studierende merken, dass Vorlesung ihnen nichts bringt
*** Studierende merken, dass Vorlesung ihnen nichts bringt
            * gehen ggf. nichtmehr zu Vorlesung und lernen sebststaendig
**** gehen ggf. nichtmehr zu Vorlesung und lernen sebststaendig
        * Professor merkt, dass Vorlesung sich leert
*** Professor merkt, dass Vorlesung sich leert
            * interpretiert als Erfolg seiner im Vorraus hochgeladenen Folien
*** interpretiert als Erfolg seiner im Vorraus hochgeladenen Folien
        * Meinung: Es sollte immer einen Mehrwert haben in der Vorlesung zu sein
*** Meinung: Es sollte immer einen Mehrwert haben in der Vorlesung zu sein
* Fall B: Professor*in bringt getrennt Aufgaben fuer Studierende mit Vorkenntnissen
* Fall B: Professor*in bringt getrennt Aufgaben fuer Studierende mit Vorkenntnissen
    * gaben Zusatzpunkte fuer Klausur
** gaben Zusatzpunkte fuer Klausur
    * dadurch bevorzugung von Studierenden mit Vorkentnissen
** dadurch bevorzugung von Studierenden mit Vorkentnissen
    * direkt geblockt vom Dekan
** direkt geblockt vom Dekan
* Fall C: Mindstorm
* Fall C: Mindstorm
    * Vorlesung: Hier habt ihr das Programm, hier die Blaetter, macht mal.
** Vorlesung: Hier habt ihr das Programm, hier die Blaetter, macht mal.
    * Profesor*in musste mild korrigieren, um das Problem zu umgehen
** Profesor*in musste mild korrigieren, um das Problem zu umgehen
* Fall D: Darmstadt:
* Fall D: Darmstadt:
    * neuer Professor hat im "rechtlichen Rahmen" ein programm aufgebaut
** neuer Professor hat im "rechtlichen Rahmen" ein programm aufgebaut
        * hat Fachschaft und Studierende abgeblockt "nur weil ich es anders mache"
*** hat Fachschaft und Studierende abgeblockt "nur weil ich es anders mache"
        * Gespräche haben geholfen
*** Gespräche haben geholfen


### Herangehensweisen an Professor*innen
==== Herangehensweisen an Professor*innen ====


* Fall C
* Fall C
    * Email mit details und klagen
** Email mit details und klagen
    * Prof hat sich schliesslich entschuldigt
** Prof hat sich schliesslich entschuldigt
* Als Fachschaft an Prof herangehen
* Als Fachschaft an Prof herangehen
    * nicht als Studierende, sondern als Repraesentant
** nicht als Studierende, sondern als Repraesentant
        * Vertreter*innen statt Individuen
*** Vertreter*innen statt Individuen
        * => braucht Fachschaft, die sich fuer Studierende einsetzt und "nicht nur am Saufen interessiert ist"
*** => braucht Fachschaft, die sich fuer Studierende einsetzt und "nicht nur am Saufen interessiert ist"
* Fall B
* Fall B
    * Klausur musste stark runtergesetzt werden
** Klausur musste stark runtergesetzt werden
    * Es haette proaktiver gehandelt werden muessen
** Es haette proaktiver gehandelt werden muessen
* Fall D
* Fall D
    * ein Student ist nun Hilfskraft und schreibt das Skript
** ein Student ist nun Hilfskraft und schreibt das Skript
* Mehrfach aufgetreten, dass Studierende selbst Skript schreiben und in Vorlesungen mitwirken
* Mehrfach aufgetreten, dass Studierende selbst Skript schreiben und in Vorlesungen mitwirken
* Abblocken von Professor*innen ist von Fall zu Fall extrem
* Abblocken von Professor*innen ist von Fall zu Fall extrem
    * Auch andere Organisationen (Hilfsgruppen, etc.) moeglich von Fachschaft ausgehend
** Auch andere Organisationen (Hilfsgruppen, etc.) moeglich von Fachschaft ausgehend
    * Fallstudie: Angebot zum Bessern
** Fallstudie: Angebot zum Bessern
        * Protokolliertes Gespraech
*** Protokolliertes Gespraech
        * Regelmaessige Ruecksprachen
*** Regelmaessige Ruecksprachen
        * => Auf Dauer hat sich die Situation gebessert
*** => Auf Dauer hat sich die Situation gebessert
        * Evaluation der Vorlesung mit Ampel system zur Verstaendlichkeit
*** Evaluation der Vorlesung mit Ampel system zur Verstaendlichkeit
            * explizit am Ende eines Kapitels
**** explizit am Ende eines Kapitels
            * Ampel gruen => melden
**** Ampel gruen => melden
            * Ampel gelb => melden
**** Ampel gelb => melden
            * Ampel rot => melden
**** Ampel rot => melden
            * Alternativ mit Link (anonymisiert)
**** Alternativ mit Link (anonymisiert)
                * ggf. geringere Motivation?
***** ggf. geringere Motivation?
                    * mueste getestet werden
****** muesste getestet werden


## Ziele der Programmierkurse
=== Ziele der Programmierkurse ===


* Viele Professor*innen
* Viele Professor*innen
    * moeglichst schnell, moeglichst viel halbwegs laufender code
** moeglichst schnell, moeglichst viel halbwegs laufender code
    * z.B. 10 minuten Sprint fuer Aufgaben ("3-Zeiler", aber enormer Stress mit Aufgabe lesen)
** z.B. 10 minuten Sprint fuer Aufgaben ("3-Zeiler", aber enormer Stress mit Aufgabe lesen)
* einfachen Klartext in Algorithmen uebersetzen -> nicht immer Sinnvoll
* einfachen Klartext in Algorithmen uebersetzen -> nicht immer Sinnvoll
    * existierende Loesung implementieren wird selten in Praxis verlangt
** existierende Loesung implementieren wird selten in Praxis verlangt
* Softwareengineering
* Softwareengineering
    * Klartext Aufgaben (bis zu 2xA4)
** Klartext Aufgaben (bis zu 2xA4)
        * Pseudo-real
*** Pseudo-real
        * Sinnvoller, als "pseudo-code-text"
*** Sinnvoller, als "pseudo-code-text"
* Motivation zu Programmieren
* Motivation zu Programmieren
    * Wofuer ist es gut?
** Wofuer ist es gut?
    * kann Spass machen!
** kann Spass machen!
    * Warum will ich programmieren koennen?
** Warum will ich programmieren koennen?
    * Keine schwierigen Probleme am Anfang
** Keine schwierigen Probleme am Anfang
        * besser kleine Probleme für schnelleres Erfolgserlebnis
*** besser kleine Probleme für schnelleres Erfolgserlebnis
* Anregen das eigene Probleme oder Ideen in Programmen umgesetzt werden können
* Anregen das eigene Probleme oder Ideen in Programmen umgesetzt werden können
    * Neue Sachen lernen durch eigenen Ansporn
** Neue Sachen lernen durch eigenen Ansporn
* Wie kann ich mir selbst Informationen beschaffen?
* Wie kann ich mir selbst Informationen beschaffen?
    * Negativbeispiel: Hier ist die C Referenz, lern das
** Negativbeispiel: Hier ist die C Referenz, lern das
    * Bekannte Websites
** Bekannte Websites
        * stack overflow
*** stack overflow
            * Anekdote: Es gibt Programm das automatisch bei Fehlern stack overflow befragt und ersten fix testet
**** Anekdote: Es gibt Programm das automatisch bei Fehlern stack overflow befragt und ersten fix testet
    * Selber erforschen von Websites ist wichtig
** Selber erforschen von Websites ist wichtig


### Erfolgreiche Freizeitanregungen?
==== Erfolgreiche Freizeitanregungen? ====


* Bsp: Links zu online-Raetseln fuer Freizeit
* Bsp: Links zu online-Raetseln fuer Freizeit
    * Vorschlag für Professor*innen: Pflichtabgaben erweitern
** Vorschlag für Professor*innen: Pflichtabgaben erweitern
        * Normaler Teil
*** Normaler Teil
        * + Zusatzfunktionen ohne Vorgabe koennen implementiert werden
*** + Zusatzfunktionen ohne Vorgabe koennen implementiert werden
            * "Bauen Sie noch 2 Zusatzfeatures fuer 2 Bonuspunkte"
**** "Bauen Sie noch 2 Zusatzfeatures fuer 2 Bonuspunkte"
            * Zusatzfeatures koennen selbst ausgedacht werden
**** Zusatzfeatures koennen selbst ausgedacht werden
            * Kreativitaet wird gefoerder
**** Kreativitaet wird gefoerder
        * Im Bereich Spielentwicklung
*** Im Bereich Spielentwicklung
            * Bsp. Worms
**** Bsp. Worms
                * Mögliche Zusatzimplementierungen:
***** Mögliche Zusatzimplementierungen:
                    * andere Projectiele
****** andere Projectiele
                    * Huepfen
****** Huepfen
                    * ...
****** ...
        * Erfolgsmodell mit sehr kreativen zusatzfeatures
*** Erfolgsmodell mit sehr kreativen zusatzfeatures
* Code wars AK
* Code wars AK
    * Spass, foerdert motivation
** Spass, foerdert motivation
* Professor*innen live-coding
* Professor*innen live-coding
    * nicht einfach, da verschiedene Lerngeschwindigkeiten
** nicht einfach, da verschiedene Lerngeschwindigkeiten
    * nach und nach an ein Problem herangehen ist vorteilhaft
** nach und nach an ein Problem herangehen ist vorteilhaft
* Lego Mindstorm als Motivation gemeint
* Lego Mindstorm als Motivation gemeint
    * hier gescheitert, haette ggf. funktionieren koennen
** hier gescheitert, haette ggf. funktionieren koennen
* ACM Library fuer grafische objekte
* ACM Library fuer grafische objekte
    * Graphisches Resultat sichtbar
** Graphisches Resultat sichtbar
    * sehr einfache Programme waren am "coolsten"
** sehr einfache Programme waren am "coolsten"
    * grafische Herangehensweise fuehrt zu kreativem Umgang
** grafische Herangehensweise fuehrt zu kreativem Umgang
        * ueber Aufgabe hinaus
*** ueber Aufgabe hinaus
        * library weiter erforschen
*** library weiter erforschen
        * Motivationsfoerdernd
** Motivationsfoerdernd
        * kann aber auch einschuechternd wirken (depends on library)
** kann aber auch einschuechternd wirken (depends on library)




## Cheat sheet fuer Programmierkurse?
=== Cheat sheet fuer Programmierkurse? ===


* TU Darmstadt ist dabei, so etwas zu entwickeln
* TU Darmstadt ist dabei, so etwas zu entwickeln
    * Link folgt [hier]
** Link folgt [hier]
    * (Wenn ich das bis zur naechsten KIF nicht gemacht haben sollte erinnert mich dran, Viele Grueße Kevin)
** (Wenn ich das bis zur naechsten KIF nicht gemacht haben sollte erinnert mich dran, Viele Grueße Kevin)

Aktuelle Version vom 21. September 2018, 12:03 Uhr

Programmieren lernen[Bearbeiten]

Beispiele[Bearbeiten]

  • TU Darmstadt:
    • Programmiervorkurs (1 Woche vor Semester)
      • reines Programmieren (Java, da in Vorlesungen verwendet)
      • Computersysteme in der Uni verwenden
      • ohne Vorkenntnisse
      • Schematisches ist ein Wenig enthalten
        • Wird in der Vorlesung ausfürlich genug behandelt
    • Java & Racket im 1. Semester und Java weiterhin im 2.
    • bis ins 3. Semester in Uebungen enthalten
    • 4. Semester Programiersprachen werden
  • TU Dortmund:
    • Programmiervorkurs (1 Monat vor Semester)
      • Auch für Studierende mit Vorkenntnissen geeignet
      • Es wird auf wenigstem Vorwissen aufgebaut
        • schnelles Tempo
        • Fortgeschrittene helfen Anderen
      • Einschraenkung auf basis Befehlssatz, erweiterte Befehle nachbauen
    • Caffeine & Code
      • gegen Ende des Semesters / Anfang der Semesterferien
      • Tutoren von Veranstaltungen bieten privat selbstgestellte Zusatzaufgaben an
      • in großer Runde
      • quasi private Klausurvorbereitung
    • Vorlesungen
    • 1. S: typisch Java einstieg
    • 2. S: Algorithmik realisieren
    • 3. S: Softwaretechnik (UML, ...)
    • 4. S: Softwarepraktikum (Projektgruppen, Selbststaendig, ...)
    • 5. S+: Wahlpflicht Softwareentwicklungs-Vorlesungen
    • 30% nur Programmieren, Algorithmik und Datenstrukturen (Java, C, Haskell)
  • Kiel:
    • Aehnlich zu TU Dortmund
    • Sozialproblematik wird mit Bonusaufgaben angegangen
    • Programming challenges kurs von Fachschaft ausgehend
      • Raetselaufgaben mit grossen Eingaben
      • Teamarbeit
      • 1.-5. Fachsemester empfohlen
      • zum Spass, nicht pflicht
    • 1. Semester: OOP (Java + Konzepte)
    • 2. Semester: Betriebs-/Kommunikationssysteme (ein wenig C)
    • 2. Semester: (Algorithmen in Java Umsetzen)
    • 3. Semester: Java Nebenlaeufigkeit + Generics
    • 3. : Prolog
    • 4. : Softwaretechnik
    • weiter nicht bekannt
  • HU Berlin:
    • 1 Modul 1. Semester
      • Code wird vorgelesen
      • Begleitend entsprechende Uebungen
  • Tuebingen:
    • 1. S: OOP
    • 2. S: Prozedurell (Racket)
    • Nichts weiter bis Projektarbeiten
      • dort *koennen* ca. 1 bis 2 pro 10er gruppe "programmieren"
  • Goettingen:
    • 1. S: Java
    • 1.5 S: C-Kurs
    • 2. S: Haskell und Assembler
    • 2. S: Gruppenarbeit Java
  • Heidelberg:
    • Vorkurs
      • begrenzt viele Plaetze (50)
      • C++
      • Skript durcharbeiten mit Hilfe vor Ort
      • breit gefaecherte Durcharbeitungsquote
    • 1. S: C++ in 2 Modulen (Vorlesung + Uebung / Kurs mit live-Uebung)
    • 2. S: Algorithmen und Datenstrukturen (Python)
    • allgemein Veranstaltungen mit C++/Python ein Wenig
  • HSK:
    • 1. S: Clicky Bunty (Lego Mindstorms)
    • 2. S: Java (langsames tempo)
    • Theorie und Praxis laufen Zeitlich sehr auseinander
      • Thematisch auch, Zeitlich ist groesseres Problem
      • Mit Prof muss darueber gesprochen werden
        • (Gespräche werden aktuel begonnen)
  • TU Dresden:
    • 1. S: Lego Mindstorms + Python
    • C, Python, Java wie bei Anderen
    • Diverse Programmierkurse von Fachschaft ausgehend
      • keine Pflichtveranstaltung, wird jedoch so wahrgenomen
      • nicht zwangslaeufig fuer Vorlesung benoetigt
  • Emden:
    • 1. S: kein Programmieren
    • 2. S: Verzweiflung

Probleme / Loesungen[Bearbeiten]

Ausstehende Fragen:

  • Wie geht man mit unterschiedlichen Erfahrungen um?
  • Balance Praxis/Theorie?
  • Wie stellt man Aufgaben verstaendlich? (Praxis vs Prinzip)
  • Welche Sprache eignet sich? Wahlkriterien?
  • Best practices / Coding conventions (in welchem Rahmen?)
  • Ziel?
    • Spass?
    • Vorbereitung Studium?
    • Freizeit-Motivation?
  • Spannende Beispiele?
    • nicht nur langweiliger Pytagoras

Meinungen[Bearbeiten]

  • Nur Folien statt ausprobieren ist nicht zu empfehlen
    • => Live-Coding
      • grosse Probleme bei Anderen, da Prof zu schnell und Anfaenger*innen kommen nicht mit ("keine Chance")
  • Abstraktes Prinzip lernen ist schwierig
    • Algorithmen + Datenstrukturen Modul ist sehr hilfreich
      • Problemstellung
      • Algorithmus vorstellen
      • Loesung selbsstaendig
        • Problem wird erkannt
        • Algorithmen zusammensetzen erforderlich
        • "Baukasten" von Algorithmen
    • Darmstadt Vorkurs
      • Anfang: Was ist programmieren Einfuehrung
      • Beispiel: Kochrezept
        • Anweisungsschreibweise
          • 1. Kartoffeln schneiden
          • 2. Kartoffeln anbraten
          • 3. ...
      • Fuer Schulklassen:
        • 2 Personen teams
        • Aufgabe: "Druecke den Lichtschalter"
        • 2. Person muss in Teilanweisungen exakt unterteilen
          • "Hebe den Arm"
          • ...
    • Meinungsbild "Ist Unterteilung in Einzelanweisungen hilfreich?"
      • Hilft nicht jedem
        • eher labyrinth algorithmisch loesen (java-kara like)
      • Anderen hilft es
        • gerade bei niedrigem Wissensstand mit computern
      • Neukombination von elementaren Bestandteilen ist essentiell zu Lernen
    • Java-Kara als Beispiel
      • "Zum Kleeblatt laufen" mit Kochrezeptsystem erklaeren
    • 2 geschachtelte Schleifen als Einstiegsaufgabe schon schwierig
      • klein anfangen "wie gebe ich x aus"
  • Praxis / Theorie
    • 3 Mal snake implementieren
      • mit Array
      • mit Liste
      • mit OOP
      • positive Erfahrung
        • Es gibt nicht nur einen Weg zur Lösung
        • Bausteine kennengelernt
          • koennen verschieden zusammengefuegt die gleiche Aufgabe loesen
  • Beispiel Kiel Haskell Vorlesung
    • grossteil Sprachelemente kennenlernen
    • es werden nur Methoden benutzen, welche auch selber implementiert werden können
    • aufteilung auf
      • Vorlesung
      • Uebung
      • Testat
  • Meinung: Von Hand auf Papier programmieren ist nicht effektiv zum Lernen
    • Grund: Leute, die nur am Rechner programmieren greifen auf IDE funktionen zurueck
      • => fallen in (nicht E-) Klausur durch
    • Goettingen
      • in bis zu 5 Kohorten, genuegend Computer vorhanden fuer E-Klausur
      • paar Ersties installieren IDE trotz Abraten
      • Vorteil von Start am PC: Als Anfaenger*innen schnell Erfolgserlebnisse
  • Meinung: Mit IDE beschaeftigen ist Sinnvoll
    • hirzu giebt es gemischte meinungen.

Welche Sprache?[Bearbeiten]

  • Wurde in vielen AKs bereits ausgiebig besprochen
  • ist sehr abhaengig von Situation vor Ort


Coding conventions[Bearbeiten]

  • Meinung:
    • Anfangen mit schlecht Formatierten und Kommentierten Code
    • Spaeter verbessern
  • Gegenmeinung:
    • Am Anfang immerhin erwahnen, nicht durchzwingen, aber erwaehnen
      • "So macht man einen Kommentar"
      • Kommentare sind Sinnvoll
      • Variablennamen sind wichtig
      • ...
  • Aufgabenstellung enthalten "Alle funktionen muessen kommentiert werden"
    • Bei nicht dokumentierten funktionen gibt es 0 Punkte
    • Es wird als Sinnvoller erachtet, conventions von vornhinein zu lernen
  • Nutzt guidelines nach eigener Auswahl, aber einheitlich
  • Vorlesung beinhaltet haeufig code quality Bemerkungen
    • ab 2. Vorlesung wird code quality in Uebungspunkte einbezogen
  • Meinung: Selbsterkenntnis schwierig fuer Korrektur
    • 1. S Helfen ist schwieriger bei geringer code quality
      • Unnoetige Arbeit
      • => Am Anfang richtige Grundzuege beibringen ist Sinnvoller
  • Viel manuelle Auswertung bei anwesenden Hochschulen, bei einigen automatisch, auch mischungen existieren
    • Wenn Tutor bei Korrektur nicht durchsteigt gibt es 0 Punkte
    • Testate
      • => Tutor muss nicht selbst den code verstehen
      • Kandidat*inn muss Code selbst erklären
      • Hat Kandidat*inn seinen Code "selbst geschrieben"/verstanden
  • Prof: "Bestanden."
    • ohne feedback, ohne nachfragen, einfach draufschauen


Unit Tests automatisch[Bearbeiten]

  • Fall A: sehr gut, da instant feedback und gute Rueckmeldung
  • Fall B: schlecht, falls nur einmalige Abgabe und intransparente tests
  • Fall C: 3 Versuche
    • mit Rueckmeldung
    • bei 3 Fehlfaellen manuelle ueberpruefung mit Teilpunkten
    • Zeitbeschraenkt
    • Vorgehende uebungen unbegrenzt
  • Fall D: Oeffentliche und private tests
  • Fall C wird allgemein nicht gut angesehen
    • zu hoher Druck fuer Studierende
    • mehrfaches Hochladen besser, als automatische Sperre
    • Schafft aber wohl eine geringere Durchfallquote (da als Klausurzulasung nötig)
  • Compileprobleme bei Abgabe sind problematisch
    • imports
    • Systemabhaengige Fehler
    • ab 2. Semester 0 Punkte bei fehlschlagender Kompilation

Fehlermeldungen - Wie gehte ich damit um?[Bearbeiten]

  • 1. Live-coding im Vorkurs:
    • befehl absichtlich Falsch schreiben
    • "was denkt ihr passiert?"
    • ausfuehren => Fehlermeldung
    • Aufbau von Fehlermeldung erklaeren
    • Exkurs Fehlermeldungstypen
      • Ausfuehren macht nichts kaputt, keine Angst!
  • Testen von Abgaben, bei Fehlern darauf eingehen
    • wie gibt man Rueckmeldung?
      • strittig
  • Musterloesungen Sinnvoll?
  • An HS mit IDE (Eclipse) wird funktion von IDE verwendet, um Fehler zu beheben
  • 1. + 2. Vorlesung: Helpdesk
    • Tutor fuer Problemfragen bzgl. Fehler (Stacktraces, ...)
    • Tutoren bieten bereitwillig Hilfe an (Sprechstunden)
  • Programmierkurse
    • Probleme mit Fehlermeldungen wegen anderen Begrifflichkeiten in Vorlesung
    • Fachbegriffe unterscheiden sich von Professor*in zu Professor*in
  • Viele Begriffe aus der Informatik sind nicht allen bekannt
    • aufpassen
    • ermutigen zu Nachfragen
  • Prof hat Schwierigkeiten, Programmierkompetenzen einzuschaetzen
    • zu schnell ueber LinkedList, ...
    • auch wenn leicht erscheint kann Aufgabe sehr schwierig sein

Fehlgeleitete Professoren[Bearbeiten]

  • Fall A: 1., 2. S (Jena):
    • 1. S: C
    • 2. S: Java
    • Vorlesung mit Folien
      • formale Anschauung, sehr abstrakt
      • keine Beispiele
      • kein live coding
    • Pro Woche mind. 4 Uebungsserien
      • Pflichtabgaben
      • Pruefungszulassung durch Uebungen
      • ~8% Klausur pro Woche durch Uebungspunkte
    • Problematisch fuer Programmieranfaenger*innen, da schon erste Uebung zur Klausur gehoert
      • ca. 10h Aufwand pro Uebungsserie fuer Anfaenger*innen
      • Testate und Kurzklausren zusaetzlich
      • zu wenig Zeit am Tag
    • mit Prof geredet
      • Problem besteht seit Jahren
      • Studierende merken, dass Vorlesung ihnen nichts bringt
        • gehen ggf. nichtmehr zu Vorlesung und lernen sebststaendig
      • Professor merkt, dass Vorlesung sich leert
      • interpretiert als Erfolg seiner im Vorraus hochgeladenen Folien
      • Meinung: Es sollte immer einen Mehrwert haben in der Vorlesung zu sein
  • Fall B: Professor*in bringt getrennt Aufgaben fuer Studierende mit Vorkenntnissen
    • gaben Zusatzpunkte fuer Klausur
    • dadurch bevorzugung von Studierenden mit Vorkentnissen
    • direkt geblockt vom Dekan
  • Fall C: Mindstorm
    • Vorlesung: Hier habt ihr das Programm, hier die Blaetter, macht mal.
    • Profesor*in musste mild korrigieren, um das Problem zu umgehen
  • Fall D: Darmstadt:
    • neuer Professor hat im "rechtlichen Rahmen" ein programm aufgebaut
      • hat Fachschaft und Studierende abgeblockt "nur weil ich es anders mache"
      • Gespräche haben geholfen

Herangehensweisen an Professor*innen[Bearbeiten]

  • Fall C
    • Email mit details und klagen
    • Prof hat sich schliesslich entschuldigt
  • Als Fachschaft an Prof herangehen
    • nicht als Studierende, sondern als Repraesentant
      • Vertreter*innen statt Individuen
      • => braucht Fachschaft, die sich fuer Studierende einsetzt und "nicht nur am Saufen interessiert ist"
  • Fall B
    • Klausur musste stark runtergesetzt werden
    • Es haette proaktiver gehandelt werden muessen
  • Fall D
    • ein Student ist nun Hilfskraft und schreibt das Skript
  • Mehrfach aufgetreten, dass Studierende selbst Skript schreiben und in Vorlesungen mitwirken
  • Abblocken von Professor*innen ist von Fall zu Fall extrem
    • Auch andere Organisationen (Hilfsgruppen, etc.) moeglich von Fachschaft ausgehend
    • Fallstudie: Angebot zum Bessern
      • Protokolliertes Gespraech
      • Regelmaessige Ruecksprachen
      • => Auf Dauer hat sich die Situation gebessert
      • Evaluation der Vorlesung mit Ampel system zur Verstaendlichkeit
        • explizit am Ende eines Kapitels
        • Ampel gruen => melden
        • Ampel gelb => melden
        • Ampel rot => melden
        • Alternativ mit Link (anonymisiert)
          • ggf. geringere Motivation?
            • muesste getestet werden

Ziele der Programmierkurse[Bearbeiten]

  • Viele Professor*innen
    • moeglichst schnell, moeglichst viel halbwegs laufender code
    • z.B. 10 minuten Sprint fuer Aufgaben ("3-Zeiler", aber enormer Stress mit Aufgabe lesen)
  • einfachen Klartext in Algorithmen uebersetzen -> nicht immer Sinnvoll
    • existierende Loesung implementieren wird selten in Praxis verlangt
  • Softwareengineering
    • Klartext Aufgaben (bis zu 2xA4)
      • Pseudo-real
      • Sinnvoller, als "pseudo-code-text"
  • Motivation zu Programmieren
    • Wofuer ist es gut?
    • kann Spass machen!
    • Warum will ich programmieren koennen?
    • Keine schwierigen Probleme am Anfang
      • besser kleine Probleme für schnelleres Erfolgserlebnis
  • Anregen das eigene Probleme oder Ideen in Programmen umgesetzt werden können
    • Neue Sachen lernen durch eigenen Ansporn
  • Wie kann ich mir selbst Informationen beschaffen?
    • Negativbeispiel: Hier ist die C Referenz, lern das
    • Bekannte Websites
      • stack overflow
        • Anekdote: Es gibt Programm das automatisch bei Fehlern stack overflow befragt und ersten fix testet
    • Selber erforschen von Websites ist wichtig

Erfolgreiche Freizeitanregungen?[Bearbeiten]

  • Bsp: Links zu online-Raetseln fuer Freizeit
    • Vorschlag für Professor*innen: Pflichtabgaben erweitern
      • Normaler Teil
      • + Zusatzfunktionen ohne Vorgabe koennen implementiert werden
        • "Bauen Sie noch 2 Zusatzfeatures fuer 2 Bonuspunkte"
        • Zusatzfeatures koennen selbst ausgedacht werden
        • Kreativitaet wird gefoerder
      • Im Bereich Spielentwicklung
        • Bsp. Worms
          • Mögliche Zusatzimplementierungen:
            • andere Projectiele
            • Huepfen
            • ...
      • Erfolgsmodell mit sehr kreativen zusatzfeatures
  • Code wars AK
    • Spass, foerdert motivation
  • Professor*innen live-coding
    • nicht einfach, da verschiedene Lerngeschwindigkeiten
    • nach und nach an ein Problem herangehen ist vorteilhaft
  • Lego Mindstorm als Motivation gemeint
    • hier gescheitert, haette ggf. funktionieren koennen
  • ACM Library fuer grafische objekte
    • Graphisches Resultat sichtbar
    • sehr einfache Programme waren am "coolsten"
    • grafische Herangehensweise fuehrt zu kreativem Umgang
      • ueber Aufgabe hinaus
      • library weiter erforschen
    • Motivationsfoerdernd
    • kann aber auch einschuechternd wirken (depends on library)


Cheat sheet fuer Programmierkurse?[Bearbeiten]

  • TU Darmstadt ist dabei, so etwas zu entwickeln
    • Link folgt [hier]
    • (Wenn ich das bis zur naechsten KIF nicht gemacht haben sollte erinnert mich dran, Viele Grueße Kevin)