Wpis z mikrobloga

tl;dr - zamierzam przerobić 30 kursów online w celu zdobycia wiedzy na poziomie inżyniera informatyki.

Jestem na wykopie od dawna, niedawno temu usunąłem konto, ale teraz wróciłem (syndrom sztokholmski motzno), bo jest pewien projekt, który chciałbym przedsięwziąć. Jestem na 2. roku mechatroniki. Coraz częściej myślę, że bardziej niż mechanika kręci mnie programowanie.
Jestem na wydziale, na którym niestety zbyt dużo tej dziedziny nie uświadczę, dlatego stawiam sobie pewien cel. Ułożyłem 4-semestralne "studia" złożone z kursów MOOC (online na Coursera, edx, udacity). Opierałem się na tym syllabusie: https://github.com/mvillaloboz/open-source-cs-degree

Znam podstawy programowania w Pythonie, uczę się tworzenia aplikacji w Androidzie (o czym poniżej). Na pierwszym roku uczyłem się algebry liniowej i analizy z równaniami różniczkowymi, dlatego takich kursów też nie robię. Natomiast przerobić muszę statystykę, gdyż tego przedmiotu na studbazie nie miałem.

1 semestr:
- Wstęp do informatyki - miałem na studiach, więc uznaję go za zaliczony.

- Intro to data structures - podstawowy przedmiot na wszystkich studiach informatycznych.

- Linux Command Line Basics - na ogół znam komendy unixowe, ale chciałbym to jakoś usystematyzować

- How to use Git and Github - tak samo jak wyżej, korzystam już z Gita, ale dla ścisłości i własnego spokoju chcę przejść ten krótki kurs. BTW, polecam poczytać o Student Packu, m.in. rok bezpłatnych prywatnych repozytoriów za potwierdzenie, że jest się studentem.

- Mathematics for Computer Science - inaczej Matematyka dyskretna. Uważam, że będzie to najtrudniejszy kurs w tej części. Pod koniec napiszę egzamin dostępny na platformie OCW MIT i porównam z kluczem odpowiedzi. Zaliczone będzie przy >=50%.

- Android Basics - 5 kursów z Androida od Udacity. Dlaczego Android zaraz na początku? Tak jak pisałem powyżej, zacząłem już miesiąc temu tę serię kursów, dlatego wkładam to w 1. sem. Aktualnie jestem pod koniec 2. kursu (User Input) i bardzo mi się podoba. Co do szacowanego okresu odbywania kursu - napisali, że na drugi kurs trzeba przeznaczyć ok. 4 tygodnie, a ja zrobiłem go w zasadzie w niecałe dwa, więc mam nadzieję, że pozostałe kursy też zabiorą mi mniej czasu niż jest to przewidywane.

- Intro to Computer Architecture

- Differential equations in action - wydaje mi się bardzo ciekawy, dlatego go biorę. Krótko mówiąc, za pomocą Pythona rozwiązuje się w nim równania różniczkowe w celu rozwiązania danego problemu fizycznego.

- W międzyczasie uczę się programowania mikrokontrolerów (z bluebooka Kardasia), gdyż jest mi to potrzebne do działalności w kole naukowym, dlatego nie biorę kursu stricte na temat systemów wbudowanych.

2. semestr:
- Intro to Statistics
- Intro to Data Analysis
- Intro to Algorithms
- Intro to Operating Systems
- Intro to Relational Databases
- Web Development
- Interactive 3D Graphics
- UX Design for Mobile Developers

3. semestr:
- Intro to Theorical Computer Science
- Programming Languages
- Computer Architecture - bardziej zaawansowany kurs o architekturze komputera
- Intro to Systems Engineering
- Real-time Systems - systemy czasu rzeczywistego
- Principles of Computing
- Advanced Operating Systems
- UML Class Diagrams for Software Engineering - 15-godzinny kurs na temat diagramów UML

4. semestr:
- Intro to Machine Learning - najlepszy kurs w tym temacie według opinii w internecie
- Intro to Parallel Programming by NVIDIA
- Intro to Artificial Inteligence
- Software Development Process
- Computer Networking
- Compilers
- Artificial Intelligence for Robotics

W sumie jest 30 kursów. Może ktoś kojarzy Scotta Younga i jego MIT Challenge, gdzie w rok przerobił i zdał wszystkie przedmioty potrzebne do uzyskania licencjata informatyki na MIT. Z góry zaznaczam, że moja nauka będzie bardziej luźna - zarówno kursy są łatwiejsze jak i ja nie zamierzam spędzać nad tym 8h dziennie jak to było w przypadku tamtego challengu. W moim przypadku będę starał się uczyć się z powyższych kursów przez ok. 15-20h tygodniowo.
Jaki będzie format nauki? Jednocześnie 2 kursy w ciągu miesiąca. Oczywiście, kilkunastogodzinne kursy typu podstawy terminalu linuxowego, podstawy gita, czy diagramy UML są dużo krótsze, dlatego zapewne zrobię je w kilka dni.
Jak będę oceniał czy zdałem dany kurs? W przypadku udacity ćwiczenia są robione na bieżąco (czasem jest egzamin). Na courserze i edx robi się też zadania domowe, które potem można porównać z zadaniami innych użytkowników. Na OCW MIT dochodzi jeszcze egzamin pisemny.
Dlaczego piszę o tym na mirko? Żeby w trudnych chwilach mieć motywację, by tego nie rzucić ( ͡° ͜ʖ ͡°)
Swoje poczynania będę dokumentował pod tagiem #studiacs. Dwa razy w tygodniu będę opisywał czego się nauczyłem i jakie problemy napotkałem.
Zaczynam od matematyki dyskretnej i końcówki drugiego kursu na temat Androida (User Input).
Na razie mogę króciutko powiedzieć o tym co robię na kursie Androida.

Zacząłem pierwszy kurs (User Interface) ok. 3 tygodni temu. Byłem laikiem, nigdy nie tworzyłem aplikacji na Androida. Moim celem jest stworzenie dosyć złożonej aplikacji, która miałaby jakieś ciekawe zastosowanie - mam jeden pomysł, ale na razie nie zdradzam :)
W tym momencie orientuję się na podstawowym poziomie w
- XMLu
- layoutach
- pozycjonowaniu widoków
- tworzeniu podstawowej logiki małej, jednostronicowej aplikacji
Potrafię też pobrać tekst wpisany wcześniej w EditView, "zamrozić" EditView, wykorzystać tekst w innym miejscu w programie, a następnie "odmrozić" EditView i wpisać inny tekst.
Aplikacja pobiera nazwę użytkownika, (trzeba potwierdzić klawiszem "TAK SIĘ NAZYWAM"), po czym należy wybrać liczbę (a nie "ilość") pewnego produktu o cenie 5zł. Gdy chcemy zmienić swoją nazwę, klikamy "ZMIEŃ", pole się odblokuje i możemy wpisać inną nazwę. Dzisiaj dowiedziałem się w jaki sposób XML działa z Javą w celu wygenerowania widoku aplikacji. Aktualnie jestem w trakcie ostatniego rozdziału, w którym rozwijają koncepty dotyczące programowania obiektowego w Javie.

Tak mniej więcej będą wyglądały moje wpisy. Będę pisał o tym, o czym się uczyłem, dlatego na pewno będą zdarzały się błędy, czy to w tekście czy w kodach źródłowych. W związku z tym, jeśli ktoś zauważyłby, kwiatka w kodzie, który jest postrzegany jako zły nawyk, lub że napisałem bzdurę w tekście to poproszę o poprawienie mnie. Mniej więcej dwa razy w tygodniu będę zamieszczał tego typu przemyślenia dla każdego przedmiotu.
Dzisiaj tylko Android, bo matematykę dyskretną zaczynam za 10min.

Jeśli was to interesuje to obserwujcie tag #studiacs (nie mylić z Counter-Strikiem, hehe), a jeśli nie to trudno ( ͡° ʖ̯ ͡°)
Następny post w piątek.
Pozdrawiam cieplutko.
#studiacs #informatyka #nauka #naukaprogramowania #udacity #edx #coursera
frezarkotokarka - tl;dr - zamierzam przerobić 30 kursów online w celu zdobycia wiedzy...

źródło: comment_WG9pRzow0dX1HFztriFnrklL1fB7Y7Dd.jpg

Pobierz
  • 57
@TMBRK: A właśnie, zapomniałem napisać o cenie :D Wszystko jest za darmo. Nie płacę za to nic. Czy są uznawane to nie wiem, ale bardziej liczą się umiejętności niż papier. Chociaż nie ukrywam, że do profilu na LinkedIn sobie wpiszę :D Co do egzaminów, będę zdawał to, co jest potrzebne do zdania kursu. Na kursach MIT są egzaminy i je będę musiał zdać. Na pozostałych stronach są zazwyczaj zadania (rachunkowe, projekty)
Wrzucaj wszystko co napiszesz na własne konto na githubie i nie wstydź się kodu.

Rób appki, pisz programy (nawet takie prymitywne proof-of-concept "umiem takie coś") i pisz kod.

Taka podstawowa zasada:
1 godzina samodzielnego (wraz z google i stackoverflow) pisania kodu > 2 godziny biernego oglądania kursu czy patrzenia jak koleś klepie w klawiaturę na YT.

Nnie wpadnij w pułapkę niekończącej się nauki teorii, bo to gorsze niż prokrastynacja.

Przyczepię się jeszcze
@metoothanks: Dzięki za opinię. Co do rozpiętości materiału, to masz rację, że jest on dosyć szeroki :D Szczerze mówiąc, chciałbym jak najszerzej poznać dziedziny informatyki, dlatego właśnie takie przedmioty. Całkiem możliwe, że z czasem będę zmieniał kursy (mam wątpliwości na przykład co do Advanced Operating Systems czy Computer Networking) na inne, które bardziej będą mi się podobać. Jeśli chodzi o ML, AI, to są to kursy, na które najbardziej czekam :D
@frezarkotokarka: Jeżeli faktycznie myślisz o zostaniu programistą, to zamiast przebijać się przez kursy , których prawdopodobnie nigdy nie wykorzystasz (AI/Machine Learning/grafika 3d), skupiłbym się na języku (lub generalnie technologi - web/mobile/desktop etc.), w którym chcesz się rozwijać. Zawsze dobry pomysłem jest też zapoznanie się z tematami nie związanym z żadnym konkretnym językiem, ale samym wytwarzaniem oprogramowania (jak np. wzorce projektowe, zasady pisania czytelnego i rozszerzalnego kodu, TDD itp.). Moim zdaniem, dużo