Uczę się Java od kilku dni.
Chcę odnieść sukces jako programista korporacyjny. Jakie algorytmy i struktury danych powinienem być dobrze zorientowany? Jakie książki poleciłbyś mi?
Aby odnieść sukces jako programista Java, czy muszę znać wszystkie zaawansowane algorytmy, takie jak podane w CLRS?
Czy możesz zasugerować mi listę tematów, których powinienem się nauczyć w porządku malejącym według ich priorytetów?
Podaj mi nazwy niektórych tematów, które muszę znać. Jak wyszukiwanie, sortowanie, wykresy, drzewa itp.?
Dobrze, że chętnie poszerzasz swoje umiejętności programistyczne. Ważne jest jednak, aby nie traktować algorytmów jako katalogu rzeczy do zapamiętania. Aby zostać dobrym programistą (w Javie lub czymkolwiek innym), musisz zrozumieć analizę algorytmiczną.
Nauczysz się tego, ucząc się wybranych struktur danych i algorytmów oraz ucząc się analizować ich wydajność pod względem czasu i przestrzeni (pamięci). Wyszukiwanie, sortowanie, wykresy, drzewa, hałdy, stosy i wszystkie te dobre rzeczy. Powinno to również podążać za podstawami teorii obliczeń i matematyki dyskretnej (nawet jeśli w dziedzinie Javy nigdy nie będziemy mogli bezpośrednio korzystać z tych dwóch tematów - ich korzyści są pośrednie).
Oddziel naukę języka programowania (w Twoim przypadku Java) od nauki analizy algorytmicznej (która różni się od „zapamiętywania” algorytmów i struktur danych).
George T. Heineman, Gary Pollice i Stanley Selkow „Algorytmy w pigułce” to dobry początek. „Algorytmy” Sanjada Dasgupty, Christosa Papadimitriou i Umesh Vazirani to kolejny dobry podręcznik licencjacki.
Najlepiej jest wziąć udział w 9-12 kursach kredytowych z zakresu programowania przed podjęciem studiów licencjackich na poziomie 3000 algorytmów. Poza tym samokształcenie z dwiema książkami, o których wspomniałem, może być dobrą alternatywą (samokształcenie może nie być jednak dla wszystkich).
Powodzenia!