W ciągu następnych 12 miesięcy zamierzam nauczyć się całego 4-letniego programu nauczania informatyki na MIT, nie uczęszczając na żadne zajęcia.
UPDATE: Wyzwanie MIT zostało zakończone. Skończyłem 26 września 2012 roku, niespełna 12 miesięcy po rozpoczęciu 1 października 2011 roku. Kliknij na „Zobacz więcej…” dla każdej klasy, aby uzyskać dostęp do moich egzaminów, oficjalnych rozwiązań lub kodu, który napisałem.
Odpowiedzi na częste pytania:
- Ile pracowałem podczas wyzwania? Na początku około 60 godzin tygodniowo. Później więcej jak 35.
- Czy uzyskałeś stopień naukowy na MIT? Nie. Zobacz rozmowę powyżej na temat mojej motywacji do zrobienia całej edukacji bez zaliczenia.
- Czy robiłeś wszystko, co robi student MIT? Nie. Zrobiłem egzaminy i projekty programistyczne dla programu nauczania, który jest bardzo podobny do programu MIT (musiałem zamienić niektóre zajęcia laboratoryjne i wymagania humanistyczne na inne zajęcia). Liczba godzin kredytowych jest jednak taka sama. Sprawdź tutaj rzeczywisty 4-letni program nauczania CS w MIT jako porównanie z moim własnym. (Uwaga: Ten link został zaktualizowany, ponieważ stary był martwy, jednak nie sprawdziłem, czy nastąpiły zmiany w programie nauczania CS od czasu, gdy zrobiłem MIT Challenge)
- Czy używałeś podręczników lub filmów z wykładów? Wszystko jest w panelu „Zobacz więcej…” dla każdej klasy. Proszę sprawdź to, jeśli nie jesteś pewien dla każdej klasy.
- W jakiej kolejności robiłeś zajęcia? W kolejności podanej poniżej. Z wyjątkiem niektórych, które były robione w tym samym czasie. Jednak jeśli zastosujesz się do tej kolejności seryjnie, nie ominiesz żadnych wymagań wstępnych.
- Czy oceniałeś pracę samodzielnie? Tak. Trzeba przyznać, że wprowadza to pewien stopień błędu w stosunku do posiadania profesora oceniającego moją pracę. Jednak większość egzaminów są ilościowe z zestawów rozwiązań, które mają rubryki oceny, więc to ogranicza błąd nieco. Zachęcam każdego do sprawdzenia moich rzeczywistych wyników egzaminów i porównania ich z rozwiązaniami. W wielu egzaminach, które wymagały długich obliczeń, pozwoliłem na częściowe oceny pod warunkiem, że koncepcje nauczane w kursie zostały zastosowane prawidłowo. Wierzę, że podany sposób oceniania jest prawdopodobnie sprawiedliwy, ale gdybyś chciał zająć zdecydowane stanowisko, że każdy błąd (taki jak zapomnienie znaku minus) unieważnia całe pytanie, to obniżyłoby to niektóre z moich ocen. Przeszedłem i przeliczyłem oceny pod wpływem tych ostrzejszych ograniczeń i spowodowałoby to, że egzaminy końcowe dla 18.01, 5.111, 18.03, 6.002 i 6.013 znalazłyby się poniżej progu zaliczenia (pozostałe 28 zajęć albo pozostały bez zmian, albo utrzymały się powyżej progu zaliczenia). Uważam, że pierwotne ocenianie było sprawiedliwe, jeśli niedoskonałe, ale te późniejsze obliczenia pokazują wpływ mojej decyzji o użyciu ocen cząstkowych.
- Czy uważasz, że wszyscy nie powinni iść na uniwersytet i robić to zamiast tego? Oczywiście, że nie. Zrobiłem moje studia licencjackie na uniwersytecie i nie żałuję tego. Moim celem w tym projekcie było sprawdzenie, czy byłoby to możliwe – przesunięcie oczekiwań co do tego, jak długo, jak kosztownie i jak konwencjonalnie należy zdobywać wykształcenie.
Komputery zawsze mnie fascynowały. Od finansów po Facebooka, algorytmy są ukrytym językiem, na którym opiera się większość naszego życia. Największe transformacje naszego świata są zapisywane w kodzie, a postępy w sztucznej inteligencji pozwalają nam wykorzystać komputery do zrozumienia, co to znaczy być człowiekiem.
Poza poezją maszyny, informatyka jest również ogromnie praktyczna. Na liniach kodu zbijano fortuny i wzniecano rewolucje.
Zawsze chciałem mówić tym językiem. Ale nie chciałem inwestować czterech lat mojego życia i setek tysięcy dolarów, aby się go nauczyć.
Podejmuję ten eksperyment, ponieważ chcę pokazać, że nauka nie wymaga komisji akceptacyjnych i testów SAT, tysięcy dolarów długu, ani nawet czteroletniego tempa, które większość studentów zakłada jako niezbędne do nauczenia się przedmiotu.
Czy mi się nie powiedzie? Jest to zdecydowanie możliwe – ludzie o wiele mądrzejsi ode mnie zmagają się z ogromnym nakładem pracy w instytucjach takich jak MIT, a ja próbuję nauczyć się tego samego materiału w 4x szybszym tempie, bez pomocy instruktorów.
Wszystko, co mogę obiecać, to podzielić się z wami tym, co znajdę. Poniżej wymienione są wszystkie 33 klasy, które będę omawiał. Dla każdej z nich napiszę egzamin końcowy i będziecie mogli porównać moje odpowiedzi z oficjalnymi rozwiązaniami MIT. Będę również zamieszczał wszelkie porażki, więc możecie być pewni, że nie pomijam swoich błędów.
Aktualizacja po wyzwaniu MIT
Odkąd wyzwanie zostało zakończone, używam tego miejsca, aby podzielić się niektórymi nowymi kursami, które ukończyłem lub programami, które ukończyłem, związanymi z informatyką.
- WordSmith – To zbudowana przeze mnie SI, która gra w Scrabble. Free and open-source.
LEARNING PROGRESS (33/33):
Kliknij na tytuły, aby obejrzeć filmy, uzyskać dostęp do kursów i zobaczyć moje wyniki
8.01: Fizyka I – Mechanika klasyczna – ZAKOŃCZONA
Ukończyłem tę klasę w lipcu jako część eksperymentu pilotażowego, aby sprawdzić, czy jestem w stanie zrobić cały program. Kurs jest genialny, prof. Walter Lewin wykonuje niesamowitą pracę przynosząc fizykę do życia bez poświęcania intelektualnego rygoru. Uwaga: Ten kurs został usunięty przez MIT, możesz uzyskać dostęp do innej wersji tutaj. Ocena Scott’a: 5/5
18.01: Single Variable Calculus – COMPLETED
To była pierwsza oficjalna klasa, którą ukończyłem w ramach MIT Challenge. Solidne wykłady dały mi dobre wyczucie podstaw rachunku począwszy od granic i przechodząc do bardziej zaawansowanego całkowania.
Ocena Scotta: 4/5
18.02: Multi-Variable Calculus – COMPLETED
Ta klasa rozszerza podstawowe zasady rachunku jednej zmiennej na więcej niż jeden wymiar. Bardzo przydatna wiedza do zrozumienia elektryczności, magnesów, światła lub czegokolwiek związanego z obiektami 3D.
Ocena Scotta: 4/5
8.02: Physics II – Electromagnetism – COMPLETED
Kolejna klasa prowadzona przez prof. Waltera Lewina, demonstracje są niesamowite. Rygorystyczne dla tych, którzy chcą szczegóły techniczne, ale nadal przystępne, omawiając codzienne koncepcje, takie jak tęcze i wykrywacze metalu. Uwaga: Oryginalny kurs, który wziąłem został usunięty przez MIT. Tutaj jest kurs zastępczy.
Ocena Scotta: 5/5
6.01: Introduction to EE and CS I – COMPLETED
To dobra klasa, ale nie polecam jej brać, jeśli nie masz doświadczenia w programowaniu, ponieważ nurkuje prosto w orientację obiektową ze stosunkowo niewielkim wyjaśnieniem. Naprawdę podobało mi się mieszanie bardziej zaawansowanych koncepcji z AI i maszyn państwowych do podstawowego kursu. Notatki z kursu są darmowe i doskonałe, chociaż wiele z nich skupia się na robotyce, która wykorzystuje specjalistyczny sprzęt, do którego nie mam dostępu. (Jako uwaga uboczna, wiele osób zwróciło uwagę, że egzamin końcowy, który napisałem, nie był w pełni wyczerpujący, możesz przeczytać moją dogłębną odpowiedź tutaj) Uwaga: Oryginalny kurs, który wziąłem, został przełączony przez MIT. Oto zamiennik.
Ocena Scotta: 4/5
- Dostęp do materiałów kursu za darmo
- Pobierz kod
- Projekt: State-Machine Library
- Project: Bayesian State Estimator
- Project: A* Pathfinding Algorithm
- Moje wyniki egzaminu
- Aktualne rozwiązania MIT
5.111: Principles of Chemical Science – COMPLETED*
Dobre wprowadzenie do chemii kwantowej, diagramów Lewisa, kwasów/zasad i reakcji redoks. Zawiera również bardziej zaawansowaną sekcję na temat metali przejściowych i teorii pola krystalicznego. Niestety klasa nie miała realnego egzaminu końcowego, więc byłem zmuszony użyć moich praktycznych egzaminów jako podstawy oceny.
Ocena Scotta: 4/5
7.012: Introduction to Biology – COMPLETED
Doskonały kurs biologii, który bada biologię z punktu widzenia eksperymentatora, dając podstawy biochemii, immunologii, genetyki i ekologii. Podręcznik jest również dobrym uzupełnieniem, ukazującym eksperymentalny sposób myślenia prowadzący do odkryć.
Ocena Scotta: 4/5
18.03: Równania różniczkowe – ZAKOŃCZONE
Rozszerzenie rachunku, równania różniczkowe pozwalają modelować i analizować złożone systemy. Odgrywają one szczególnie ważną rolę w elektrotechnice, gdzie (i ich dyskretne odpowiedniki) są niezbędne do zrozumienia obwodów, sygnałów i systemów. Wykłady wideo związane z tą klasą mają znaczne odchylenia od reszty treści kursu, co spowodowało, że straciłem trochę czasu.
Ocena Scotta: 3/5
6.02: Introduction to EE and CS II – COMPLETED
To była trudniejsza klasa do podjęcia, ponieważ nie ma klasy dla niej w MIT’s OCW. Uczenie się go oznaczało przesiewanie przez przeważnie ukryte zakamarki publicznych archiwów MIT, aby spróbować znaleźć notatki i egzaminy. Konsekwencją tego jest to, że projektowanie filtrów, główny temat, był całkowicie pominięty w notatkach i nie byłem w stanie ukończyć laboratoriów (6 & 7) lub sekcji egzaminacyjnych, które dotyczyły tego tematu. Nie było egzaminu końcowego, więc ukończyłem wszystkie trzy midtermy i oceniałem je zbiorczo.
Ocena Scotta: 3/5
- Materiały kursowe
- Zadania laboratoryjne (ostrzeżenie duże), Instrukcje do zadań/pliki
- Moje odpowiedzi egzaminacyjne
- Aktualne rozwiązania MIT
6.042J: Matematyka dla Informatyki – ZAKOŃCZONY
Grafy, teoria liczb, dowody, prawdopodobieństwo i liczenie to tylko niektóre z tematów poruszanych w tej doskonałej klasie. Nie ma żadnych wykładów wideo, ale darmowy podręcznik kursu jest niesamowity i wciągający. Istnieje również ogromna ilość zasobów do ćwiczenia problemów, oferując ciekawe wyzwania.
Ocena Scotta: 5/5
6.006: Introduction to Algorithms – COMPLETED
Wprowadzenie do algorytmów i teorii złożoności. Kurs zapewnia dobrą okazję do zastosowania koncepcji projektowania algorytmów (programowanie dynamiczne, algorytmy zachłanne, itp.) do rzeczywistych problemów programistycznych, nadając tej klasie konkretności, której brakowało w 6.042J. Niestety, nie zdawałem sobie sprawy, że egzamin końcowy nie był kompleksowy przed napisaniem go, więc dołączyłem również moje quizy, które zrobiłem dla praktyki. Ukończyłem większość zadań, jednak ponieważ nie było żadnych rozwiązań, pozostawiłem je bez oceny.
Ocena Scotta: 4/5
18.06: Linear Algebra – COMPLETED
Doskonałe wykłady wideo i obfite materiały sprawiły, że jest to jeden z bardziej przystępnych kursów w katalogu OCW. Prof. Gilbert Strang prowadzi płynne, łatwe do zrozumienia wykłady. Mój pierwszy egzamin z tej klasy był tylko 56%, więc zdecydowałem się wziąć kolejny dzień, aby napisać wyżej punktowany egzamin, który zamieściłem poniżej.
Ocena Scotta: 5/5
6.041: Probabilistic Systems Analysis – COMPLETED
Kurs prawdopodobieństwa, zagłębia się w podstawy prawdopodobieństwa używając rachunku do analizy trudniejszych pytań probabilistycznych niż te postawione w 6.042J. Podręcznik jest zaprojektowany specjalnie dla tego kursu, więc jest niezwykle przydatny.
Ocena Scotta: 4/5
6.002: Circuits and Electronics – COMPLETED
Ten kurs obejmuje podstawy obwodów cyfrowych i analogowych. Egzamin był dość wymagający i oznaczony jako pierwszy egzamin, gdzie faktycznie zabrakło mi czasu na jego przeprowadzenie. Niestety oficjalne rozwiązania są dostępne tylko dla MIT, więc nie mogę ich tutaj zamieścić dla porównania. Ta klasa służy jako podstawa dla wielu późniejszych klas EE, więc jestem pewien, że będę miał jeszcze jedną szansę, aby naprawdę zostać przetestowanym na podstawowych koncepcjach.
Ocena Scotta: 4/5
6.046J: Projektowanie i analiza algorytmów – ZAKOŃCZONE
Jeden z moich ulubionych kursów do tej pory! Klasa bada niektóre z bardziej zaawansowanych koncepcji w algorytmach, których nie ma w 6.006, takich jak udowadnianie, że poszczególne problemy są NP-Complete, algorytmy aproksymacyjne, szyfrowanie, algorytmy subliniowe i przetwarzanie równoległe. Musiałem być jednak ostrożny, ponieważ wersja OCW tego kursu jest przed zmianą programu nauczania MIT, gdzie 6.006 został dodany, więc obejmuje znacznie łatwiejszy materiał niż obecne wersje.
Ocena Scotta: 5/5
6.034: Artificial Intelligence – COMPLETED
Świetna klasa, która obejmowała przegląd różnych technik AI, w tym wyszukiwanie, propagację ograniczeń, sieci neuronowe, maszyny jądrowe, uczenie się pojęć i przetwarzanie języka naturalnego. Wykonałem również 6 zadań dla tej klasy, które wymagały ode mnie nauki języka programowania Scheme. Jednym z wyzwań przy pisaniu egzaminów dla tej klasy była różnorodność w sylabusach, ponieważ tak wiele różnych technik było objętych i specyfika różniła się od klasy do klasy.
Ocena Scotta: 5/5
6.003: Signals and Systems – COMPLETED
Ta klasa uczy podstaw analizy sygnałów i systemów, rozszerzając techniki matematyczne po raz pierwszy omówione w 18.03. Chociaż przydatne dla więcej niż tylko obwody, klasa jest szczególnie ważne dla zrozumienia rzeczy, takich jak modulacja częstotliwości, filtry audio, redukcji szumów, a nawet służy jako podstawa do analizy obrazu i manipulacji. Był to również pierwszy egzamin, który początkowo oblałem, na szczęście poprawiłem się i zdobyłem 69% przy drugiej próbie. Uwaga: Oryginalny kurs, który wziąłem nie jest już dostępny. Oto jego zamiennik.
Ocena Scotta: 4/5
6.004: Computation Structures – COMPLETED
Świetna klasa ucząca przejścia między elektrotechniką a informatyką. Projekt obejmował budowanie specyfikacji CPU na poziomie bramy, czyli budowanie obwodów pozwalających na zbudowanie komputera. Jedyną słabością klasy był względny brak materiału, jednak zadania i laboratoria są mocno wspierane.
Ocena Scotta: 4/5
- Dostęp do materiałów kursu za darmo
- Laboratoria i projekty(Uwaga: BSim i JSim są wymagane do uruchomienia plików. Można je swobodnie pobrać ze strony kursu)
- My Exam
- MIT Official Solutions
24.241: Logic I – COMPLETED
Wprowadzenie do rachunku zdań i rachunku predykatów, ich systemów derywacji i dowodów metateoretycznych. Znalazłem klasę raczej suchą i techniczną, ale klasa oferowała dobrą praktykę w bardziej rygorystycznych metodach dowodowych, w przeciwieństwie do bardziej nieformalnych stylów nauczanych w klasach informatyki. Niestety, odpowiedzi z egzaminu, których użyłem do poprawienia mojej pracy nie są publiczne, więc nie mogę ich tutaj zamieścić.
Ocena Scotta: 3/5
14.01: Principles of Microeconomics – COMPLETED
Miałem już mikroekonomię podczas robienia mojego stopnia biznesowego, więc zdecydowana większość tego kursu była podsumowaniem. Jednak, ponieważ MIT ma znacznie silniejsze podstawy matematyki niż moja alma mater, to było orzeźwiające, aby zobaczyć bardziej rygorystyczne techniczne definicje wielu pojęć. Spędziłem trochę mniej niż cztery dni na tym kursie, więc większość moich błędów były z zapomnienia technicznych definicji i formuł, ponieważ żaden z nich nie zostały dostarczone na egzaminie.
Ocena Scotta: 3/5
6.033: Computer Systems Engineering – COMPLETED
Przydatna klasa ucząca podstaw sieci komputerowych, szyfrowania, paradygmatu klient-serwer i Internetu. Znalazłem niektóre z zajęć powtarzające się po 6.004 i 6.02, które miały nakładające się treści, ale nadal było to przydatne. Popełniłem błąd, nie skupiając się wystarczająco na zadaniach do przeczytania, ponieważ to właśnie z nich pochodzi większość nauki.
Ocena Scotta: 4/5
6.013: Electromagnetics and Applications – COMPLETED
Bez wątpienia, najtrudniejsza klasa, którą wziąłem w programie do tej pory. Klasa wykorzystuje rachunek wektorowy, transformacje i notację złożoną, oprócz ogólnego rozszerzenia zasad elektromagnetyzmu nauczanych w 8.02. Silny fundament w tematach 6.003, 6.002, 18.02, 18.03 i 8.02 jest dobrym pomysłem, jeśli chcesz spróbować tej klasy. Zdałem egzamin ledwie ledwo, więc jest to zdecydowanie temat, który chciałbym powrócić i udoskonalić w pewnym momencie w przyszłości, ponieważ wyraził wiele ciekawych pomysłów.
Ocena Scotta: 3/5
14.02: Principles of Macroeconomics – COMPLETED
Miałem również makroekonomii przed kiedy zrobiłem mój stopień licencjata, więc to było podsumowanie głównie. To powiedziawszy, pomyślałem, że wersja MIT kursu i materiałów pomocniczych była o wiele bardziej przystępna. Jest to świetna klasa do wzięcia, jeśli chcesz zrozumieć gospodarkę jako całość. Uwaga: Oryginalny kurs, który wziąłem, został zamieniony przez MIT. Tutaj jest zamiennik.
Ocena Scotta: 3/5
24.242: Logic II – COMPLETED
Ta klasa była całkowicie oparta na 8 zadaniach domowych, więc ilość materiału do testowania, przez który przeszedłem, była słabsza niż wiele innych, niestety. To powiedziawszy, uwielbiałem te zajęcia, ponieważ twierdzenia o niezupełności Godela reprezentują jedną z najgłębszych idei, jakie kiedykolwiek widziałem na zajęciach.
Ocena Scotta: 5/5
6.011: Intro to Comm., Control and Signals – COMPLETED
Ta klasa była rozszerzeniem 6.003, Sygnały i systemy. Bierze podstawowe pojęcia analizy sygnałów i filtrów i rozszerza je na reprezentacje stan-maszyna i sygnały stochastyczne. Włączenie sygnałów losowych jest bardzo przydatne do obsługi hałasu, więc wiele koncepcji w tej klasie są bardziej praktyczne niż ich idealne odpowiedniki w 6.003. Darmowy podręcznik / notatki kursowe był bardzo przydatny.
Ocena Scotta: 4/5
24.244: Modal Logic – COMPLETED
Logika modalna jest logiką możliwości i konieczności i rozszerza podstawowy rachunek predykatów. Jest to interesująca logika do studiowania, ponieważ może reprezentować wiele różnych systemów logicznych, w zależności od przyjętych aksjomatów (deontycznych, aletycznych, tensyjnych, itd.). Egzamin końcowy był na wynos, więc zdałem go w ciągu dwóch dni.
Ocena Scotta: 3/5
14.20: Industrial Organization – COMPLETED
Wstępne kursy ekonomiczne zazwyczaj upraszczają analizę poprzez założenie doskonałej konkurencji lub monopolu. Ta klasa usuwa to założenie i rozważa, jak firmy konkurują strategicznie przeciwko sobie. Te zajęcia naprawdę wzbudziły moje zainteresowanie nauką teorii gier. Niestety nie zdawałem sobie sprawy z tego, że przykładowy egzamin końcowy był dość ograniczony jako pokrycie treści, ale to było najlepsze, co mogłem zrobić.
Ocena Scotta: 3/5
14.23: Government Regulation of Industry – COMPLETED
Treść tej klasy była bardzo podobna do 14.20, chociaż skupiała się bardziej na kontekście historycznym i ramach politycznych niż na stronie teorii gier. Interesująca klasa, sekcje czytania podręcznika były dość długie (prawie 900 stron), jednak poziom analizy matematycznej był lekki, więc ułatwiał czytanie.
Ocena Scotta: 3/5
14.48J: Economics of Education – COMPLETED
Zważywszy na charakter mojego wyzwania, była to zabawna klasa, ponieważ badała różne teorie edukacji. Większość klasy czuła się jak dyskusja w podstawowej ekonometrii, ponieważ wydaje się, że literatura jest niejednoznaczna w wielu kluczowych kwestiach (czy mniejsze klasy są lepsze? czy programy bonów działają?). Klasa zbadała również różnice między standardową teorią kapitału ludzkiego w edukacji a wyjaśnieniem sygnalizacyjnym, chociaż, po raz kolejny, przedstawiona literatura była w większości niejednoznaczna.
Ocena Scotta: 3/5
6.005: Elements of Software Construction – COMPLETED
To jest wymagana klasa rozwoju oprogramowania MIT. To był trudny jeden, nie dlatego, że jest zbyt intelektualnie wymagający, ale z powodu ilości pracy. Składa się z 3 projektów zespołowych, 3 projektów indywidualnych i kilku laboratoriów (zadania same w sobie). Byłem niezdecydowany co do podjęcia tej klasy, ponieważ ograniczenia czasowe wyzwania sprawiają, że trudno jest podjąć się takich zajęć, jednak w końcu doszedłem do wniosku, że jedynym sposobem jest po prostu wykonanie całej pracy.
Udało mi się ukończyć klasę w około 3 tygodnie, rozłożone na około dwa miesiące. To była jedna z najbardziej satysfakcjonujących klas, nawet jeśli była również najbardziej czasochłonna. Chciałbym zostać dłużej z każdym projektem, szczególnie z końcową aplikacją komunikatora, którą zbudowałem od podstaw, aby upiększyć ją o więcej funkcji. Klasa jest doskonałym wyborem, jeśli jesteś już początkującym programistą, ale chcesz nauczyć się więcej wysokopoziomowych pomysłów projektowych, aby nie tylko pisać działający kod, ale dobrze zaprojektowany kod.
Zamieściłem tutaj wszystkie projekty, które napisałem, chociaż będziesz potrzebował zainstalowanej Javy, aby je uruchomić. Zamieściłem również opisy trzech projektów (przepraszam za brak kontrastu w skanach!)
Ocena Scotta: 5/5
- Dostęp do materiałów kursu za darmo
- Cały kod
- Pisanie projektów
- MIT Provided Material and Assignment Specs
6.801: Machine Vision – COMPLETED
Ta klasa uczy podstaw, jak korzystać z algorytmów komputerowych, aby zobaczyć, głównie w kontekście kierowania robota do wykonywania działań opartych na tych obrazów. Tematy obejmują przetwarzanie obrazów binarnych, wykrywanie krawędzi, rozszerzone powierzchnie Gaussa, orientację i fotogrametrię. Kurs został oceniony przez dwa quizy domowe i zaliczony jako jedna z dwóch klas na poziomie absolwenta, które wziąłem w wyzwaniu.
Ogółem, klasa była wymagająca, wykorzystując techniki analizy Fouriera, rachunek wektorowy, algebrę liniową, programowanie kwadratowe i rachunek wariacji, więc była to prawdopodobnie najbardziej wymagająca klasa, jaką wziąłem w zastosowaniu matematyki. Niestety nie było żadnych zadań programistycznych, które byłyby interesujące.
Ocena Scotta: 5/5
- Dostęp do materiałów kursu za darmo
- Moje egzaminy
- MIT Official Solutions (and Questions)
6.837: Computer Graphics – COMPLETED
Ta klasa uczy podstaw grafiki komputerowej, głównie ray tracing, chociaż metody scanline są nauczane. Ocena była oparta całkowicie na zadaniach (były dwa pomniejsze quizy, ale nie miały rozwiązań, więc ich nie używałem). Zaczynając od podstawowego ray tracera i płaskiego cieniowania, zadania stopniowo rozbudowywały ray tracer do matowego cieniowania, błyszczących odbić, rzucanych cieni, przezroczystych powierzchni z indeksami załamania, odbicia lustrzanego i teksturowania proceduralnego. Projekt został również wykonany na tworzeniu struktury danych akceleracji siatki, która nie ma efektu wizualnego, ale znacznie przyspiesza stosunkowo powolne podejście ray tracingu do grafiki.
Szczegóły na temat używanego środowiska programistycznego są zawarte w README.rtf dla kodu. Plik jest dość duży, ale zawiera również wszystkie wyrenderowane obrazy, więc możesz spojrzeć na dane wyjściowe, nawet jeśli nie kompilujesz/uruchamiasz konkretnych scen, o których mowa. (Dla porównania, oficjalne wyniki MIT są dołączone jako sample_res.pdf do każdego zadania, więc możesz zobaczyć jak mój raytracer wypada w porównaniu). Uwaga: Oryginalny kurs, który wziąłem zmienił się. Oto zamiennik.
Ocena Scotta: 5/5
- Dostęp do materiałów kursu za darmo
- Mój kod
- MIT Supplied Code (and Sample Answers)
COSC 545: Theory of Computation – COMPLETED
Ta klasa nie była kursem MIT, ale klasą absolwentów w teorii obliczeń prowadzoną przez Cala Newporta na Georgetown University. Był to temat, który naprawdę chciałem zbadać po polubieniu obu kursów algorytmów MIT, ale kursowi teorii złożoności MIT brakowało jakichkolwiek narzędzi oceny, których mógłbym użyć. Niektóre interesujące pomysły z kursu to, które typy problemów mogą być rozwiązane przez algorytmy (co oznacza, że istnieje proces rozwiązywania każdej instancji problemu) i ograniczenia na szybkość i pamięć wymaganą do rozwiązania niektórych klas.
Zawiera również obszerną dyskusję na temat jednego z najważniejszych i nierozwiązanych problemów w matematyce, czy P=NP, który miałby głębokie implikacje dla społeczeństwa w zależności od odpowiedzi i pomimo dziesięcioleci pracy i nagrody w wysokości miliona dolarów za jego rozwiązanie, nikt nie był w stanie odpowiedzieć na niego.
Były dwa egzaminy, które napisałem i oceniłem, ponieważ nie były one skumulowane.
Ocena Scotta: 5/5
- Dostęp do materiałów kursu za darmo
- Moje egzaminy
Mój MIT Challenge TEDx Talk
FAQ dla MIT Challenge
- Jakich zasad przestrzegasz?
- Czy wykonujesz wszystkie zadania, prace i projekty?
- Czy Twój program nauczania różni się od programu MIT?
- Co się stanie, jeśli nie zaliczysz zajęć?
- Dlaczego to robisz? Czy po prostu uwielbiasz się uczyć?
- Czy dostaniesz za to dyplom?
- Czy zajęcia odbywają się seryjnie, czy to nie jest po prostu wkuwanie do testów?
- Jakie masz doświadczenie z tym przedmiotem?
- Jestem blogerem/reporterem/dziennikarzem, jak mogę się z tobą skontaktować, aby podzielić się tą historią?
Q) Jakich zasad przestrzegasz?
Ponieważ nie jestem zapisany do MIT (ani w żaden sposób z nimi związany), musiałem stworzyć własne zasady, aby uczynić wyzwanie sprawiedliwym, a jednocześnie wykonalnym. Podstawowe zasady są proste:
- Uważam zajęcia za zakończone sukcesem, jeśli mogę zdać egzamin końcowy (co zazwyczaj oznacza uzyskanie oceny co najmniej 50%, chociaż dążę do znacznie wyższej).
- Piszę egzamin pod tymi samymi ograniczeniami co student: żadnego zaglądania do pytań lub rozwiązań przed zajęciami, żadnych notatek ani zakazanych materiałów, te same ograniczenia czasowe (domyślnie 3 godziny, jeśli nie jest to określone).
- Sam oceniam prace, porównując je z rzeczywistymi rozwiązaniami MIT. Zamieszczam oba rozwiązania, więc każdy może dwukrotnie sprawdzić moje metody oceniania.
Pamiętajcie, że to są tylko minimalne wymagania mojego wyzwania. W przypadku zajęć, które mają znaczący komponent programistyczny, staram się wykonywać reprezentatywne zadania programistyczne, w stopniu w jakim jest to możliwe.
Q)Czy wykonujesz wszystkie zadania, referaty i projekty?
W przypadku zajęć teoretycznych lub opartych na matematyce, egzaminy końcowe są ogólnie rzecz biorąc wyczerpującą podstawą do oceny, więc użyję ich jako mojej oceny. Wciąż w końcu robię większość lub część zadań i quizów jako przygotowanie, ale ponieważ nie mogę utrzymać spójności z tym kryterium w całym wyzwaniu (wiele zadań jest niedostępnych lub niemożliwych do obiektywnej oceny), robię je w sposób nieformalny.
Dla klas ze znaczną ilością pracy programistycznej lub praktycznych problemów projektowych, będę starał się wykonać większość zadań. Jednakże, ponieważ są one trudniejsze do oceny, wciąż polegam na egzaminach końcowych jako głównym kryterium dla tych zajęć.
Q) Czy Twój program nauczania różni się od programu MIT?
Spędziłem prawie miesiąc próbując poskładać razem najbliższe lustro rzeczywistego programu nauczania informatyki MIT, który mógłbym naśladować. Niestety, nie mogę tego zrobić idealnie, ponieważ niektóre klasy są niemożliwe do oceny (w tym laboratoria i klasy badawcze), a inne nie miały żadnego dostępu online.
Biorę taką samą liczbę godzin kredytowych, jak rzeczywisty stopień MIT, więc tam, gdzie nie mogłem wziąć jednej klasy, zastąpiłem ją podobną alternatywą. Pod względem objętości wiedzy do nauczenia się, dlatego mój program nauczania jest podobny do tego, który MIT sugeruje swoim studentom.
Jedyny inny wyjątek z MIT ma do czynienia z electives. Biorę różne niekomputerowe klasy, aby jak najlepiej naśladować wymagania HASS dla studentów MIT. Nie są one idealnie dopasowane, ponieważ program nauczania online dla sztuk pięknych jest znacznie słabszy niż dla nauk ścisłych na MIT.
Możesz zobaczyć rzeczywisty program nauczania MIT dla informatyki tutaj.
Q) Co się stanie, jeśli oblejesz klasę?
Zważywszy na tempo, w jakim próbuję, myślę, że to nieuniknione, że obleję klasę. Moim głównym wymogiem jest zdanie egzaminu końcowego, więc jeśli go nie zdam, pozwalam sobie na inny egzamin po nim.
Moją strategią jest przyjęcie podejścia fail-first, aby być bardziej efektywnym z moim czasem na zajęciach, gdzie mam kilka egzaminów końcowych, które mogę wykorzystać jako podstawę oceny. To bardzo różni się od uniwersytetu, gdzie porażka może być prawdziwym niepowodzeniem. To zaleta samokształcenia nad sztywnymi instytucjami formalnymi.
Q) Dlaczego to robisz? Czy po prostu uwielbiasz się uczyć?
Nikt nie lubi się uczyć, ale każdy chce być mądry. Nauka, dochodzenie do tych spostrzeżeń i poczucie bycia mądrzejszym w danym temacie są niezmiernie satysfakcjonujące. Szkoda, że wielu z nas zapomniało o tym po latach karzącej formalnej edukacji.
Przyznaję, mogę być trochę szalony, lub arogancki, za chęć ukończenia 4-letniego programu w zaledwie 12 miesięcy. Jednak moją prawdziwą motywacją jest pokazanie ludziom, że szybsza nauka jest możliwa i że może być jednocześnie przyjemniejsza.
Q) Czy dostaniesz dyplom za zrobienie tego?
Nie, i właśnie o to chodzi. Nasze społeczeństwo błędnie utożsamia wiedzę z akredytacją. Zdobycie kawałka papieru jest świetne, a w wielu dziedzinach pracy jest to całkowicie konieczne. Ale równanie jest wykonane tak mocno, że ludzie zapominają, że te dwie rzeczy są różne.
Już mam karierę jako pisarz i właściciel małego biznesu. Nigdy nie chcę pracować dla dużej korporacji, gdzie HR może skontrolować mój brak dyplomu. Dla mnie, chcę tylko nauczyć się informatyki na wypadek, gdybym chciał rozpocząć nowy biznes lub pracować dla start-upu.
Nie mam nic przeciwko college’owi. Uniwersytet był dla mnie niesamowitym i wartościowym doświadczeniem i może być nim również dla Ciebie. Mam tylko nadzieję, że pokazując alternatywę, ludzie, którzy czują, że obecny system nie działa dla nich, mogą znaleźć inną ścieżkę.
Q) Czy to nie jest po prostu wkuwanie do testów?
Nie, ale różnica jest subtelna. Większość zajęć opiera się na wcześniejszych koncepcjach, więc moim celem jest rozwinięcie głębokiego zrozumienia, które mogę wykorzystać. Zapamiętywanie jest zazwyczaj ucieczką do zapamiętywania, aby szybko zdać test i zapomnieć o nim. Zrozumienie jest trudniejsze, ale niekoniecznie bardziej czasochłonne (i wymóg, jeśli każda klasa opiera się na jednej przed nią).
Jako aktualizacja, Od pierwszych czterech klas, postępuję 3-4 klasy równolegle w tym samym czasie. Chociaż wymaga to przeglądu w znacznie krótszym okresie czasu niż typowy (1 miesiąc zamiast 1 semestru), zwiększa korzyści z rozłożonego powtarzania.
Ostatecznie, moja zdolność do zrozumienia i wykonania odpowiednio na wyższym poziomie klas będzie testem mojej metody, ponieważ większość klas dla początkujących służy głównie jako uziemienie dla trudniejszych klas starszych.
Q) Jakie masz doświadczenie z tym tematem?
Kiedy byłem jeszcze w liceum, trochę programowałem, głównie tworząc małe gry komputerowe. Dodatkowo, wziąłem 4 lekcje informatyki na poziomie uniwersyteckim, kiedy uczęszczałem na Uniwersytet Manitoba, aby uzyskać stopień biznesowy. Tak, mam pewne wcześniejsze doświadczenie z programowaniem, które da mi przewagę w tym wyzwaniu. To powiedziawszy, mój wcześniejszy poziom umiejętności nie jest prawdopodobnie daleki od wielu studentów CS faktycznie uczęszczających do MIT i dla których program nauczania jest oparty.
W dodatku, ukończyłem pierwszy kurs 8.01 Mechaniki Klasycznej jako eksperyment pilotażowy dla tego głównego wyzwania w lipcu 2011 roku. Dlatego też liczba zajęć, które próbuję przeprowadzić w ciągu 12 miesięcy wynosi oficjalnie 32.
Q) Jestem blogerem/reporterem/dziennikarzem, jak mogę się z tobą skontaktować, aby podzielić się tą historią?
Możesz się ze mną skontaktować pod adresem [email protected] lub użyć formularza tutaj. Będę dość zajęty (z oczywistych powodów), więc z góry przepraszam, jeśli zajmie mi to trochę czasu, aby przejść przez moje e-maile, ponieważ zwykle jestem offline, gdy pracuję nad kursem.