PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie ist für dich eine optimale Vorlesung zum Programmieren lernen?


Simon
2011-09-06, 12:03:21
Hallo,

ich bin in letzter Zeit in vielen Anfängervorlesungen (inkl Labor/Übungen) zum Programmieren lernen für Elektrotechnik- und Informatikstudenten im ersten bis vierten Semester. Über einen sehr großen Teil dieser Vorlesungen höre ich, dass sie zum Programmieren lernen nix taugen, aus verschiedenen Gründen. Meistens geht es schon damit los, dass die Studenten nicht mal wissen, warum sie jetzt diese Programmiersprache lernen sollen (weils im Lehrplan steht und 0 Praxisrelevanz hat :rolleyes: ).

Um das ganze kurz zu machen: Wie sieht für euch eine sehr gute Vorlesung zum Programmieren lernen aus? Welche Struktur hat die Vorlesung? Welche Inhalte? Welche Wünsche? =)

Trap
2011-09-06, 12:58:13
Das Thema find ich interessant, aber ich glaub das ist schwer sinnvoll zu diskutieren. Eine Meinungssammlung bekommt man hin, aber dabei bleibt es dann meistens leider (oder es gibt noch sinnlose Flamewars).

Zuerst ist die Frage was man mit "Programmieren lernen" überhaupt meint. Wo fängt Programmieren an und wo hört es auf? Welcher Teil davon hat welche Priorität in der Vorlesung? Zählt man das komplette Lösen von gegebenen Problemstellungen als Programmieren? Nur die Implementierung vorgegebener Algorithmen? Soll man die Programmiersprache möglichst vollständig beherrschen? Sollte man mehrere unterschiedliche Programmiersprachen kennenlernen? Gehört "programming in the large" dazu?
Ich denke es gibt da genug Platz für sehr unterschiedliche und trotzdem alle sehr gute Vorlesungen, ohne dass davon eine direkt besser als eine andere ist.

Ein Beispiel für eine ziemlich bekannte Vorlesung wäre http://mitpress.mit.edu/sicp/ beim MIT. Die Vorlesung haben sie am MIT nach 20 Jahren aber vor kurzen durch einen "Roboter mit Python steuern" Kurs ersetzt: http://mit.edu/6.01/mercurial/fall11/www/index.html.

Simon
2011-09-06, 13:10:05
Das Thema find ich interessant, aber ich glaub das ist schwer sinnvoll zu diskutieren. Eine Meinungssammlung bekommt man hin, aber dabei bleibt es dann meistens leider (oder es gibt noch sinnlose Flamewars).
Genau die Meinungen interessieren mich ja!
Ich hatte im Studium nur schlechte Programmier-Vorlesungen...

Zu deinen Fragen: Mir geht es hauptsächlich um Anfänger-Veranstaltungen ala "Grundlagen von C/C++" - auch wenn die Vorlesung offiziell "Einführung in die (theoretische) Informatik" heißt, ist das Hauptziel, dass die Studenten danach Aufgabenstellungen in C halbwegs programmieren können, zum Beispiel Bubble Sort.
Das Niveau der (Informatik)Studenten reicht von "Ich schaff es nicht, Visual Studio zu installieren" oder "Was ist denn eine Datei?" oder "Was ist denn ein Texteditor?" oder "Was ist denn Umschalt/Shift?" zu Leuten, die 5 Jahre beruflich Software entwickelt haben.

Ein Beispiel für eine ziemlich bekannte Vorlesung wäre http://mitpress.mit.edu/sicp/ beim MIT. Die Vorlesung haben sie am MIT nach 20 Jahren aber
:eek:
Bei den Assignments hab ich starke Zweifel, ob die Viertsemester Informatik-Studenten das hier hinbekommen würden :|


vor kurzen durch einen "Roboter mit Python steuern" Kurs ersetzt: http://mit.edu/6.01/mercurial/fall11/www/index.html.
Das Wiki lädt leider nicht mit einer SSL-Fehlermeldung...

Trap
2011-09-06, 13:19:38
:eek:
Bei den Assignments hab ich starke Zweifel, ob die Viertsemester Informatik-Studenten das hier hinbekommen würden :|
Das MIT hat andere Studenten als eine Durchschnitts-Uni. Da kann und muss man andere Kurse halten.
Das Wiki lädt leider nicht mit einer SSL-Fehlermeldung...
Die Inhalte von 2009 gibts auf http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-01-introduction-to-electrical-engineering-and-computer-science-i-fall-2009/
Zu deinen Fragen: Mir geht es hauptsächlich um Anfänger-Veranstaltungen ala "Grundlagen von C/C++" - auch wenn die Vorlesung offiziell "Einführung in die (theoretische) Informatik" heißt, ist das Hauptziel, dass die Studenten danach Aufgabenstellungen in C halbwegs programmieren können, zum Beispiel Bubble Sort.
Für sowas finde ich inhaltlich http://www.acceleratedcpp.com/ (deutsche Übersetzung http://www.pearson-studium.de/main/main.asp?page=bookdetails&ProductID=120942) ziemlich gut. Ist eine Einführung anhand von Beispielen, es hat den Schwerpunkt darauf die wichtigsten Techniken aus C++ kurz einzuführen, es ist keine Sprachreferenz und beschäftigt sich mit nichts wirklich tiefgehend, dafür ist es überschaubar und die Auswahl der Themen ist sinnvoll. Hab aber keine Erfahrung wie das in einem Anfängerkurs tatsächlich ankommt.

minos5000
2011-09-06, 15:53:49
IMO sollte das Ziel einer Vorlesung niemals sein, Studenten Programmieren beizubringen, sondern vielmehr die Ideen und Konzepte hinter z.B. Programmierparadigmen.
Programmieren lernt man dann in Tutorien und Praktikas an der Uni oder bringt es sich selbst bei.

Monger
2011-09-06, 19:30:26
Vorallem rückblickend gesehen: Eins der größten Probleme finde ich den Begriff selbst. Es gibt nicht "das Programmieren". Was sich unter dem Begriff sammelt, hat mitunter extrem wenig miteinander zu tun. Das ist sogar noch weit schlimmer als wenn man Anglizistik und Germanistik unter einen Hut bringt - das ist so, als würde man Literatur und Schauspielerei in die selbe Vorlesung quetschen, weil beides irgendwas mit Sprache zu tun hat.

Wenn man über Programmiersprachen redet, muss man mindestens mal zwischen Maschinensprachen und Metasprachen unterscheiden, und mal zumindest grob nach Anwendungszweck sortieren.
Man muss zwischen Anwendungsentwicklung, Bibliotheksentwicklung, Services und Plugins unterscheiden, weil jeder dieser Bereiche auch sehr eigene theoretische Konzepte hat.
Man muss zwischen Design, Architektur und Implementierung kategorisieren: längst nicht jeder gute Architekt ist ein guter Coder, und nicht jeder Coder ist ein Architekt.


Jeder Teilbereich hat seine Berechtigung. Klar kann der Vorlesungsplan nicht alles abdecken, irgendwo braucht es dann mal Mut zur Lücke, aber ich fände es wichtig dass man die Sachen beim Namen nennt - damit man auch einfach mal versteht, was einem noch alles fehlt, bzw. wo man sich hinspezialisieren will.

PatkIllA
2011-09-06, 19:40:28
Um brauchbar Programmieren (egal welche Sprache auf welchem Abstraktionslevel) zu lernen, braucht man IMO Jahre. Da muss man neben dem Studium schon im fachbezogenen Studien oder privaten oder Opensource-Projekten mitmachen.
Was man in den paar Wochenstunden einer Vorlesung vermitteln kann ist sehr rudimentär. Da ist auch die Programmiersprache eher nebensächlich.

Marscel
2011-09-06, 20:33:42
Meistens geht es schon damit los, dass die Studenten nicht mal wissen, warum sie jetzt diese Programmiersprache lernen sollen (weils im Lehrplan steht und 0 Praxisrelevanz hat :rolleyes: ).

Das ist irgendwie ein leidiger Punkt. Angemerkt sei, dass ich von Assembler bis OOP eigentlich ganz solide Vorkenntnisse im Studium hatte.

Funktionale Programmierung, Haskell. Lief parallel zu C im 1. Semester, für manche also die aller ersten Schritte Programmierung. Warum soll man sich mit Haskell befassen, wenn man im C-Kurs graphische Kleinspiele programmieren darf und in Haskell sich mit Philosophie und akademischen Neuland befassen muss (Monaden, Lambdas). Diese ganz unterschiedlichen Konzepte haben handfeste Vorteile und Einsatzzwecke - aber noch ohne tiefere Mathekenntnisse und wohl auch ohne Praxiserfahrung wird man da nicht den Blick für haben. Wie auch, wenn niemand es einem sagt. Hätte es besser gemacht.

Deklarative Programmierung, Prolog, 2. Semester. Wird einem gleich mit allen Regeln der Mathematik versucht beizubringen - um ebenso mathematische Fälle zu behandeln. Brainfucktechnisch erstmal noch vor dem Haskellfach. Was ich gemerkt habe, ich habs nach einigem Lernen auf ganz simple Dinge runterbrechen können - vielleicht war der Dozent zu sehr Fachnerd für sowas, ich habs einem auf Nachfrage mal in meinen Worten, ohne Formeln, erklärt, erfolgreich. Und sonst, auch hier hätte hier viel stärker praktische Vorteile aufführen können - für die meisten wars vermutlich erstmal Lernen um des Lernens willen.

C++ lief dagegen ganz gut, eine Mischung aus Codepractise, Designpatterns, einer deutlich bildlicheren Darstellung, Anwendungsbeispielen, etwas Komplexitätslehre, Verweisen zu anderen Konzepten, Mathe.

Ein Dozent sollte sich bewusst sein, dass berufsorientierte Studenten den Großteil ausmachen und mit Formal-Nerdtum nicht so zu begeistern sind und den Willen haben, ihnen dennoch das Fach so gut wie möglich beizubringen. Glücklicherweise gibts den einen oder anderen dieser Art.

DocEW
2011-09-06, 20:54:14
Die Frage nach einer perfekten Vorlesung finde ich schwierig zu beantworten, weil es fraglich ist, was man sich als Ziel setzt.

Also für Diplom Informatik an der Uni kann man glaube ich sagen: Man nicht wirklich programmieren. Man lernt, was eine Programmiersprache ist, und was für Typen von Sprachen es gibt usw.. Klar, gibt auch ein paar Übungen... aber naja. Mit professionellem Programmieren hat das wenig zu tun. Da hat man vielleicht 5% des Weges hinter sich. Dafür versteht sich die Uni selbst traditionell als viel zu akademisch, was ich auch verständlich finde. Meiner Meinung nach müsste man die Fachhochschulen viel mehr stärken und darauf trimmen, den Bedarf an Absolventen in der Praxis zu stellen. Wer braucht schon 10000e frisch diplomierte Forscher jährlich? Dazu passt natürlich das Zitat von Dijkstra in meiner Signatur. ;)

Yavion
2011-09-06, 21:29:24
Hallo,

ich bin in letzter Zeit in vielen Anfängervorlesungen (inkl Labor/Übungen) zum Programmieren lernen für Elektrotechnik- und Informatikstudenten im ersten bis vierten Semester. Über einen sehr großen Teil dieser Vorlesungen höre ich, dass sie zum Programmieren lernen nix taugen, aus verschiedenen Gründen. Meistens geht es schon damit los, dass die Studenten nicht mal wissen, warum sie jetzt diese Programmiersprache lernen sollen (weils im Lehrplan steht und 0 Praxisrelevanz hat :rolleyes: ).

Um das ganze kurz zu machen: Wie sieht für euch eine sehr gute Vorlesung zum Programmieren lernen aus? Welche Struktur hat die Vorlesung? Welche Inhalte? Welche Wünsche? =)


Ein paar Kriteren wären:

1. Aktueller Bezug. Das halte ich gerade bei Grundlagen vermittelnden Vorlesungen für ganz wichtig. Mir wurde vor einigen Jahren mal Scheme um die Ohren gehauen. Ich dachte damals nur: Ja super, was soll ich damit jemals anfangen? - Wie wertvoll das ist, was ich dort gelernt habe, habe ich aber erst sehr viel später erkannt.
2. Forderndes aber nicht übertriebenes Übungspensum.
Wenn man nicht übt, hat man die ganze Soße nach 3 Wochen wieder vergessen.
3. Klare Gliederung.
4. Interaktion und Diskussion
5. Aktuelle Inhalte. Es ist gerade bei Technologie-Lastigen Vorlesungen wichtig, dass das was man lernt nicht "von gestern" ist.
6. Angemessenes Tempo.
7. Sinnvolle Unterstützung durch Arbeitsumgebung und Lernmaterialien.

Diese Punkte sind häufig auch auf Evaluationsbögen zu finden. Wenn eine Vorlesung in diesen Punkten von den Studierenden für gut befunden wird, ist sie vermutlich nicht absolut schlecht.

huha
2011-09-06, 21:39:46
Kommt natürlich stark darauf an, für wen die Vorlesung gemacht ist.
Für was muß man eigentlich Programmieren lernen?

Wenn es zur Lösung von Problemen sein soll und kein weiteres Interesse daran besteht, dann lehrt man idealerweise eine vernünftige Skriptsprache und wie man damit ganz konkret bestimmte Problemstellungen angeht. Im Prinzip also eine Vorlesung, die eine Programmiersprache behandelt und noch alle wichtigen Datenstrukturen (Algorithmen halte ich da nicht einmal für besonders wichtig, heute programmiert sich niemand mehr eine Suche oder einen Sortieralgorithmus, sondern nimmt das Zeug aus den Standard-Libraries). Dann hat man etwas, mit dem man eigene Programme schreiben kann und damit in der Lage ist, Probleme zu lösen. Sehr gut dafür eignet sich z.B. Python.

Für ein Informatikstudium ist sowas natürlich kompletter Quatsch, denn da erwarte ich eigentlich, daß die Leute bereits programmieren können. Vielleicht nicht besonders gut, vielleicht nicht besonders schnell, aber wer das studieren will, der soll sich gefälligst dafür interessieren und Programmieren ist nunmal der Grundbaustein der Informatik; Informatik ist gewiß nicht nur Programmieren, aber auch wenn man die Dinge machen will, die nichts direkt mit Programmierung im klassischen Sinne zu tun haben, muß man das verstehen. Im Informatikstudium würde ich also keine Vorlesungen über Programmiersprachen halten, das ist komplette Zeitverschwendung, sowohl für die Dozenten, als auch für die Studenten. Eine halbe Ausnahme gibt's natürlich: Nicht-imperative Programmierung sollte unterrichtet werden, aber dort halte ich es auch für sinnvoller, sich nicht auf eine Programmiersprache festzulegen, sondern die Konzepte und Ideen zu vermitteln, damit man dann nachher damit arbeiten kann. Generell ist es da sinnvoller, sich natürlich auf eine Programmiersprache festzulegen, die auch nicht zu esoterisch sein sollte, da man ja auch irgendwelche Möglichkeiten benötigt, Probleme durch Schreiben von Programmen zu lösen und man dafür dann natürlich das nimmt, was man sowieso die ganze Zeit macht; nicht, weil es besonders gut dafür geeignet wäre, sondern einfach deshalb, weil man die ganze Zeit damit arbeitet und daher einigermaßen gut darin wird. Für eine "Einführungsvorlesung" würde ich daher eine Sprache wie Java nehmen; C wäre zwar im Prinzip auch okay, dort fehlt dann aber die Objektorientierung, was man heutzutage eigentlich schon haben will; C++ finde ich zu ätzend--da wird man IMHO zu sehr von konkreten technisch gegebenen Sprach-Details aufgehalten; Scala scheint sich auch ganz gut dafür zu eignen. Wichtig ist eben, daß das Zeug statisch getypt ist.
Jetzt, wo die Sprache geklärt ist (man muß sich eben für irgendeine entscheiden), sollte man einen Crashkurs anbieten, um den Leuten die Sprache und ein paar Features zu erklären. Wer sich für das Zeug interessiert, kann das durchaus in wenigen Wochen (eigentlich sogar in wenigen Tagen) gut genug lernen, um so halbwegs folgen zu können; letztendlich lernt man Programmieren nur durch Programmieren und dafür gibt's ja die Übungen. Der Inhalt der Vorlesung darf ruhig etwas theoretischer sein, ein kurzer Ausflug ins Reich der Typsysteme kann beispielsweise nicht schaden. Selbstverständlich sollte es natürlich auch genug Zeug zu programmieren geben, denn letztendlich geht es in dieser Vorlesung dann darum, die Konzepte, die hinter verschiedenen Aspekten stecken, zu verstehen. Alle wichtigen Datenstrukturen müssen ebenfalls behandelt werden, ein paar Such- und Sortieralgorithmen können auch nicht schaden (aber halt nur ein paar. Es ist einfach lächerlich, ewig und drei Tage mit fünf Millionen Sortieralgorithmen zu verbringen. Wenn man sowas braucht, dann sucht man sich was Passendes raus, fertig.)


Also kurz zusammengefaßt:
1) Programmiervorlesung für Nicht-Informatiker: Wie löse ich Probleme durch Programmierung? Sehr praxisorientiert, Skriptsprache mit großer Standard-Library.
2) Programmiervorlesung für Informatiker: Welche Konzepte stecken hinter Programmiersprachen? Welche Möglichkeiten gibt es, Probleme durch Programmieren zu lösen? Übungen zum Aufbauen von Programmierfähigkeiten, aber auch zumindest kurze Behandlung von nicht-praktischen ;) Fragen und Aspekten.

-huha

Pinoccio
2011-09-06, 22:46:21
Ein Problem scheint mir auch, das man viele Dinge parellel braucht, um gut programmieren zu können, diese aber nur nacheinander lernen kann. Mit dem Wissen aus den höheren Semestern erscheinen mir die Inhalte früherer nahezu trival, weil sie sich in ein großes Ganzes einbetten.
Abgesehen davon ist "gut programmieren" enorm umfangreich und individuell anders belegt, dementsprechend gibt es wohl auch keine Vorlesung, die allen gerecht wird.

(Aus dem Blickwinkel eines Mathestudenten.)

mfg

Simon
2011-09-07, 13:08:14
Also kurz zusammengefaßt:
1) Programmiervorlesung für Nicht-Informatiker: Wie löse ich Probleme durch Programmierung? Sehr praxisorientiert, Skriptsprache mit großer Standard-Library.
2) Programmiervorlesung für Informatiker: Welche Konzepte stecken hinter Programmiersprachen? Welche Möglichkeiten gibt es, Probleme durch Programmieren zu lösen? Übungen zum Aufbauen von Programmierfähigkeiten, aber auch zumindest kurze Behandlung von nicht-praktischen ;) Fragen und Aspekten.

-huha
Und wenn die Programmiersprache vorgegeben ist fuer beide Gruppen? C fuer Elektrotechniker ;)

pest
2011-09-07, 13:56:38
Programmieren lernt man nicht in einer VL, eine VL müsste so aussehen
und das kann man größtenteils mit Pseudocode erledigen oder auf eine konkrete Sprache zuschneiden

1. Grundkonzepte
-Iteratives/Rekursives/Modulares Programmieren
-Funktionen
-Schleifenformen/Fallunterscheidungen
-primitive Datentypen
-(Funktions-)Zeiger
-Felder
-Strings
-(logische) Operatoren

2. Algorithmen und Datenstrukturen
-dynamische Speicherverwaltung
-Strukturen
-verkettete Listen
-Stapel
-Schlangen
-Bäume
-Hashing
-Sortierverfahren (Bubble, Quick, Merge usw)
-Suchalgorithmen

zum Anschneiden
-Pattern Matching
-Komprimierung
-Kryptologie
-Geometrie

Speziell (Algorithmen für Graphen)
minimale Spannbäume, Kürzeste Wege, Flussprobleme

3. Objektorientierte Konzepte
-Vererbung (UML)
-Polymorphie
-Überschreibung
-Kapselung
-(abstrakte) Klassen/Iteratoren/virtuelle Methoden usw.
-Streams

wenn man das alles beherrscht, kann man anfangen davon zu reden man könne programmieren

das sind insgesammt so 3-4 volle VL

Gast
2011-09-16, 00:44:34
Die Frage ist immer welches Niveau man erreichen will und in welcher Zeit die erster Fortschritte sichtbar sein sollten.

Wenn ich in einer höherbildenden Schule mit 14 anfange, dann macht es Sinn als erstes einmal nur Grundlagen zu machen (am besten die ersten 2-3 Jahre), da bis zum Schulabschluss ein produktiver Output nicht notwendig ist und man sich dann mit etwas Berufspraxis deutlich von den ganzen selbsterlernten Hobbyprogrammierern und Leuten, die nur schnell ein paar Kurse besucht haben abheben kann, da man wirklich versteht was man tut und nicht nur auf Versuch und Irrtum irgendetwas zum Laufen bringt.

Wenn es sich um einen Kollegen in der Firma handelt, dem man etwas beibringen will, um etwas Wissen weiter zu geben, der das Programmieren aber nur als Nebenaufgabe hat, dann werde ich ihn eher mit seinem bestehenden Wissen an einem eher unkritischen Projekt arbeiten lassen und dann nachher ein paar Verbesserungsvorschläge aus der Praxis einfließen lassen, wie ich es machen würde und dann bei Bedarf noch einmal drüber arbeiten, bevor es zum Kunden geht.

Wenn es sich um einen Informatik Studenten handelt, so wäre ein Mittelweg anzustreben. Zuerst einmal ein Jahr Grundlagen, aber dann nicht ewig mit C/C++ befassen, sondern gleich zu irgendeiner Sprache wie C#/VB.NET wechseln und mit ein paar Bibliotheken befassen, damit auch bei Zeiten etwas heraus schaut, damit dieser vielleicht nach 2-3 Jahren schon anfangen kann nebenbei beruflich zu programmieren.

Bei einem Elektrotechnik Studenten würde ich die Theorie überhaupt nur kurz anschneiden (vielleicht 2-3 Monate) und dann gleich in die Praxis einsteigen. Objektorientierung würde ich vorerst überhaupt einmal bleiben lassen, da die meisten Elektriker sowieso nicht das Niveau erreich, um das sinnvoll selbst einsetzen zu können bzw. weil das Ganze auf einer Siemens SPS sowieso komplett anders umgesetzt wird, wenn alles in Echtzeit läuft und das ist genau das, was ein Elektrotechnik Student wahrscheinlich programmieren wird, aber eher nicht viel am PC, zumindest nicht für Kunden, wenn man das Ganze supporten muss, wobei sich bei uns in der Firma auch gezeigt hat, dass bei komplexen SPS Projekten es eher besser ist, wenn das ein ausgebildeter Informatiker übernimmt, der sich ein bisschen in die Elektrotechnik einarbeitet und sich die Hardware von den Technikern zusammen bauen lässt, als ein Elektrotechniker, der sich ein bisschen in die Programmierung einarbeitet.

Nur einmal so als Vergleich:
Ich habe zuerst einmal 5 Jahre in der Schule wirklich intensiv Grundlagen hinter mir, nach denen ich aber noch nicht viel produktive Software schreiben konnte, dann ca. 1 Jahr für private Projekte nebenbei herum programmiert und bin mit knapp 4 Jahren Berufserfahrung als Universalprogrammierer so weit, dass ich sagen kann, dass ich das Ganze so im Griff bzw. optimiert habe, dass ich effizient arbeiten kann dank umfassender Bibliotheken für fast alle möglichen Anwendungsfälle, brauchbarem Update Management, Konfig Management, und Loggingfunktionen bzw. schon einiges Erfahrung, was man umsetzen kann und was man dem Kunden besser ausreden sollte usw. Manche Dinge laufen zwar immer noch nicht perfekt z.B. die Erstinstallation bzw. Konfigurationsoberfläche für den Kunden, aber ca. bin ich schon dort, wo ich hin will.

Coda
2011-09-16, 00:45:37
Vererbung (UML) :ugly:

airbag
2011-09-16, 00:51:42
um Programmieren lernen für Elektrotechnik- und Informatikstudenten


Naja man sollte sich fragen, ob der Sinn der Veranstaltung wirklich darin besteht, dass Programmieren näher zu bringen. Bei mir ist es so gewesen, dass Programmierung nicht im Vordergrund stand und man den Studenten eher die Grundkonzepte mit denen man arbeitet beibringen wollte.(auf der anderen Seite wurder natürlich spätestens ab dem zweiten Semeser vorrausgesetzt, dass man einigermaßen effizient programmieren kann ) Daher hat man das Programmieren in der Regel in den Übungen bzw. wenn in den Praktika (gab es parallel zu Theorieübungen) gelernt

Bei den Assignments hab ich starke Zweifel, ob die Viertsemester Informatik-Studenten das hier hinbekommen würden

Das Buch dazu wurde uns damals im ersten Semester empfohlen, aber diente eher für Leute die Interesse hatten das Thema zu vertiefen.