1. Programmieren I (Einstieg)

Markus Demleitner (msdemlei@cl.uni-heidelberg.de)

Worum geht es?

Programmieren heißt, Probleme zu analysieren, zur formalisieren und effizient zu implementieren. Wir konzentrieren uns hier auf vor allem auf den dritten Punkt, die beiden anderen spielen aber natürlich eine große Rolle.

Technisches

Schein := (Übungen lösen)+(Kleine mündliche Prüfung)

Übungen lösen := 50% der erreichbaren Punktzahl hinkriegen.

abgeben := Lösungen rechtzeitig (Termine stehen auf den Übungsblättern) an eureN TutorIn schicken.

Tutorium

In einem Tutorium werden die Übungsblätter besprochen und Ergänzungen zur Vorlesung gegeben. Die Teilnahme am Tutorium ist in der Regel Voraussetzung für die Scheinvergabe.

Literatur

Literaturhinweise zu dieser Vorlesung gibt es online.

Dies ist eine Wiki-Seite, d.h. ihr könnt, dürft und sollt Ergänzungen oder Kommentare beitragen.

Ein paar Randbemerkungen

Die meisten Studierenden, die dieses Skript lesen, dürften im ersten Semester sein – ich darf also kurz folgende Punkte erwähnen:

  1. Ihr seid an der Uni – und das bedeutet, dass ihr nicht wie in der Schule permanent gegängelt und dadurch zum Arbeiten gezwungen seid. Nun, jedenfalls ist das vorerst noch so. Die Unterstellung ist, dass ihr, in diesem Fall, Computerlinguistik studiert, weil es euch interessiert. Wenn es euch aber interessiert, so geht die Unterstellung weiter, solltet ihr aus eigenem Antrieb versuchen, euch das Wissen anzueignen, das ihr braucht, wenn ihr diesem Interesse nachgehen wollt. Die Vorlesung fungiert dabei mehr als Einladung, vielleicht auch als Rahmen, kann aber die eigenständige Auseinandersetzung mit dem Stoff nur ergänzen. Ob die genannte Unterstellung richtig ist oder nicht, ihr müsst damit leben, dass sie gemacht wird. Ich gebe zu, dass der Umstand, dass gerade hier im Programmierkurs anfangs nicht immer ganz klar ist, was eigentlich der Stoff mit Comptuerlinguistik zu tun hat, erschwerend hinzukommt. Seht trotzdem, dass euer Interesse wachbleibt oder, wo nötig, erwacht.
  2. Daraus folgt insbesondere, dass ich (wie wohl alle anderen Dozenten auch) davon ausgehe, dass ihr euch mit dem Stoff auseinandersetzt, ohne dass etwa Hausaufgaben euch genau spezifizieren, was ihr wie zu machen habt. Um den Übergang etwas zu erleichtern, gibt es in diesem Skript viele Aufgaben, oft mit Lösungen – probiert euch an ihnen. Noch nützlicher zur Durchdringung des Stoffes ist es natürlich, wenn ihr euch selbst Aufgaben ausdenkt. Zur Ergänzung des Skripts bin ich übrigens an solchen selbst ausgedachten Aufgaben immer interessiert.
  3. Es ist sehr einfach, Vor- und Nachbereitung der Vorlesungen sausen zu lassen oder gleich nicht in die Vorlesung zu gehen. Das beste Gegenmittel gegen Prokrastination sind Sozialkontakte – die Zeit, die ihr mit Mitstudis in Cafeterien oder in der Mensa zubringt, ist in aller Regel gut investiert. Guckt, dass ihr euch mit ein paar Mitstudis anfreundet, plaudert mit ihnen über der Stoff. Solche “Lerngruppen” werden euch das Studium und auch das Lernen deutlich versüßen und erleichtern – und ohne werdet ihr oft mit Verzweiflung zu ringen haben. Leider sind viele etwas schüchtern, wenn es daran geht, auf andere Leute zuzugehen. Probiert es trotzdem, nutzt die Tutorien. Lernen geht in Kooperation einfach um Längen besser als in Konkurrenz.
  4. Formale Voraussetzung zur Zulassung zur Scheinklausur ist die Lösung von mindestens der Hälfte der Hausaufgaben. Das ist etwas unglücklich, denn eigentlich sind die Hausaufgaben einfach so etwas wie der praktische Teil der Vorlesung, ohne den es völlig unmöglich ist, später auch nur ein paar Zeilen Code hinzukriegen. Mir wäre es lieber, wenn er von Leistungsdruck und Punkteklauberei befreit wäre. Andererseits ist die traurige Erfahrung, dass freiwillige Hausaufgaben ziermlich schnell hinten runterfallen. Bemüht euch trotz der dummen 50%-Regel, die Hausaufgaben als “Inhalt” und nicht als “Prüfung” zu sehen.
  5. Vorlesungen sind eine der übelsten Formen des früher mal geschmähten “Frontalunterrichts”: Der/die MeisterIn steht vorne und gießt seine/ihre Weisheit über die SchülerInnen. Dies ist keine sehr gute Art der Wissensvermittlung, die Besseren aber funktionieren in der real existierenden Universität meistens noch schlechter. Dennoch: Je größer eure Beteiligung an der Veranstaltung, desto mehr werden alle Beteiligten lernen. Fragt also, macht Anmerkungen, beschwert euch, wenn ihr was nicht versteht. Mir ist klar, dass sich das weit leichter schreibt als es getan ist, aber vielleicht hilft euch die Information, dass ihr, wenn ihr etwas nicht versteht, dieses Schicksal aller Wahrscheinlichkeit nach mit dem größeren Teil des Hörsaals teilt. Ihr habt nichts zu verlieren, wenn ihr (auch dumme, so es so etwas gibt) Fragen stellt oder auch mal eine falsche Anmerkung macht: Ich bin euch in jedem Fall dankbar, und die meisten eurer Mitstudis werden dieses Gefühl teilen. Nach den ersten paar Zwischenreden wirds viel einfacher. Wirklich.
  6. Beschwert euch insbesondere, wenn irgendwas nicht so funktioniert wie im Skript versprochen. Ihr steht dabei nie als dumm da, weil sowas in jedem Fall mein Fehler ist, in der einen oder anderen Weise. Ebenfalls dankbar bin ich euch für sonstige Korrekturen oder Verbesserungsvorschläge.
  7. Wissenschaft ist ein weites Feld, und für das Programmieren gilt das Gleiche. Selbst wenn ihr alles, was in diesem Skript steht, wisst, werdet ihr zur Lösung konkreter Probleme immer noch mehr wissen müssen. Gewöhnt euch frühzeitig daran, Quellen wie Originaldokumentationen, Artikel, Posts im Usenet (die Newsgroup comp.lang.python ist wirklich lohnend und von netten Leuten frequentiert) zu verwenden. Der größte Teil des Materials ist in Englisch, und dieser Teil wird um so größer, je fortgeschrittener eure Probleme sind. Seht, dass ich damit zurecht kommt und weicht Englisch nicht aus.
  8. Vor allem aber: Bei allen Qualen mit Prüfungen, Punkten und Credits – habt Spaß an eurem Studium. Ohne Freude am Fach ist ein Studium eine Qual, mit Freude am Fach (und FreundInnen im Fach) ist es praktisch ein Selbstläufer.


Markus Demleitner

Copyright Notice