Plan juz masz w 1 poście tego wątku.
Ja uczyłem się po pracy, w tygodniu jednocześnie studiując informatykę (zajęcia w weekendy), więc wiedze przyswajałem równolegle. Na uczelni też mieliśmy jave, ale więcej nauczyłem się z kursów na Udemy, bo na uczelni poznajesz raczej same podstawy (tym bardziej ze na 1 roku to była podstawowa Java, rozszerzona jest na 3 roku - chociaż na większości uczelni to w ogóle mają tylko C++). Przerobiłem kilka kursów: z czystej Javy, ze Springa, Z Gita. Później jeszcze inne kursy ale to już po rozpoczęciu pracy.
Java jest w ogóle dobrym jezykiem na poczatek, bo jest wzorowana na C++ ale poabawiona tych najtrudniejszych rzeczy zwiazanych z C++, jak m.in. koniecznosc zarzadzania pamiecią.
Jesli chodzi o przedmioty informatyczne jakie warto opanowac to:
1. Wprowadzenie do Informatyki (ewentualnie podstawy informatyki lub Wprowadzenie do programowania bo roznie sie to moze nazywac) w szczególnosci przekształcenia na system binarny i szesnastkowy, ZU1/ZU2, operacje bitowe, arytmetyka binarna (dodawanie, odejmowanie, mnożenie i dzielenie liczb binarnych w kodzie zwykłym, ZU1 i ZU2), możesz też liznąć Odwrócona Notację Polską, translacja na ONP i spowrotem oraz na jezyk symboliczny i jak Ci sie zechce Maszynę Turinga i Automat Deterministyczny i Niedteterministyczny jako wstęp do algorytmiki i systemów cyfrowych.
Na necie znajdziesz darmowe skrypty. Nie chodzi tu o przeczytanie peirwszego lepszegos kryptu, ale o umejętnośc rozwiązania zadan z konkretnych zagadnień. Generalnie WDI pozwala określić czy ktoś w ogóle nadaje się na programiste czy nie. Jesli zakumasz maszynę Turinga a wczesniej nie bedziesz mieć problem z pozostałymi rzeczami to znaczy że możesz być programistą. Jesli nie zakumasz, to znaczy że to nie jest zajęcie dla Ciebie.
2. Logika (Logika dla informatyków) - w szczególności Algebra Boola (tj arytmetyka minarna) w tym prawa De Morgana, postać normalna itd., logika predykatów, relacje, zbiory, klasy abstrakcji
3. Algorytmy i struktury danych, w tym dowodzenie twierdzeń metodą indukcji matematycznej, algorytmy przyrostowe, algorytmy rekurencyjne (dziel i zwyciężaj), rozwiązywanie równań rekurencyjnych, złożoność obliczeniowa we wszystkich notacjach z naciskiem na O-notację, złożoność pamięciowa, algorytmy sortowania sortowania (typowe zadania to obliczyc zlozonosc takiego algorytmu jedną z wybranych metod, co w przypadku algorytmów rekurencyhjnych wymaga rozwiązania równania rekurencyjnego itd). Wreszcie bardzo wazne - dynamiczne struktury danych. Stosy, kolejki, listy oraz struktury drzewiaste (np. drzewo BST). Trzeba rozumieć jak to działa. Nie trzeba umieć tego na pamięć, ale trzeba umieć zakodzić taka strukturę. Widziec różnice w złozonosci algorytmów itd.
Na zajeciach takie algorytmy pisze się najcześciej w C/C++, chociażby ze względu na mechanizm wskaźników nieobecny jawnie w javie.
4. Podstawy techniki cyfrowej: Bramki logiczne, mapy Karnaugh, Układy kombinacyjne i sekwencyjne, multipleksery, przerzutniki, kodery, generatory, liczniki synchroniczne i asynchroniczne. Tu chodzi o zrozumienie jak działaja systemy cyfrowe.
5. Architektura systemów komputerowych w szczególnosci podstawy assemblera, zeby rozumieć jak działa procesor.
6. Bazy danych, konkretnie relacyjne bazy danych i sam język SQL.
7. Inzynieria oprogramowania
Wiedzy do ogarniecia jest duzo dlatego, warto sobie to dozowac z umiarem. Pracując na frontendzie nie interesuje Cie jak działa procesor, ani systemy cyfrowe. Z kolei wiedze z zakresu algorytmiki, podstaw informatyki oraz logiki (w szczególnosci logikę binarną) posiąść zawsze warto. Weź tez pod uwagę że na rozmowie nikt Cie nie zapyta o zadanie z siatki Karnaugh, ale już pytanie jaką strukturę danych zastosować lepiej dla danego kejsu np. czy ArrayListe czy LinkedListe to już może paść. A żeby na takie pytanie odpowiedzieć to trzeba wiedzieć czym się rózni tablica od listy jedno czy dwukierunkowej, a tego nie zrozumiesz do puki nie ogarniesz zakresu przedmiotu Algorytmy i Struktury Danych.
Takie pytania generalnie padają często na rozmowach. No a jeśli chcesz byc profesjonalnym programistą to wypadało by rozumieć co się tam kryje pod spodem danej funkcji/libki, bo tylko wtedy możesz to rozmyślnie wykorzystywać.
W ogóle to polecam Ważniaka. Tu jest program studiów inofrmatycznych oraz duzo materiałów:
http://wazniak.mimuw.edu.pl/index.php?t ... 2%C3%B3wnaSorry za literówki, ale nie mam czasu dokładnie redagować tego tekstu.