19 października 2019

Co potrafi Magister Informatyki?

Kategoria: Informatyka
Tagi: dla profesjonalistów,
Autor: Paweł Mansfeld

Co potrafi Magister Informatyki?

Tytuł Magistra Informatyka może być nadawany przez uczelnie wyższe po ukończeniu studiów magisterskich (drugiego stopnia), złożeniu pracy magisterskiej i zdaniu egzaminu magisterskiego na kierunku Informatyka. Magister to tytuł zawodowy, skrót: mgr (bez kropki) to z łaciny mistrz, nauczyciel.

W tym artykule spróbuję w wielkim skrócie opisać przebieg takich studiów czyli jakie projekty realizowaliśmy i jaki materiał obowiązywał do egzaminów. Być może informacje będą pomocne jeżeli ktoś wybiera się na takie studia. Czy warto robić magistra z Informatyki? Mój krótki komentarz na końcu artykułu.

Studia ukończyłem w 2019 roku na Uniwersytecie Ekonomicznym w Katowicach. Choć mniej-więcej pamiętam wszystkie przedmioty w ramach pomocy posłużę się suplementem z ocenami aby nie przekręcić nazwy przedmiotów i nie pominąć któregoś z nich.

Należy też mieć na uwadze, że w zależności od Uczelni, studia mimo specjalizacji mają tak jakby inny profil. Pamiętam jak ktoś chciał robić pracę Magisterską na temat inteligentnego domu i po prostu tej osobie nie pozwolono wybrać takiego tematu “bo to uczelnia ekonomiczna”. Warto to rozważyć przed wyborem uczelni.

Specjalność: gry i aplikacje mobilne.

1. Algorytmy optymalizacji i metody symulacyjne

Choć nazwa może być dla niektórych nieco myląca (nie optymalizujemy kodu w Javie 😉 ) w gruncie rzeczy jest to bardzo ciekawy przedmiot. Na tym przedmiocie uczymy się rozwiązywać problemy z zakresu programowania liniowego. Np. optymalizacja zasobów na produkcji z zadanymi warunkami ograniczającymi. Przykład rozwiązania zadania:

Jeżeli wydaje ci się to trudne to uprzedzam, że to jest tylko takie wrażenie. Tak naprawdę jest to matematyka na poziomie liceum z zastosowanymi algorytmami, które trzeba zapamiętać. Poznajemy metodę simpleks, symulację Monte Carlo, oraz poznajemy algorytmy genetyczne (ewolucyjne) dzięki którym możemy rozwiązać logistyczne problemy komiwojażera. Ten ostatni temat i Monte Carlo to najciekawsze zagadnienia. Poznaliśmy język R. Projekt realizowany w grupie i dosyć trudny egzamin, który odsiał parę osób już na samym początku studiów były jego warunkami zaliczenia.

2. Analiza i modelowanie systemów informatycznych

Jak sama nazwa wskazuje, modelujemy systemy informatyczne. Zagadnienia dotyczyły metodyk wytwarzania oprogramowania, modeli referencyjnych, architektury korporacyjnej, języka UML, BPMN i SysM. Wiedza z tego zakresu ma uświadomić i przygotować praktycznie do tego jak rozpoczynać i rozwijać projekty aby minimalnym kosztem tworzyć nowe oprogramowanie, architektury i systemy przy zachowaniu jakości i zgodnością z wymogami klienta.

Poznawaliśmy wybrane narzędzia CASE a na ćwiczeniach mieliśmy wykonać model wybranego biznesu – wybrałem jakiś customowy system e-commerce. Egzamin był testem, który sprawdzał ogólną znajomość całego materiału.

3. Etyka i odpowiedzialność zawodowa Informatyków

Jedne z tych luźnych przedmiotów, w którym prowadzący prowadzi rozmowę i zadaje pytania a na zaliczenie jest prezentacja tworzona w grupach. Dowiemy się czym się różni etyka od moralności i tego typu rzeczy.

4. Metody i techniki analizy danych

Przedmiot powiązany z modną ostatnio dyscypliną Big Data czyli automatycznie z Data Miningiem, odkrywaniem wiedzy, statystyką. Poznane narzędzia to między innymi Statistica i zaawansowane funkcje w Excelu. Przedmiot uświadamia jak ważna jest czystość danych w bazach danych i poznajemy różne techniki na eliminację “brudu”.

Na zaliczenie robiliśmy projekt w grupie a egzaminem był test ABCD. Ciekawy przedmiot, którego fundamenty czasem wykorzystuję do porównywania (benchmarking) prognozowania (np. ruchu na stronach i dobierania odpowiedniego hostingu, szacowanie kosztów w przyszłości), do wyznaczania regresji w przeróżnych danych itp.

5. Prawa autorskie w Informatyce

Jeden z ciekawszych przedmiotów, w którym bardzo dużo się dowiedziałem, prowadząca potrafiła nie raz nas zaskoczyć. Dowiedziałem się między innymi, że

  • nie można wieczorem robić zdjęć wieży Eiffla bo jego oświetlenie jest chronione prawem autorskim,
  • graffitti też jest chronione prawem autorskim (nie możemy zrobić zdjęcia i opublikować jako przykładowo tło na naszej stronie).
  • nie ma umowy, której nie można zerwać, nawet tej dotyczącej praw autorskich i przekazania prawa majątkowego,
  • istnieje coś takiego jak autorskie prawa osobiste.

Mimo wszystko, dalej korzystam z torrentów – oczywiście kiedy chcę ściągnąć Linuxa lub płytę CD którą kupiłem fizycznie 😉

6. Programowanie aplikacji webowych

Dla mnie idealny przedmiot. Krótka powtórka HTML5, CSS a do tego JavaScript i PHP. Mieliśmy stworzyć projekt w grupie. Połączyliśmy korporacyjnego Reacta z moim strukturalnym PHP :D.

7. Zaawansowane programowanie obiektowe

Jak sama nazwa wskazuje tematem była obiektowość. Nie chodziłem na zajęcia, ponieważ nie były prowadzone 🙂 Na zaliczenie zrobiłem framework PHP i prostą aplikację typu CRUD. Stworzony framework opublikowałem we wpisie: https://mansfeld.pl/programowanie/wlasny-framework-mvc-dla-php/ i to wystarczyło do zaliczenia.

8. Grywalizacja

Grywalizacja to dyscyplina z pogranicza psychologii, marketingu, HR i projektowania gier?… Do teraz w sumie nie wiem jak to zaklasyfikować. Grywalizacja wykorzystuje mechaniki gier i zastosowuje je w innych miejscach w różnych celach. Przykładem może być stworzenie systemu rankingowego w miejscu pracy czy innych tego typu mechanik, które mają zmotywować do lepszej czy bardziej wydajnej pracy. Na zaliczenie wykonaliśmy projekt aplikacji która grywalizowała wysiłek fizyczny i promowała spędzanie czasu na świeżym powietrzu.

9. Inżynieria bezpieczeństwa

Inżynieria bezpieczeństwa to ciekawy przedmiot, w którym omawiamy wiele kwestii związanych z bezpieczeństwem. Kryptografia, podpis cyfrowy, certyfikat, poufność, bezpieczne przesyłanie informacji, włamania, testy penetracyjne, monitorowanie sieci itd itp. Ocena bardzo dobra z ćwiczeń zwolniła mnie z egzaminu teoretycznego.

10. Metody i techniki sprzedaży

Luźny przedmiot, który podsumowywał wiedzę zarówno ze sprzedaży jak i marketingu i utrzymywania relacji z klientami. Ciekawymi tematami były dla mnie techniki konstruowania oferty w ujęciu FAB – USP – UPB, ale też jak podejść do reklamacji czy spotkań z klientami.

11. Programowanie współbieżne i rozproszone

Jeden z tych przedmiotów, który powoduje, że niektórzy wolą po półrocznych studiach z nich zrezygnować (i do końca życia tłumaczyć sobie że ten papierek magistra nie jest aż tak ważny) niż opanować umiejętności przewidziane w programie. Poznawaliśmy problem pięciu filozofów, wyścig do zasobów i tworzyliśmy najpierw na niskim poziomie abstrakcji muteksy i locki by później świadomie korzystać z metod wbudowanych w C# do zarządzania wielowątkowością i wielordzeniowością procesora. Dla mnie był to ciekawy przedmiot bo musiałem programować w całkiem nowym dla mnie języku C# i środowisku .NET.

Na zaliczenie było programowanie trzech problemów z obszaru programowania współbieżnego, wykonanie prostej architektury klient – serwer i test teoretyczny.

12. Projektowanie gier 3D

Projektowanie gier 3D było powtórką z inżynierki ale programowaliśmy nie w OpenGl a w DirctX. Na każdych zajęciach strukturalny kod w C++ tzw. sieczka z powodu zastosowanego Data Oriented Design. Tworzyliśmy podstawowe figury geometryczne animacje i przy okazji udało mi się zajechać kartę graficzną na tak low-levelowym poziomie, że nawet grafika w systemie Windows się posypała:

Zajęcia tego typu to dobra podstawa do eksploracji tematu na własną rękę lub używania programów do tworzenia gier.

13. Technologie integracji systemów informatycznych

Przedmiot – jak sama nazwa wskazuje – dotyczy integracji systemów informatycznych. Na zaliczenie zrobiłem federated login, które opisałem w artykule o Google Sign-In w PHP.

14. Technologie semantyczne

Dane strukturalne, RDF, analiza tekstu naturalnego, data mining. Mało było ćwiczeń, temat w tamtym czasie mało mnie interesował to też więcej tych zajęć nie jestem w stanie opisać. Oceny były wystawiane na podstawie ćwiczeń.

15. Zarządzanie projektami

Ciekawy przedmiot, który tłumaczy dlaczego projekty informatyczne tak bardzo różnią się od innych projektów. Jak podejść do realizacji złożonych projektów, jakie ryzyka trzeba wziąć pod uwagę realizując projekt informatyczny no i wreszcie co to jest projekt. Jak zarządza się projektami w korporacjach i co to są metody wytwarzania oprogramowania. Te i inne zagadnienia można było poznać na tych zajęciach. Ćwiczenia realizowane w grupach i na koniec egzamin z pytaniami otwartymi.

16. Agent-oriented programming

Przedmiot prowadzony w całości w języku angielskim w którym lekko poznałem język Java i NetBeans IDE. Programy zgodne z podejściem Agent-Oriented Programming to kolejna warstwa abstrakcji, która jest niejako ewolucją programowania obiektowego. Tak jak w programie obiektowym tworzymy obiekty aby reprezentowały abstrakcyjne byty, które “coś robią z danymi”, w programowaniu Agent-Oriented Programming tworzymy osobnych Agentów, którzy komunikują się z innymi Agentami i w jakiś sposób przetwarzają dane. Jedne agent pobiera dane, drugi je przetwrza a trzeci prezentuje użytkownikowi. Tworzyliśmy projekty w grupach, z kolegą zrobiliśmy jakąś aplikację okienkową, która pobierała kursy walut z NBP i przeliczała wartości.

17. Biznesplany projektów informatycznych

Kolejny przedmiot, który nie jest bezpośrednio związany z Informatyką a bardziej z biznesem. Stworzyliśmy biznesplany wyimaginowanych przedsięwzięć i tyle.

18. Gry poważne

Gry poważne czyli mocno uogólniając: gry edukacyjne lub inne, które są stworzone dla celu innym niż rozrywka. Tworzyliśmy w grupach projekty dotyczące gier edukacyjnych. Narzucone tematy, i specyficzny sposób ewaluacji postępów odebrały mi chęć do zrobienia czegoś bardzo fajnego ale na podstawie ćwiczeń dostaliśmy zaliczenia.

19. Sieci społecznosciowe w gospodarce elektronicznej

Nie wiem co się działo na tych zajęciach – chyba nikt nie wiedział oprócz prowadzącej. Jakieś ćwiczenia i esej do napisania na temat sieci i serwisów społecznościowych. Dosłownie odliczałem czas do końca zajęć tak jak na biznesplanach.

20. Systemy uczące się

Super przedmiot dotyczący sztucznej inteligencji a ściślej, sieci neuronowych, algorytmów uczenia maszynowego. Na zaliczenie musieliśmy bez frameworków i bibliotek napisać algorytm sieci neuronowych lub klasyfikatora ID3.

Na ćwiczeniach wykonywaliśmy preprocesing danych w swoim wybranym języku programowania. Ja oczywiście wybrałem PHP co zdziwiło nawet prowadzącego ale przy odrobinie chęci wszystko dało się zrobić. Na zaliczenie zaś wykonałem aplikację webową generującą drzewo decyzyjne na podstawie drzewa ID3:

Dzięki wykorzystaniu PHP i generowaniu graficznych drzew za pomocą Treant.js w przeglądarce. Projekt robił wrażenie.

21. Zastosowanie metod sztucznej inteligencji w grach

Przedmiot, w którym budowaliśmy sieci neuronowe do gry w kółko i krzyżyk, dokonywaliśmy predykcji i proste mechanizmy OCR do odczytywania odręcznego pisma. Ciekawy przedmiot ale wykorzystywaliśmy gotowy pakiet oprogramowania co przy kolejnych zadaniach było coraz nudniejsze. Na zaliczenie realizowaliśmy powtarzalne ćwiczenia.

22. Projektowanie i programowanie aplikacji mobilnych

Jeden z niewielu specjalizacyjnych kierunków, w którym musieliśmy stworzyć aplikację mobilną. Jako prawdziwy fanantyk technologii webowych stworzyłem za pomocą PhoneGap aplikację typu organizer. Ćwiczenia nie były prowadzona i do uzyskania oceny wystarczyło stworzyć jakąkolwiek aplikację.

Ja wybrałem skalowanie aplikacji webowych, bo z jednej strony taka wiedza była dla mnie bardzo w tym momencie przydatna, ponieważ projekty, których byłem autorem zaczęły się gwałtownie rozwijać a z drugiej strony zawsze mnie to bardzo interesowało i fascynowało.

23. Narzędzia tworzenia gier i silniki gier

Tworzyliśmy grę w Unreal Engine. Fajny przedmiot ale zajęcia były średnio udane bo musieliśmy podążać za wskazówkami prowadzącego i odtwarzać konkretny wynik końcowy.

24. Seminarium magisterskie

Seminarium magisterskie to przygotowanie do napisania pracy Magisterskiej. Ustalamy z promotorem tytuł i przedmiot jest oceniany na podstawie stworzonego spisu treści i przykładowo pierwszego rozdziału.

25. Praktyka

Nie wiem jak wygląda praktyka w firmie bo ja swoją zaliczyłem sobie samemu na podstawie działalności związanej z tworzeniem stron i aplikacji webowych.

26. Seminarium magisterskie

Na seminarium w ostatnim semestrze kończymy pracę magisterską. Rozpisałem się na 77 stron o tym jak mając ograniczone środki finansowe skalować portal internetowy. Od konfiguracji VPSów, do optymalizacji i denormalizacji baz danych skończywszy na prostym skalowaniu horyzontalnym.

Praca była wysoko oceniona a proces pisania, który trwał z przerwami około pół roku uważam za bardzo rozwojowy.

Czy warto studiować Informatykę na drugim stopniu?

W czasach, w których neguje się wartość wykształcenia a Informatyka zaczyna być dominującą gałęzią gospodarczą, szerokie spojrzenie na tę dyscyplinę jest sporą przewagą na różnych płaszczyznach. Dlaczego obecnie w modzie jest negowanie wartości studiów nie tylko Magisterskich? Jeżeli napisałbym, że studia nie są warte poświęcania im czasu to zyskałbym sobie wielu zwolenników a ten artykuł byłby cytowany na co drugim forum z dyskusją na temat tego czy warto studiować Informatykę czy nie warto.

To prawda, nie nauczycie się programować – u mnie było tak, że jak ktoś nie potrafił programować to się żegnał ze studiami na 3 semestrze. Umiejętności wymagane na programowaniu współbieżnym były nie do nadrobienia dla przeciętnej osoby, która zbyt słabo programuje. Nie nauczycie się najnowszych technologii, bo studia nie służą do tego – są ponad przejściowymi trendami i modami na technologię. Na studiach poznaje się kanon – to co od lat trzeba było opanować by być Magistrem danej dziedziny. Nie miałbym motywacji do zgłębiania tematów związanych ze sztuczną inteligencją, czy współbieżnością a dzięki studiowaniu opanowałem je i potrafię sam napisać proste mechanizmy. Potrafię wytłumaczyć dziecku jak działa sieć neuronowa, jak komputer buduje drzewa decyzyjne, jak dochodzi do zakleszczenia lub dlaczego w pewnym momencie ilość rdzeni procesora nie wpływa na szybkość wykonywania się kodu. Pamiętajmy, że Informatyka to nie tylko programowanie.

To może zabrzmi mało modnie ale w moim odczuciu warto studiować. Każde wyjście z własnej bańki wiedzy i podporządkowanie się cudzemu programowi – nie ważne jaki by był – jest wartościowe. Częsty kontakt z doktorami i profesorami, którzy studiowali Informatykę w różnych krajach i mają konkretne osiągnięcia na przestrzeni wielu lat jest rozwijające. Dokończenie studiów może i nie świadczy o nie wiadomo jakich umiejętnościach ale dużo mówi o dyscyplinie i charakterze. Rekruter mając dwóch kandydatów o podobnych umiejętnościach wybierze tego z tytułem Magistra – chyba że sam ma jakiś kompleks. Na studia uczęszczały osoby z fajnymi stanowiskami i też z fajnymi zarobkami. Jeżeli te studia byłby takie bezwartościowe to pewnie znaleźliby sobie oni coś ciekawszego do roboty w weekendy po tygodniu pracy na pełny etat.

Ukończenie studiów magisterskich drugiego stopnia nie uważam też za nie wiadomo jaki wyczyn intelektualny ale niech mi nikt nie mówi, że każdy je może zdać za “chodzenie” – są osoby (z wykształceniem inżynierskim), które z jakiegoś powodu poddały się po jednym semestrze, podchodziły do jednego egzaminu kilka razy lub nie zdały pracy magisterskiej. Bo zwyczajnie zabrakło im dyscypliny.

No i w końcu tego Magistra (którego podobno już więcej osób ma niż nie ma) warto uzyskać aby nie mieć żalu, że się go niema. Wystarczy przejrzeć fora dla programistów, gdzie tematy typu “czy warto zrobić magistra z Informatyki” wywołują zacięte dyskusje a posty negujące ich wartość zdają się nie mieć końca. Najwięcej do powiedzenia w tym temacie mają goście, którzy, skończyli jakiś na maksa nieprzydatny kierunek, po czasie zorientowali się, że programowanie to przyszłość i mają dość tej pracy na zmywaku i po jakimś kursie i darmowej praktyce siedzą na front-endzie i klepią mało skomplikowane taski. Wiele osób cierpi na swego rodzaju kompleks – stąd te dyskusje. Po uzyskaniu dyplomu od paru osób (które same zatrzymały się na wcześniejszym etapie edukacji) wysłuchuję jakie to studia są niepotrzebne – oczywiście tak między słowami, żeby nie było… Wiele moich kolegów z podstawówki nie ma nawet matury i szanuję to, bo to jest właśnie życiowa konsekwencja. Nie mów że tytuł Magistra nic nie daje jeżeli sam go nie masz, bo się zwyczajnie ośmieszasz.

W reszcie, co innego jest przejście studiów na trójach a co innego na piątkach i zdobywać co rok stypendium. Studia zaoczne łączyłem z pracą freelancerską. Zrobiłem projekty, których w życiu bym nie robił w pracy lub w ramach kursu. Czegoś się dowiedziałem, poznałem bardzo fajnych ludzi (w większości specjalistów w swojej dziedzinie) i na pewno mnie nie ogłupiły. Nawał obowiązków nie zmusił mnie do wybierania “praca czy edukacja”. Co stoi na przeszkodzie by robić obie rzeczy równolegle? No ale… każda wymówka dobra.

Zdanie “nie warto robić magistra z Informatyki” jest jak “pieniądze szczęścia nie dają” i “wygląd nie ma znaczenia liczy się piękno wewnętrzne”. To pierwsze powie ktoś bez sensownych studiów, drugie powie biedak a ostatnie, Ci którzy nie grzeszą wyglądem.

Świat nie jest zero-jedynkowy prawda jest gdzieś po środku ale jeżeli masz chęci, czas i motywację nie daj sobie wmówić, że nie warto.

Oceń artykuł na temat: Co potrafi Magister Informatyki?
Średnia : 4.6 , Maksymalnie : 5 , Głosów : 11


 

Odpowiedz lub skomentuj

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


 

Wykryto brak połączenia z Internetem.