Programowanie dynamiczne:
Dynamic Programming for Coding Interviews: A Bottom-Up approach to problem solving
Algorytmy w Pythonie:
Data Structures and Algorithms in Python - Michael T. Goodrich
Dużo osób podaje proponowane pozycje z literatury dot. algorytmiki a mnie nurtuje inne pytanie:
Czy np. umiejętność **implementacji **jakiegoś drzewa (binarnego / czerwono czarnego) będąc np. jakimś przeciętnym web devem ma sens?
Pytam o umiejętność stricte **implementacji **bo nie wątpię, że koncepcyjna znajomość danej struktury min. jej wad i zalet może okazać się przydatna dobierając rozwiązanie w aplikacji ale np. opierając się o implementację dostarczoną np. z JDK (TreeSet/TreeMap).
Analogicznie z różnego rodzaju sortowaniem. W pracy raczej nikt, nie będzie oczekiwał, że będę pisał własną implementację quick sorta bo ktoś to już zrobił i na pewno zrobił to lepiej.
no tylko jeżeli rozumiesz koncept i znasz podstawy języka, to w większości przypadków jaki problem zaimplementować podstawowy ds? oczywiście nie będzie to pewnie std:lib ready bo edge casy
@RequiredNickname: Na pewno będzie to dobre ćwiczenie. Ja byłem na studiach, na których takie rzeczy robiliśmy (tych studiów nie skończyłem, ale najważniejsze przedmioty algorytmiczne zdałem) i sam lubiłem pokodzić czasami algorytmy (ostatnio rzadziej to robię niestety) dla sportu. Dobrze coś takiego zrobić przynajmniej raz w życiu, później wiesz, że spokojnie to zrobisz jeśli będziesz musiał. Mi się nigdy to nie przydało w pracy, ale na pewno są osoby, którym się przydało i nie wiem czy się nie przyda, ale tak można powiedzieć o wielu rzeczach. Obecnie i tak nie napisałbym żadnego drzewa łącznie gdzie jest reorganizacja elementów bez przypomnienia sobie algorytmu, ale co to za problem jak się wie czego szukać.
RequiredNickname napisał(a):
Analogicznie z różnego rodzaju sortowaniem. W pracy raczej nikt, nie będzie oczekiwał, że będę pisał własną implementację quick sorta bo ktoś to już zrobił i na pewno zrobił to lepiej.
Nie chodzi o to, że w pracy będziesz implementować Selection Sort.
Chodzi o to, że jak nie dawałbyś sobie rady z zaimplementowaniem Selection Sort i wyleciał ze studiów z powodu wstępu do algorytmów (dołożone do wylotu granice funkcji itp) to znaczy, że masz poważne problemy z podstawowym abstakcyjnym myśleniem.
Koncepcja: mniejsze na lewo, większe na prawo to też nie rocket science i po ciężkich trudach, wspomaganiu tutorialami, pytaniami każdy powinien dać sobie z tym rade. A jednak nie dają sobie rady.
@RequiredNickname nie chodzi o to że będziesz implementować sortowanie, ale mozesz się spotkać z problemem który należy rozwiązać analogiczną metodą
i doświadczenie z algorytmami pozwoli ci wpaść na rozwiązanie. Dodatkowo bardzo wielu bootcampowiczów nie rozumie jak działają pod spodem struktury danych i nie potrafią ich poprawnie dobrać do problemu. Jeśli dla kogoś nie ma różniczy czy używa List czy Set albo nie wie dlaczego używać Map i wyszukuje liniowo w liście to znaczy że ma spore braki.
Shalom napisał(a):
@RequiredNickname nie chodzi o to że będziesz implementować sortowanienie. [...] Dodatkowo bardzo wielu bootcampowiczów nie rozumie jak działają pod spodem [...]
Jak bootcamowicz nie zna ale jest kumaty to się nauczy i będzie OK.
Gorzej gdy student przez semestr nie dał rady ogarnąć jak działa sortowanie, później miał jeszcze cały rok na nadrobienie zaległości i poprawę i dalej nie ogarnie "abstrakcji", więc wyleciał ze studiów.
Całkiem fajne są kursy na platformie: edx. Przerabiałem kilka modułów, aczkolwiek czasami trzeba się posiłkować zewnętrznymi źródłami.
Jako zupełny wstęp mogę polecić książkę "Algorytmy ilustrowany przewodnik", gdzie autor rewelacyjnie i w zrozumiały sposób tłumaczy podstawy.
Dla mnie ta playlista i w ogóle kanał to jest pure gold:
Kompletna i ustrukturyzowana wiedza, żeby przejść np. Google coding interview. Polecam te listę i wskazane materiały