Będąc programistą całkowicie samoukiem, chciałbym, gdybym mógł się lepiej samouczyć kursu informatyki prowadzonego dla typowego absolwenta CS.
Znalezienie różnych zasobów w Internecie było łatwe, istnieje oczywiście otwarte oprogramowanie MIT , a także kursy Coursera ze Stanford i innych uniwersytetów. Istnieje wiele innych otwartych zasobów rozsianych po Internecie i kilka dobrych książek, które są wielokrotnie polecane.
Dużo się nauczyłem, ale moje studia są bardzo rozdrobnione, co naprawdę mnie wkurza. Bardzo bym chciał. Gdzieś mógłbym znaleźć ścieżkę, którą powinienem podążać, i stos, do którego powinienem się ograniczyć, aby być pewnym, jakie istotne części informatyki studiowałem, a następnie systematycznie podchodzić do tych, których nie znałem.
Problem z Wikipedią polega na tym, że nie mówi ci, co jest najważniejsze, ale nalega na bycie pełnym źródłem informacji.
MIT otwarte przedmioty kursowe dla informatyki i elektr. Inż. ma ogromną listę kursów, które również nie informują o tym, które kursy są niezbędne, a które opcjonalne, zależnie od zainteresowań / wymagań danej osoby. Nie znalazłem wzmianki o kolejności, w jakiej należy uczyć się różnych przedmiotów.
Chciałbym stworzyć listę, którą będę mógł śledzić, na przykład ten obojętny
SUBJECTS DONE
Introduction to Computer Science *
Introduction to Algorithms *
Discrete Mathematics
Adv. Discrete Mathematics
Data structures *
Adv. Algorithms
...
Jak wyraźnie widać, nie mam pojęcia, z czego składają się poszczególne przedmioty informatyki.
Byłoby to niezwykle pomocne, nawet gdyby ktoś wskazał niezbędne kursy z MIT Course ware (+ niezbędne przedmioty nieobecne na MIT OCW) w zalecanej kolejności badań.
Wymienię posty, przez które już przeszedłem (i nie dostałem tam tego, czego szukałem)
https://softwareengineering.stackexchange.com/questions/49557/computer-science-curriculum-for-non-cs-major - najlepsza odpowiedź mówi, że nie warto studiować cse
https://softwareengineering.stackexchange.com/questions/110345/how-can-a-self-taught-programmer-learn-more-about-computer-science - wskazuje na MIT OCW
źródło
Odpowiedzi:
Widziałem jakiś materiał kursu z MIT i był szokująco zły . Mieli materiały dydaktyczne, które wymagały VC5, wiązki ukrytych zmiennych globalnych, przekazujących kolory jako „niebieskie” zamiast 32-bitowego ARGB, nie mówiąc już o pływakach 4x [0,1], tego typu rzeczy. Nie ufałbym programowi ani kodowi tylko dlatego, że pochodzi on z renomowanego uniwersytetu.
Mój dyplom CS (z uniwersytetu, który jest w pierwszej dziesiątce w Wielkiej Brytanii dla CS) składał się z:
Pierwszy rok:
Drugi rok:
Trzeci rok:
Jak zauważysz, prawie wszystko jest „podstawą” czegoś i prawie nic nie jest objęte użyteczną głębią.
Rzeczy, które były warte zrobienia, niezbędne:
Rzeczy, które warto było zrobić, opcjonalnie:
Rzeczy, które są niezbędne, ale i tak ich nie opisałem:
Reszta była całkowitą stratą czasu. Niestety większość z tych dziewięciu punktów albo już znałem, albo zbierałem przydatne części w innym miejscu. Jeśli czytasz o takich sprawach, jak problem FizzBuzz , szybko staje się jasne, że tak naprawdę nie musisz wiedzieć tyle, aby znaleźć się na wierzchu paczki - co jest szczęśliwe, ponieważ mój stopień naukowy i wiele materiałów, które widziałem w Internecie dla innych stopni tak naprawdę wcale nie uczą.
źródło
Open Course ware to tylko lista kursów, które udostępnili. Jeśli chcesz wiedzieć, co zrobiłby uczeń, przejdź na stronę MIT (bez OCW) i spójrz na rzeczywisty program. Mają listę wymagań i tego, co uważa się za warunek wstępny. Oto ich strona.
źródło
Wypróbuj zalecenia programowe dla informatyki z ACM / IEEE z 2001 r., Do których link znajduje się tutaj: http://www.acm.org/education/curricula-recommendations
wraz z aktualizacjami CS 2008.
Strona 17 raportu z 2001 roku zawiera poręczną tabelę, która podkreśla całą „podstawową” wiedzę i wciąż zawiera listę przedmiotów do wyboru.
Program studiów licencjackich nie miałby czasu na pokrycie nawet kursów uznanych za kluczowe w tych zaleceniach, więc zbroją niektóre kategorie razem i pozwolą uczniom wybrać spośród nich (np. Systemy operacyjne, języki programowania i inżynieria oprogramowania Oprogramowanie, a uczniowie wybierają ścieżkę).
Wymagane zajęcia można znaleźć na stronie internetowej działu CS praktycznie dla każdej szkoły, i powinny to być jakieś wersje tego.
źródło
Jeśli mogę, chciałbym zasugerować dołączenie do github.com w ramach procesu uczenia się.
Następnie możesz wyszukać kod, który ma jakąś rzeczywistą aplikację, którą jesteś zainteresowany, sklonować go dla siebie, pracować z nim, kodować go i poznać, i ostatecznie zacząć przesyłać łatki z powrotem do projektu źródłowego , a później pracuj nad projektem typu open source, którym jesteś zainteresowany.
I oczywiście poznasz git, który jest tym lepszy.
źródło