Wie kann ich Informatik im Selbststudium studieren?
Da ich mir das Programmieren selbst beigebracht habe, wäre es schön, wenn ich mich verbessern könnte, indem ich mir den Informatikkurs eines typischen CS-Absolventen selbst beibringe.
Die Suche nach verschiedenen Ressourcen im Internet war einfach, es gibt natürlich MIT open course ware, und es gibt Coursera-Kurse von Stanford und anderen Universitäten. Es gibt zahlreiche andere offene Ressourcen, die im Internet verstreut sind, und einige gute Bücher, die immer wieder empfohlen werden.
Ich habe viel gelernt, aber mein Studium ist stark fragmentiert, was mich wirklich stört. Ich fände es toll, wenn ich irgendwo einen Pfad finden könnte, dem ich folgen sollte, und einen Stapel, auf den ich mich beschränken sollte, damit ich mir sicher sein kann, welche essentiellen Teile der Informatik ich studiert habe, und dann systematisch an diejenigen herangehen kann, die ich nicht studiert habe.
Das Problem mit Wikipedia ist, dass sie einem nicht sagt, was wesentlich ist, sondern darauf besteht, eine vollständige Referenz zu sein.
Die MIT open course ware für Informatik und Elektrotechnik hat eine riesige Liste von Kursen, die auch nicht sagt, welche Kurse essentiell und welche optional sind, je nach Interesse/Anforderungen der Person. Ich habe keinen Hinweis auf eine Reihenfolge gefunden, in der man die verschiedenen Fächer studieren sollte.
Ich würde gerne eine Liste erstellen, an der ich mich orientieren kann, z. B. diese Dummy-Liste
SUBJECTS DONE
Introduction to Computer Science *
Introduction to Algorithms *
Discrete Mathematics
Adv. Discrete Mathematics
Data structures *
Adv. Algorithms
...
Wie Sie deutlich sehen können, habe ich wenig Ahnung von den einzelnen Fächern der Informatik.
Es wäre sehr hilfreich, wenn mir jemand die wesentlichen Kurse aus dem MIT Course Ware ( + wesentliche Fächer, die nicht im MIT OCW vorhanden sind) in einer empfohlenen Reihenfolge aufzeigen würde.
Ich werde die Posts auflisten, die ich bereits durchgesehen habe (und ich habe dort nicht das gefunden, wonach ich gesucht habe)
https://softwareengineering.stackexchange.com/questions/49557/computer-science-curriculum-for-non-cs-major - die erste Antwort sagt, dass es sich nicht lohnt, cse zu studieren
https://softwareengineering.stackexchange.com/questions/110345/how-can-a-self-taught-programmer-learn-more-about-computer-science - verweist auf MIT OCW
Ich habe einige Kursmaterialien des MIT gesehen, und sie waren schockierend schlecht. Sie hatten Lehrmaterial, das VC5, Bündel von impliziten globalen Variablen, die Übergabe von Farben als "Blue" anstelle von 32bit ARGB, geschweige denn 4x [0,1] Floats, diese Art von Dingen erforderlich. Ich würde einem Lehrplan oder Code nicht trauen, nur weil er von einer renommierten Universität kommt.
Mein CS-Abschluss (von einer Universität, die zu den Top 10 in Großbritannien für CS gehört) bestand aus:
Erstes Jahr:
Zweites Jahr:
Drittes Jahr:
Wie Sie feststellen werden, handelt es sich bei so gut wie allem um die Grundlagen und fast nichts wird in einer sinnvollen Tiefe behandelt.
Die Dinge, die es tatsächlich wert waren, getan zu werden, waren wesentlich:
Die Dinge, die es wert waren, getan zu werden, optional:
Dinge, die essentiell sind, aber ich habe sie sowieso nicht behandelt:
Der Rest war reine Zeitverschwendung. Leider kannte ich die meisten dieser neun Punkte entweder schon, oder ich habe die nützlichen Teile woanders aufgeschnappt. Wenn man über Dinge wie das FizzBuzz-Problem liest, wird schnell klar, dass man eigentlich gar nicht so viel wissen muss, um auf dem Laufenden zu sein - was ein Glück ist, denn mein Abschluss und viele der Materialien, die ich online für andere Abschlüsse gesehen habe, vermitteln wirklich nicht viel.
Open Course Ware ist nur eine Liste von Kursen, die sie zur Verfügung gestellt haben. Wenn Sie wissen wollen, welche Kurse ein Student belegt hat, besuchen Sie die MIT-Website (nicht OCW) und sehen Sie sich das eigentliche Programm an. Dort finden Sie eine Liste mit den erforderlichen Kursen und den Voraussetzungen, die für die jeweiligen Kurse erfüllt werden müssen. Hier ist ihre Seite.
Wenn ich darf, würde ich gerne vorschlagen, github.com als Teil Ihres Lernprozesses beizutreten.
Dann können Sie nach Code suchen, der eine reale Anwendung hat, an der Sie interessiert sind, ihn für sich selbst klonen, damit arbeiten, daran programmieren und es kennenlernen, und schließlich damit beginnen, Patches an das Quellprojekt zu übermitteln, und im Laufe der Zeit an einem Open-Source-Projekt arbeiten, an dem Sie ein echtes Interesse haben.
Und natürlich werden Sie sich mit Git vertraut machen, was natürlich umso besser ist.