Autor: Paweł Bogdan

Paweł Bogdan - doktor nauk matematycznych, absolwent informatyki analitycznej na Uniwersytecie Jagiellońskim. Były wykładowca na Wydziale Matematyki i Informatyki UJ (wyróżniony przez studentów Diamentową Kredą dla najlepszego „ćwiczeniowca” roku akademickiego 2018/2019). Trener umiejętności programistycznych. Programista Javy z dziesięcioletnim doświadczeniem.

1
Kurs video

Metoda dziel i zwyciężaj. Kurs video. Od rekurencji po realne problemy obliczeniowe

Paweł Bogdan

Obierz kurs na... algorytmy rekurencyjne! W życiu codziennym każdego człowieka, w laboratorium naukowym czy na polu bitwy - wszędzie czekają na rozwiązanie jakieś problemy. Z tymi mniejszymi radzimy sobie często od ręki, ale większe potrafią się stać prawdziwym ciężarem. A może niepotrzebnie patrzymy na to z takiej perspektywy? Może wszystkie problemy (a przynajmniej większość) są w rzeczywistości niewielkie, a to my sami, nieświadomie łącząc je ze sobą, stawiamy sobie zadania przytłaczające nas ogromem? Metoda dziel i zwyciężaj pomaga nam właśnie w tym, by każde takie wyzwanie podzielić na kilka mniejszych, a jeżeli to nie wystarczy - na jeszcze mniejsze. I znowu. I tu pojawia się... Wiedza dana nielicznym ...rekurencja! Każdy szanujący się programista wie, co to jest, a kurs Metoda dziel i zwyciężaj. Kurs video. Od rekurencji po realne problemy obliczeniowe pokaże i nauczy Cię, jak ją stosować do tworzenia algorytmów (właśnie według metody dziel i zwyciężaj), a także do ich implementacji w języku Java. Nikogo nie trzeba przekonywać, że Java to jeden z najważniejszych i, obok Pythona i C, najpopularniejszych języków programowania. W internecie bardzo łatwo znajdziemy kursy, tutoriale czy bootcampy, które obiecują, że po ich ukończeniu będziemy potrafili programować w tym języku. Większość z nich jednak skupia się na zaprezentowaniu składni języka czy użyciu gotowych bibliotek lub frameworków, a przy tym pobieżnie (lub wcale) odnosi się do tworzenia i zastosowania algorytmów, w tym rekurencyjnych. Jednak na rozmowach kwalifikacyjnych można usłyszeć takie pytania, bo przyszły pracodawca chce mieć pewność, że zatrudnia osobę przygotowaną do poradzenia sobie również z mniej prostymi wyzwaniami. Bez dobrego zrozumienia tych zagadnień łatwo popełnić błędy, które mogą utrudnić zdobycie wymarzonej pracy. Czego się nauczysz w trakcie kursu Metoda dziel i zwyciężaj. Kurs video. Od rekurencji po realne problemy obliczeniowe? Zapoznasz się z rekurencją i algorytmami rekurencyjnymi i nauczysz się je implementować Nauczysz się rozróżniać metody TOP-DOWN (od ogółu do szczegółu) i BOTTOM-UP (od szczegółu do ogółu) Dowiesz się, czym są fraktale i jak tworzyć rysujące je programy Poznasz rekurencyjne struktury danych i opanujesz umiejętność implementowania operujących na nich programów Zrozumiesz rekurencyjny wzorzec projektowy i nauczysz się z niego korzystać Ugruntujesz znajomość metody dziel i zwyciężaj Opanujesz algorytmy: wyszukiwania połówkowego, sortowania przez scalanie i sortowania szybkiego, a także zasady ich implementowania Zrozumiesz całkowanie numeryczne metodą trapezów i nauczysz się ją implementować Łatwiej zrozumieć rekurencję, jeśli już się ją rozumie W codziennej pracy programisty konieczne jest wyrobienie określonych dobrych nawyków, które pozwolą na efektywne tworzenie działającego i łatwego w utrzymaniu kodu. Podejście dziel i zwyciężaj da Ci pewną ścieżkę postępowania, wzmacniającą Twoją kreatywność i zapewniającą znalezienie optymalnego rozwiązania stojącego przed Tobą problemu. Algorytmy rekurencyjne to narzędzia, które warto mieć w swoim repertuarze. Zapoznawszy się z tym podejściem w kontekście nauki programowania, możesz dość nieoczekiwanie przyłapać się na stosowaniu go także w odniesieniu do innych aspektów swojego życia. Warto poznane podczas tego kursu zasady powtarzać tak długo, aż staną się częścią Ciebie samego — znakomita większość wyzwań i problemów, przed jakimi kiedykolwiek staniesz, da się podzielić na mniejsze, a te na całkiem malutkie zdania, które nie będą już dla Ciebie żadnymi wyzwaniami. Junior czy senior — bez rekurencji ani rusz Czy dopiero wchodzisz na rynek pracy, rozglądając się za możliwością nabycia doświadczenia w zawodzie jako junior, czy też jesteś starym wyjadaczem — rekurencja może Cię zaskoczyć. Jej znajomość umożliwi szybsze tworzenie bezbłędnych rozwiązań programistycznych, ale także zwiększy szanse na zdobycie ciekawszych i lepiej płatnych zleceń. Nawet jeżeli zdarzyło Ci się mieć z nią kiedyś do czynienia, to warto się upewnić, że naprawdę ją rozumiesz i potrafisz zastosować.

2
Kurs video

Złożoność obliczeniowa. Kurs video. Jak mierzyć efektywność algorytmów

Paweł Bogdan

Obierz kurs na... efektywne algorytmy Czy można wskazać najlepszy język programowania? Albo przynajmniej najlepiej sprawdzający się w rozwiązywaniu określonych problemów? Najszybszy? Najwydajniejszy? Pewnie można się pokusić o jakieś porównania, a rankingów i zestawień, które próbują odpowiedzieć na tego typu pytania, można znaleźć w Internecie dziesiątki albo i setki. Warto jednak mieć świadomość, że takie postawienie sprawy odciąga uwagę od kwestii fundamentalnej - program, aby był wydajny, powinien być przede wszystkim dobrze napisany. A do tego konieczna jest znajomość przynajmniej podstaw algorytmiki. Właśnie dzięki niej możemy zaplanować optymalną konstrukcję aplikacji poprzez wybór najefektywniejszych algorytmów Jak wybrać odpowiedni algorytm Dziś trudno spotkać programistów, którzy pracują całkowicie samodzielnie. Zwykle działają w zespołach, często licznych i współpracujących z... innymi zespołami programistycznymi i nie tylko. Co oznacza konieczność komunikacji, i to na bardzo różnym poziomie, w tym konieczność stosowania zrozumiałych dla innych opisów algorytmów. Do tego między innymi przygotuje Cię ten kurs, jak również do nieuniknionych dyskusji, pozwalających ocenić, który z proponowanych algorytmów jest szybszy i zapewni aplikacji najlepszą możliwą wydajność. Bez teorii ani rusz Jednak do tego, by biegle szacować i porównywać algorytmy pod kątem efektywności, konieczne jest posiadanie pewnej wiedzy teoretycznej, niezbędnej do zrozumienia, czym jest złożoność obliczeniowa. Złożoność obliczeniowa. Kurs video. Jak mierzyć efektywność algorytmów zapozna Cię z tymi zagadnieniami i pozwoli zrozumieć, jakiego typu problemy są uznawane współcześnie za trudne obliczeniowo. Czego się nauczysz i co poznasz w trakcie profesjonalnego szkolenia Złożoność obliczeniowa. Kurs video. Jak mierzyć efektywność algorytmów? Poznasz pojęcie algorytmu Zrozumiesz potrzebę porównywania algorytmów Nauczysz się tworzenia i czytania pseudokodu Poznasz pojęcie złożoności obliczeniowej Zrozumiesz, na czym polegają oszacowania asymptotyczne i relacja pomiędzy nimi Zapoznasz się z kilkoma wybranymi algorytmami Poznasz podstawowe klasy złożoności wraz z przykładami algorytmów Nauczysz się szacowania złożoności obliczeniowej Poznasz koncept maszyny Turinga i nauczysz się ją tworzyć Nauczysz się korzystać z maszyny Turinga do definiowania klas P i NP Poznasz definicję klasy problemów P Poznasz definicję klasy problemów NP i NPC Zapoznasz się z definicją problemów trudnych obliczeniowo Poznasz zasady redukcji wielomianowej Nauczysz się korzystać z redukcji wielomianowej Czego by się tu jeszcze nauczyć? Dość oczywistą korzyścią z dbania o to, by warsztat programistyczny był rozbudowany i wszechstronny, jest elastyczność na rynku pracy i zwiększenie szansy na awans czy po prostu wyższe zarobki. Mniej oczywiste, a na pewno równie ważne jest to, że świadomy i uzasadniony wybór konkretnych rozwiązań na przykład dotyczących algorytmów, na których będzie oparta konstrukcja aplikacji, ułatwi codzienną pracę, ograniczy prawdopodobieństwo wystąpienia przykrych niespodzianek, co przełoży się na zadowolenie odbiorców efektów Twojej pracy. Wszystko da się poprawić, ale gdyby pod koniec pracy okazało się, że konieczne jest znaczące zwiększenie szybkości działania programu, mogłoby to oznaczać poważne opóźnienia lub w skrajnych przypadkach konieczność rozpoczęcia realizacji projektu od początku. Wiedza prezentowana w ramach tego kursu pozwoli Ci zwiększyć Twoje szanse na sukces!