Oto Iterators!

W poprzednim poście obiecywałem zaprezentować mój najnowszy projekt informatyczny. Nie jest to jednak zwykły kawałek kodu zamieszczony na GitHubie, a realizacja mojego największego marzenia zawodowego – własna firma o nazwie Iterators.

Mówiąc najkrócej Iterators to software house, który zajmuje się wszelkiego rodzaju rozwiązaniami software’owymi – w szczególności webowymi, mobilnymi i przetwarzaniem danych. Naszymi klientami są przede wszystkim startupy, mały i średni biznes, agencje marketingowe i w mniejszym stopniu korporacyjny świat IT. Technologicznie rzecz ujmując… cóż wykorzystujemy najlepsze narzędzia do rozwiązywanych problemów – nie jesteśmy tylko programistami .NET czy Ruby – lubię określenie „poligloci”. Pełne informacje na temat naszych usług można odnaleźć na podstronie Services, co do wykorzystywanych technologii polecam natomiast zakładkę Technologies.

Kończąc wywód czysto marketingowy napiszę nieco o samym pomyśle. Zaczynając studia myślałem, że zostanę obiecującym, korporacyjnym programistą .NET. Niestety wypadło tak, że wiek buntu zaczął mi się dopiero w połowie studiów i od tej pory w zasadzie myślałem już tylko o własnym biznesie. Kocham programować, więc jasne było dla mnie to, czym chciałbym się zajmować. Jednak robienie tego „dla kogoś” wydaje mi się suboptymalne. Patrząc na osoby, które wybrały pracę w stabilnych firmach widzę jak mały wpływ mają na kierunek rozwoju tego co robią, na sposoby pracy i generalnie na to co się wokół nich dzieje. Mi to się zdecydowanie nie podoba. Chcę spróbować robić „po swojemu”.

Wiele osób mówi, że własny biznes zaraz po studiach to głupi pomysł. Uważam jednak, że w moim przypadku jest zupełnie inaczej. Przede wszystkim w tej chwili nie pociąga to za sobą żadnego ryzyka. Nie mam rodziny na utrzymaniu, mam dach nad głową i mam wystarczające oszczędności. Co mogę stracić? Nic. W najgorszym wypadku zostanę z kilkoma miesiącami ciekawych doświadczeń i miłego życia wypełnionego realizacją marzeń. Doświadczenie? Nie lubię się chwalić, ale ze swojego jestem zadowolony i mam nadzieję, że mi ono wystarczy. Nie potrzebuję styczności z miernym middle-managmentem, żeby wiedzieć jak radzić sobie w życiu (a to właśnie wielu nazywa „cennym doświadczeniem”). Dlaczego zatem nie spróbować?

Co teraz? Jest konkretny plan i zamierzam go konsekwentnie realizować. Jeśli wypali, to chętnie podzielę się tutaj tym jak wygląda własny biznes „od środka”.

PS. Jeśli potrzebujesz oprogramowania najwyżej jakości pomyśl o zatrudnieniu Iteratorów! :)

Koniec… i początek

Kolejny niechlubny rekord został pobity – blog nie był aktualizowany przez blisko rok. Wydarzyło się w tym czasie (licząc jednostkowo) całkiem niedużo, mianowicie 25 czerwca 2013 roku udało mi się ukończyć ukochane przeze mnie studia. Jest to dla mnie jednak całkiem wyjątkowe zdarzenie. Od lipca czuję się wolnym człowiekiem – moich myśli nie zaprzątają bzdury związane z pracą dyplomową czy rejestracją na nowy semestr. W końcu tak naprawdę zacząłem zajmować się rzeczami, które lubię i o których marzyłem i robię to w sposób całkowicie nieskrępowany. Znajomi? Zawsze chętnie! Spotkania branżowe? Staram się nie odpuszczać (o ile PKP mnie nie pokonuje :)). Piłka nożna? Oglądam bez wyrzutów sumienia! Gra na gitarze? W końcu próbuję coś brzdąkać. Programowanie naprawdę użytecznych i fanych rzeczy? O taaaak.

Wnikliwy czytelnik zapewne pomyśli: „opier…asz się brachu, a co z pracą?”. Ano pracuję i to nad bardzo ciekawym doświadczeniem informatycznym, o którym szerzej już w następnej notce, która powstanie w ciągu kilku dni.

Na sam koniec pozostaje kwestia bloga. Bardzo chcę blogować i mam po prostu nadzieję, że teraz to się uda. Mam bardzo dużo zaległych postów, które nazwałbym retrospekcyjnymi, bo dotyczą wydarzeń z przeszłości. Mogą się okazać one mało interesujące dla większości czytelników, ale bardzo ich potrzebuję, żeby mieć gdzieś zanotowane przemyślenia na temat spraw ważnych dla mnie. Po kilku (w porywach do 8!) notkach osobistych wrócę do czystej technologii. Oby się udało!

Na zakończenie dziękuję wszystkim, którzy sprzątając po Google Readerze nie usunęli mojego bloga ze swojego czytnika :).

Przedostatni semestr studiów

Post jest częścią serii retrospekcja (patrz tutaj), która służy mi do uwiecznienia wydarzeń, które miały miejsce w przeszłości. Notki te mogą okazać się mało interesujące dla Czytelnika, ale obiecuję, że po zakończeniu serii nastąpią soczyste, techniczne wywody.

Nihil novi sub sole

Studia magisterskie nie zaczęły się zbyt dobrze. Semestr drugi i zarazem przedostatni tej całej męczarni również nie rozpieszczał. Założenie na ten czas było jednak proste – zrobić wszystkie przedmioty tak, aby na ostatni semestr została już tylko praca magisterska.

Chcąc nie chcąc program studiów ponownie zmusił mnie do wzięcia przedmiotów dotyczących uczenia maszynowego… i tym razem całkiem się to opłacało. Rozpoznawanie obrazów i metody odkrywania wiedzy to dwa przedmioty o niezbyt zrozumiałych nazwach, które doskonale uporządkowały wiedzę, którą z trudem zdobywałem na semestrze pierwszym. Oczywiście nie obyło się bez bombardowania mojej biednej głowy matematycznymi formułami, dowodami i wywodami, ale tak po prawdzie to da się to wszystko zrozumieć „na chłopski” rozum – intuicyjnie znaczy się. Podsumowując zyski i straty te dwa przedmioty zaliczyłbym na plus – może niezbyt wyraźny i pewny, ale jednak plus.

Dalej było niestety sporo gorzej. Z przedmiotem o pięknej nazwie programowanie równoległe i rozproszone wiązałem spore nadzieje, ponieważ tematy współbieżności, równoległości i wszelkiego rozproszenia są mi bliskie i bardzo je lubię. Niestety srogo się zawiodłem, ponieważ przedmiot ten tylko w nazwie jest fajny. Dalej są już prowadzący, którzy ograniczają się do czytania slajdów na temat przestarzałych technologii, ewentualnie takich, których nikt nigdy nie widział. Nastawiałem się na „grube rozkminy” na tematy typu CSP vs. model aktorów, a otrzymałem siekę na temat ewolucji procesorów, europejskich klastrów i różnic w wątkach pthreads i javowych. WTF? Prowadzący zawiedli. Na całej linii, ech.

Pomimo kiepskiej opinii zmusiłem się do wzięcia przedmiotu o (znów) ładnej nazwie – analiza i projektowanie systemów informatycznych. Bo dużo ECTS-ów za to dawali. To był błąd, zdecydowanie największy błąd podczas toku studiowania, wyłączając oczywiście wybór wydziału :P. Wykład tego przedmiotu ma dwa oblicza – ciekawe, dotyczące agile i scruma (1/3 całości) oraz fatalnie beznadziejne – dotyczące metod „łoterfalowych” – przypadki użycia i rysowanie diagramów UML na potęgę (a propos tego ścierwa to polecam spojrzeć tu). To jeszcze byłoby do łyknięcia, gdyby nie projekt. Projekt polega na stworzeniu małego produktu zwinnymi metodykami, gdzie każdy w teamie po kolei realizuje inną rolę z zespołu scrumowego^C^C^C^C To oczywiście tylko moja fantazja, tak naprawdę projekt polega na napisaniu dokumentacji do pewnego produktu, najlepiej takiej, która ma 100+ stron, w zasadzie im więcej tym lepiej. I diagramy, dużo diagramów. Inteligentny sposób spędzania czasu, nie ma co, naprawdę. Co ciekawe, to jeszcze nie byłoby najgorsze, gdyby nie to, że do projektu trafiła mi się najbardziej stępiona dzida wydziału, którego imienia nie pomnę. Chamstwo, niekompetencja, niesprawiedliwość. Tak opisałbym metody prowadzenia zajęć przez tego człowieka. Ech, starczy tego używania sobie – po prostu było źle, naprawdę bardzo źle.

Praca magisterska

Semestr drugi poświęciłem na wymyślaniu i badaniu potencjalnego tematu pracy magisterskiej. To przysporzyło mi sporo stresów ponieważ wymyśliłem sobie (no dobra, niezupełnie sam), że chciałbym napisać co nieco o połączeniu współbieżności i bezpieczeństwa, co w praktyce okazało się cholernie trudne. Przez cały semestr czytałem „pejpersy” na temat błędów, niezawodności, bezpieczeństwa i samej współbieżności. Samej pracy nie powstał natomiast ani jeden akapit. Co z tego wyszło? O tym dokładniej niebawem.

Studia magisterskie…i co z tym blogiem?

Tak długiej przerwie w pisaniu na blogu chyba jeszcze nie miałem – nie udało się nic napisać w semestrze ani w czasie wakacji, nawet tradycyjny wpis o szkole się wymknął… Cóż, winnego daleko szukać nie będę, bo jestem nim ja. Taki stan rzeczy wcale mi się nie podoba, a wprost przeciwnie – powoduje wyrzuty sumienia i poczucie zmarnowanego potencjału… Czemu więc?

Brodzenie po kolana w g…

Uczciwie zastanowiłem się nad tą kwestią i odpowiedź jest bardzo prozaiczna. Żeby pisać na blogu trzeba to lubić, trzeba mieć o czym pisać, trzeba czuć entuzjazm do tematów, które się porusza… i to tyle. Bywały chwile, w których nie miałem z tym problemu jak choćby spora liczba wpisów o dotnecie czy też seria o osdevie. Oba tematy w tamtych czasach były mi bliskie, elektryzowały mnie na swój sposób – chętnie dzieliłem się nabytą wiedzą i nie miałem z tym problemów. Wspomniane przypadki łącz też jeszcze jedna rzecz – szczyt ich rozwoju przypadał na okres kiedy nie musiałem chodzić do szkoły.

Miniony, pierwszy semestr studiów magisterskich bardzo dotkliwie przypomniał mi jak studia przyczyniają się do mojego wypalenia. Ciężko odnaleźć w sobie entuzjazm i chęć do zajmowania się czymkolwiek jeśli kilka godzin spędza się na uczelni walcząc z jakimś „inżynierskim oprogramowaniem wysokiej klasy”, którego główną funkcjonalnością jest wyświetlania okienka z napisem Exception in thread „main” java.lang.NullPointerException, prawie dwie godziny na podróży do i z uczelni, wieczór na robieniu projektów, a noc na przygotowaniach do kolokwium. Studia magisterskie to nic więcej, jak tylko nieudana powtórka ze studiów inżynierskich – nieudana, bo jeszcze bardziej bez pomysłu. Przez ostatnie dwa miesiące widziałem wszystkie wschody słońca i wcale nie dlatego, że jestem taki romantyczny… Po prostu zajmowałem się bezmyślnym przetwarzaniem programów „inżynierskich”, formułek pseudomatematycznych, algorytmów których zastosowania jeszcze nikt nie odkrył i całej maści innego gówna. Osoba wymyślająca plan studiów powinna za karę resztę swojego życia spędzić na programowaniu w Javie, publicznie na rynku Starego Miasta… (resztę tej perwersyjnej fantazji bez opisu). Czy naprawdę ostatnim nierozwiązanym problemem informatyki jest to jak sklasyfikować wszystko za pomocą jakże porywających klasyfikatorów? Czy umiejętność odtworzenia algorytmu przekształcania automatu niedeterministycznego do deterministycznego naprawdę się może do czegoś przydać? Czy problemy grafowe ograniczają się do DFS-a i BFS-a? Retorycznych pytań tego typu mógłbym zadać jeszcze wiele… ale po co się denerwować? Wrzucanie wszystkich przedmiotów do jednego worka podpisanego „tragicznie złe” byłoby oczywiście niesprawiedliwe, bo w tym bagnie znalazłoby się po jednym przedmiocie z grupy „znośny”, „przeciętny” i „całkiem dobry”, ale niestety giną one w grubej warstwie gnoju.

Co dalej?

Są ludzie, nawet całkiem dużo, którzy lepiej radzą sobie ze studiami. Lepiej, to znaczy mniej się nimi interesują. Nie denerwuje ich niski poziom wykładów – po prostu na nie nie przychodzą. Nie starają się znaleźć wartości dodanej – uczą się w ostatniej chwili z gotowców. W końcu – nie zależy im na wynikach i mają dzięki temu lżejsze i pewnie ciekawsze życie. Mi to się niestety nie udaje. Mam głęboko zakorzenioną sumienność i jeśli już za coś się zabrałem (a tak właśnie zrobiłem) chcę to skończyć możliwie jak najlepiej.

Dobra wieść jest taka, że to jeszcze tylko bieżący i następny semestr i już koniec. Definitywnie. Na całe szczęście semestry te są maksymalnie odciążone, więc będę miał nieco więcej czasu dla siebie i oczywiście dla pracy magisterskiej. Kolejna praca dyplomowa to zdecydowanie najjaśniejszy punkt na tym zachmurzonym niebie studiów – to po prostu dobra zabawa i wielka satysfakcja z odkrywania czegoś nowego. Mam nadzieję, że uda mi się odnieść sukces co najmniej dorównujący pracy inżynierskiej. Co po studiach? Mam nadzieję, że uda mi się pokierować swoją karierą tak jak ja tego chce i nie dam się wkręcić w robienie czegoś czego nie chce tak jak ma to miejsce na studiach. Wtedy tematy na bloga na pewno pojawią się same, a wraz z nimi chęci :)

Ok, koniec już narzekania. Następny post mam nadzieję przed lutym!

Praca inżynierska – epilog

Blog nosi znamiona pamiętnika, zatem wpis ten powstaje ku pamięci, aby zachować historię powstawania moje pracy inżynierskiej. Tym samym skończę tematykę moich studiów inżynierskich, która pewnie dla niewielu osób jest interesująca.

Część praktyczna…

O szczegółach trudnych początków można było przeczytać wcześniej. W czasie wakacji skoncentrowałem się na tworzeniu praktycznej części pracy. Podczas analizy systemu Google Chrome OS napotkałem na pewien nierozwiązany problem. W Linuksie brakuje mechanizmu, który pozwalałby na ograniczenie dostępnego zbioru wywołań systemowych. Tego typu narzędzie pozwala na działanie w myśl zasady najmniejszego uprzywilejowania i powstrzymywanie ataków ze wstrzykiwaniem kodu. Istniejące rozwiązania są niewystarczające – posiadają zbyt małe możliwości, są niewydajne lub niebezpieczne. Z tego powodu ochoczo zabrałem się za stworzenie rozwiązania, które może sprostać oczekiwaniom projektu Chrome OS i pozostałej części społeczności :).

W związku z powyższym stworzyłem moduł, który pozwala pogrupować zadania w grupach kontrolnych, a następnie zdefiniować dostępny dla nich zbiór wywołań systemowych. Tym samym można zabronić procesom np. otwierania i tworzenia plików, zmieniania uprawnień, forkowania itd. Na uwagę zasługuje wydajność rozwiązania. Użycie modułu spowalnia zadania o nie więcej niż 5%, co jest zdecydowanie dobrym wynikiem na tle rozwiązań konkurencyjnych.

Sama implementacja nie była łatwa. Przy okazji tworzenia mechanizmu musiałem dogłębnie poznać działanie kilku elementów jądra, a także uważać na różne subtelności takie jak właściwa synchronizacja czy optymalizacja.

…teoretyczna…

Oprócz pierwszego rozdziału o mechanizmach bezpieczeństwa systemu Chrome OS, musiałem napisać jeszcze z 70 stron :). Dalsza część tekstu powstawała w minionym semestrze, a jej treść w zasadzie odzwierciedlała postępy w pracy. Drugi rozdział dotyczył zatem istniejących rozwiązań oferujących usługi ochrony dostępu do wywołań systemowych i dlaczego są złe ;>. Dalej było standardowo – rozdział pt. „Projekt”, w którym rozważałem możliwe podejścia do tematu, „Implementacja”, w której skoncentrowałem się na specyfice programowania w przestrzeni jądra oraz „Testowanie”, w którym przeprowadzałem dosyć hardkorowe testy wydajnościowe. Na koniec pozostało napisanie wstępu i zakończenia i gotowe! Wygląda to jak spacerek, ale tak naprawdę to był maraton. Pisanie tekstów technicznych jest trudne, nawet bardzo trudne. Praktyka w pisaniu na blogu to niewiele, ponieważ styl języka jest całkowicie inny. Ostatecznie udało się jednak złożyć pracę na czas, 3 dni przed terminem.

…i rezultaty

Oprócz tytułu zawodowego, udało mi się zdobyć coś (ideologicznie) wartego znacznie więcej – wiedzę. Mogę śmiało powiedzieć, że udało mi się znacznie rozmnożyć moje zasoby wiedzowe, co uznaję za największy sukces całego procesu dyplomowania. Mówiąc krótko – jestem dumny z wykonanej przeze mnie pracy i chyba nie ma w tym nic złego. Mam też nadzieję, że równie przyjemnie będzie mi się pracowało nad pracą magisterską.

W tym miejscu zachęcam do przeczytania przynajmniej fragmentów mojej pracy (jak tylko zostanie ona opublikowana), a także śledzenia wszelkich „ubocznych” efektów dyplomowania :).

inż. Łukasz

Tak oto upłynął mi semestr siódmy, całkowicie inny od pozostałych. Można powiedzieć, że nawet przyjemny i interesujący. W końcu udało mi się otrzymać 3 nowe litery i kropkę przed nazwiskiem, a to dla mnie całkiem miłe osiągnięcie :).

Semestr

Na ten semestr został mi już tylko jeden przedmiot – algorytmy heurystyczne. Niewiele mogę jednak o nim napisać, gdyż (niestety?) nie bardzo się do niego przykładałem z powodu zaangażowania w pracę inżynierską. Ot przedstawienie, podsumowanie wiedzy o metoda metaheurystycznych i trochę obrzydliwej matematyki. Na plus można zaliczyć fakt, że udało mi się przy okazji poznać nowy język – R, potrzebny do realizacji projektu.

Na oddzielny akapit zasługuje seminarium dyplomowe, na którym każdy uczestnik miał okazję opowiedzieć o swojej pracy dyplomowej. Inicjatywa całkiem fajna, bo rozwijającą. Ogromna różnorodność tematów pozwala doszkolić się z innych, niż własna, dziedzin. Przyczepić można się tylko do dwóch rzeczy. Przede wszystkim każdy uczestnik miał tylko 20 minut na prezentację, co jest śmiesznie małą ilością czasu. Ciężko w 1/3 godziny przedstawić efekt wielu dni pracy, ale widocznie „tak musi być”. Druga sprawa to jakość przygotowanego przez uczestników materiału – często co najmniej „słaba”. Niemniej jednak, takich inicjatyw powinno być więcej. Niech nie tylko wykładowcy mają prawo głosu :).

Praca inżynierska

Zdecydowaną większość semestru spędziłem na pracy nad dyplomem. Poważny risercz, dużo pisania – zajmowało to kupę czasu i co ważniejsze chęci i siły. Z tego też powodu zaniedbałem całkowicie bloga. Po spędzeniu kilku godzin dziennie na pisaniu, perspektywa tworzenia (dobrowolnie) notki na bloga powodowała u mnie niemal odruch wymiotny. W każdym razie, efekt mojej pracy jest (przynajmniej dla mnie) więcej niż zadowalający. Kompletny, funkcjonalny moduł jądra oraz około 90 całkiem treściwych stron pt. „Nowoczesne mechanizmy bezpieczeństwa w systemie Linux” są zwieńczeniem niemal roku pracy. Co jednak najważniejsze praca została oceniona na bardzo dobry z wyróżnieniem czyli nie tylko mi się podobała :).

Studia, studia… i po studiach

Udana obrona – studia ukończone na bardzo dobry z wyróżnieniem zakończyły inżynierski etap mojej edukacji. Nie mam ochoty ich podsumowywać, gdyż myślę, że byłoby to nierzetelne. Prawdziwy obraz moich studiów tworzą komentarze do poszczególnych semestrów, do których linki można znaleźć poniżej:

Odpowiem jednak przy okazji na proste pytanie: czy żałuję? Nie, nie żałuję. Tych 7 semestrów poszerzyło moje horyzonty w wielu kwestiach i nauczyło wytrwałości. Mogło być jednak znacznie lepiej. Szkoda zmarnowanego potencjału.
Co teraz? Odpowiedź jest prosta – czas na studia magisterskie – znowu na kochanym Wydziale :). Myślałem oczywiście o zmianie miejsca, ale najnormalniej w świecie – nie chce mi się.
PS. Blog dorobił się dwóch nowych działów Projekty i Publikacje. Zobaczcie koniecznie!

Jak (wg mnie) uczyć się na studiach?

Sześć semestrów studiowania już za mną – to znaczy, że jestem już za połową. Dużo kolokwiów i egzaminów udało mi się już zaliczyć, zarywając przy tym jeszcze więcej nocy. To wszystko znaczy, że pewne doświadczenie w studiowaniu już mam i wydaje mi się, że już niewiele rzeczy jest w stanie mnie na studiach zaskoczyć ;). Wiem, że zagląda tu sporo studenckiej braci, dlatego postanowiłem dać kilka porad młodszym rangą od siebie :).

Semestry początkowe, czyli kurowa wszystkich nauk

Na chyba każdej uczelni technicznej pierwsze semestry składają się głównie z matematyki. Algebra, analiza, logika, statystyka – to standard. Semestry te są też podobno najtrudniejsze i na nich odpada najwięcej osób. Na mojej kochanej Uczelni z matematyki dawano nieobowiązkowe zestawy zadań, które później robione były na ćwiczeniach. Jak się okazało, najskuteczniejszym podejściem do sprawy było po prostu robienie ich samodzielnie wcześniej. Owszem, zabierało to dużo czasu: dzień przed ćwiczeniami widywałem wschody słońca, przy piwku i zeszycie z całeczkami; owszem było to nudne, a czasem wręcz niesamowicie irytowało; ale owszem – dawało to wybitne wyniki: dzień przed kolokwium wystarczyło przejrzeć wykonaną wcześniej pracę, a samo kolokwium wydawało się dziecinnie proste. Do matematyki podejście jest więc proste: ćwiczyć, ćwiczyć i jeszcze raz klepać schematy – a zaliczenie przyjdzie bez problemu.

Warto jeszcze wspomnieć dwa słowa o wykładach i ćwiczeniach. Na wykładach bardzo często dyktowana jest książka (z dokładnością do takich samych przykładów). Można więc pokusić się o absencje, jednak wtedy trzeba taką książkę załatwić, albo wziąć od kogoś notatki. Ja mimo wszystko uczęszczałem na wykłady, głównie dlatego że najmilej czyta mi się swoje własne pismo i żartobliwe rysunki :P. Co do ćwiczeń, to warto chodzić – głównie po to, żeby zweryfikować swoje rozwiązania i załapać punkty za aktywność.

Semestry dalsze, czyli pozostałe dobrodziejstwa inwentarza

Pozostałe przedmioty na studiach (pamiętajmy, że ciągle mówimy o informatyce) można podzielić na takie, które wymagają wiedzy (np. architektura komputerów, systemy operacyjne, grafika komputerowa) i takie które wymagają klepania schematów (np. teoria obwodów, teoria informacji, automatyka, optymalizacja). Co do drugiej (gorszej, nota bene) kategorii strategia jest taka sama jak dla matematyki – trzeba się po prostu tych schematów nauczyć, a później na kolokwium/egzaminie wyklepać. Tutaj niebywale przydaje się bank kolokwiów i egzaminów z ostatnich lat do poćwiczenia. Poza tym, nie trzeba chyba wspominać, że wiele zadań się po prostu powtarza :). Nauka schematów jest żmudna, ale nie jest trudna, dlatego też chodzenie na wykłady z przedmiotów „schematycznych” jest raczej zbędne – chyba że ktoś naprawdę lubi patrzeć jak się oblicza kolejną całkę na tablicy.

Dosyć już jednak narzekania, przejdźmy do przedmiotów wymagających wiedzy, czyli bardziej złożonej materii. W trakcie 6 semestrów nauki udało mi się wypróbować dwie strategie – opiszę więc każdą z nich.

Noc przed, zasada indukcji, od zera do bohatera

Strategia ta jest bardzo prosta. Zakłada ona, że da się wszystkiego nauczyć na egzamin/kolokwium w nocy przed takowym. Zwykle nie ma wtedy mowy o spaniu, trzeba mieć dużo samozaparcia i wytrwale siedzieć i czytać. Strategia ta działa i jest praktykowana przez wiele osób – z sukcesami. Ma ona jeden szkopuł – niestety trzeba mieć pewną, podstawową wiedzę wyniesioną z wykładów (albo z książek, tudzież doświadczenia). Dla przykładu uczenie się algorytmów „od zera” w 8 godzin jest zbyt męczące psychicznie = niemożliwe. Z drugiej strony, mi z podstawami sztucznej inteligencji się udało – z zerową wiedzą wyniesioną z wykładu ;). Skuteczność tej metody zależy więc od materii i osobistych predyspozycji.

Zastanówmy się teraz nad czymś takim: „a co jeśli jednego dnia mam n kolokwiów?” (n > 1). Słynna zasada indukcji studenta mówi, że jeśli student jest w stanie nauczyć się do n kolokwiów w nocy przed, to jest też w stanie nauczyć się do n+1 kolokwiów. Dlatego jeśli jesteś w stanie przygotować się do kolosa na noc przed, to z dwoma, trzema… też nie będziesz miał problemów :). Tutaj jednak warto wiedzieć o zasadzie Pareto. Noc może nie starczyć, aby nauczyć się na 100%, jednak pewien (poniekąd 20%) wkład w każdy z n podproblemów da nam wysoki (poniekad 80%) wynik.

Co natomiast robić, jeśli na wykładach nie pojawialiśmy się w ogóle, a kolokwium/egzamin zbliża się nieubłaganie? Cóż, innego wyjścia nie ma, jak tylko kuć wytrwale nie przez jedną, a np. przez trzy kolejne noce. „Od zera do bohatera” w 3 dni wydaje się być osiągalne, niezależnie od poziomu skomplikowania materii. Może to być jednak wyjątkowo wyczerpujące i niemiłe. Spróbowałem raz – udało się, ale rzeczywiście było niemiło.

Systematyczność

Systematyczność – tego słowa nienawidzą wszyscy uczniowe. Nauczyciele nieustannie, od lat powtarzają – ucz się systematycznie, a wyniki przyjdą same. Po 5 semestrach wykorzystywania zasady „noc przed”, na 6 semestrze postanowiłem spróbować (eksperymentalnie) uczyć się systematycznie każdego przedmiotu. Nie ze wszystkimi się udało, bo niektóre były zbyt ohydne, ale jednak z większością tak :). Efekty? Znakomite. Wyniki oscylujące w okolicy 100% były normą. Koszt? Ogromny. Wymagało to wytrwałego chodzenia na wykłady i codziennej powtórki (około dwugodzinnej) tego, co udało mi się tam nauczyć. Dostrzegłem też pewien pozytywny efekt uboczny: w końcu czułem, że do przedmiotów, które lubie przykładam się w stopniu zadawalającym.

Aurea mediocritas

„Jak więc żyć, drogi Łukaszu?” słyszę pytania z tłumu. Już stoicy znali na nie odpowiedź: złoty środek. Dla przedmiotów ze schematami należy uczyć się schematów – najlepiej tak, aby mechanicznie je odtwarzać, gdy ktoś o nie pyta. Dla nudnych, nieciekawych przedmiotów wymagających wiedzy warto stosować taktykę „olewczą”, czyli uczyć się na noc przed. Do przedmiotów interesujących i lubianych najlepiej uczyć się systematycznie.

W ten sposób pielęgnujemy swoje pasje i zainteresowania i zaliczamy kolejne przedmioty, utrzymując przy tym stan frustracji na rozsądnym poziomie.

Disclaimer

Przedstawione powyżej metody działały dla mnie znakomicie. Nie tylko pozwalały gładko zaliczać kolejne przedmioty, ale również dawały dobre wyniki (jeśli mierzyć je wysokością oceny). Warto jednak pamiętać, że nie każdy ma taki sam styl nauki. Niektórzy nie są wstanie przesiedzieć nocy nad książką, innym wystarczy tylko chwilowe spojrzenie na coś i już to potrafią. Do tego, moje doświadczenia opieram wyłącznie na moich studiach, które mogą być specyficzne, ze względu na kierunek czy wydział/uczelnię. Należy więc wypracować indywidualny tryb pracy, a powyższe metody potraktować jako pewną możliwość. Sukcesu więc nie gwarantuję, jednak z całego serca życzę :).

Moja praca inżynierska

Pierwszy semestr działań związanych z pracą inżynierską za mną, pora więc na małe podsumowanie. Tak jak narzekam na wiele aspektów związanych z moimi studiami, to tym razem zdecydowanie są powody do zadowolenia. Poniżej skrótowy opis rozwój „sytuacji” w moim wypadku.

Prolog

Na koniec poprzedniego semestru należało zadeklarować opiekuna i temat pracowni inżynierskiej. Zadanie zdecydowanie niełatwe, szczególnie gdy ma się tylko garstkę własnych doświadczeń i cudzych opinii na temat poszczególnych ludzi. Temat też należy dobrać z głową, jednak tu już prościej – zwykle wiadomo co kogo interesuje :). Ja szczęśliwie nie miałem problemu z doborem prowadzącego – oczywiście chciałem, aby opiekunem pracy został dr inż. Tomasz Jordan Kruk. Wiązało się to z niemałym, papierkowym rajdem po dziekanatach i sekretariatach, jednak bez większych problemów. Problem był natomiast z precyzyjnym tematem pracy. Wiedziałem tylko, że chcę aby dotyczył on zagadnień niskopoziomowych, związanychz  systemami operacyjnymi. Od słowa do słowa, dostałem propozycję zajęcia się systemem Google Chrome OS… i zgodziłem się bez większych oporów :). Pełne brzmienie tematu zostało wybrane jako Budowa systemu Chrome OS – uroczo prawda? Temat zdecydowanie nieoklepany tzn. nieznany, co mogło się wiązać z pewnymi trudnościami.

Zawiązanie akcji

Kolejne tygodnie po wybraniu tematu wiązały się z przekopywaniem Internetu w poszukiwaniu informacji na temat tegoż tworu. Martwiące było to, iż odnalazłem pełno marketingowego bełkotu, a rzetelnych informacji – jak na lekarstwo. W zasadzie jedyne sensowne źródło wiedzy, to strona projektu z dosyć ubogą dokumentacją. Wyzwania – to lubię! Długa i dokładna analiza materiałów przekonały mnie, że najciekawszym elementem systemu Chrome OS są mechanizmy bezpieczeństwa. Za namową Prowadzącego, przez kolejne tygodnie pracowałem nad pierwszym rozdziałem mojej pracy, który nosi tytuł Mechanizmy bezpieczeństwa systemu Google Chrome OS. Muszę przyznać, że to dopiero było wyzwanie! Myśli i treści wiele, jednak ubranie ich w techniczno-naukowy język to prawdziwa sztuka. Uważam się za osobę, która dba o język polski, dlatego każde zdanie składałem z wielkim namaszczeniem. To nie to samo, co blog, gdzie mogę czasem strzelić emotkę, tudzież całkiem kolokwialne stwierdzenie, czy ohydny anglicyzm ;). Ostatecznie, tempo pisania sięgało jednego (sic!) słowa na minutę. Rewelacyjnie, prawda? Efektem tygodni pracy było 16 stron tekstu, z którego naprawdę jestem zadowolony. Mój Opiekun również docenił moją pracę i podsunął mi pomysł, aby zrobić z tego rodziału materiał konferencyjny bądź artykuł – czemu nie!

W tym miejscu wtrącę słówko na temat składania tekstu. Na mojej uczelni (jak zapewne na wielu innych) lansuje się system składu tekstu o intrygującej nazwie LaTeX. Przeczytanie książeczki o tym narzędziu zajęło mi 2 dni, które przepełniły mnie lekką obawą przed czymś z goła innym niż Word ;). Ostatecznie jednak, praca z LateXem okazała się prawdziwą przyjemnością i zdecydowanie ułatwiła mi pracę. Po prostu mogłem skoncentrować się na samym pisaniu, a  nie na ustawianiu marginesów. Z całego serca polecam wszystkim, do każdego rodzaju pisania (prace, dokumentacje, korespondencja, a nawet CV).

Rozwój akcji

Po napisanym rozdziale przyszła pora na wybranie części praktycznej (bo i z tego powinna się składać praca inżynierska). Tu zaczęły się niemałe problemy, bo rozszerzanie Chrome OS może być trudne i niewykonalne w przewidzianym czasie inżynierki. Szczęśliwie, podczas pisania poprzedniego rozdziału natrafiłem na bardzo ciekawą rzecz: koncepcję kontenerów procesów (jest to mechanizm parawirtualizacji o którym niebawem napiszę więcej). Zrodził się więc pomysł, aby rozszerzyć części składowe kontenerów. Ucieszyło mnie to niezmiernie, gdyż oznacza to dużo grzebania w Linuksie! Kolejne 4 tygodnie spędziłem na poznawaniu budowy Linuksa i oswajaniu się z procesem rozwoju jądra. Temat mnie naprawdę wciągnął i z trudem mogłem oderwać się od czytania artykułów i kodu oraz oglądania nagrań z różnych konferencji o tematyce jądra Linuksa. Finalnie, udało mi się zdecydować na rozwijanie mechanizmu cgroups i nad tym będę pracował w najbliższych tygodniach.

Uważny czytelnik może zauważyć, że od chwili wymyślenia tematu zacząłem dosyć mocno się od niego oddalać – i to jest właśnie najlepsza część mojej pracy inżynierskiej – mogę dowolnie zmieniać jej kształt i prowadzić rzeczywiste, odkrywcze badanie, a nie odtwórcze kompilowanie XX źródeł wiadomości. Aktualnie, wygląda na to, że temat będzie brzmiał Mechanizmy zabezpieczeń w nowoczesnych dystrybucjach Linuksa na przykładzie Chrome OS , ale kto wie co przyniesie przyszłość.

I co dalej?

Tak jak pisałem, będę teraz pracował nad praktyczną częścią pracy. Później przyjdzie pora na kolejne rozdziały – jakie? To się jeszcze okaże.

Mała porada

Wszystkim osobom, które dopiero szykują się do pisania pracy inżynierskiej polecam bardzo dobrze zastanowić się nad doborem opiekuna. Nieważne jak zdolni jesteście, dobry mentor może Wam wiele pomóc. Nie chodzi przecież o to, aby prowadził za rękę i pokazywał co, kiedy i ile napisać, tylko o to, aby odpowiednio kierunkował, podpowiadał i ostrzegał przed potencjalnymi zagrożeniami. Temat natomiast, przy współpracy z odpowiednią osobą, wyklaruje się sam.

Cudowna (?) odmiana

Nie spodziewałem się, że kiedyś taki dzień nastanie, ale jednak! Miniony semestr był.. dosyć przyzwoity! To prawda, że masakrycznie zaniedbałem bloga – bo jak zwykle było multum roboty, a sił i minut w dobie nadal tyle samo. Mam jednak silne wrażenie, że nie cały ten czas zmarnowałem.

Zło

Jako urodzony optymista zacznę od tego, co było kiepskie, złe bądź fatalne. Jest na kierunku przedmiot o hucznej nazwie Bezpieczeństwo systemów i sieci. Sama nazwa budzi skojarzenia z medialnymi tematami hackerów i cyberwojen. Czego można więc spodziewać się po tym przedmiocie? Rzućmy kilkoma przykładami… Studenci zabezpieczający serwery, a następnie włamujący się do nich po to, aby poznać stosowane w praktyce techniki (zarówno dobrych jak i złych „gości”) – może nawet drużynowe potyczki, tak aby zwiększyć zaangażowanie? Analiza fizycznych jak i programowych zabezpieczeń sieci – poznawanie budowy i działania, a może nawet programowanie takich rozwiązań? Podstawy social engineeringu? Przykłady zagospodarowania czasu można mnożyć w zasadzie bez końca – potencjał przedmiotu ogromny! A wykonanie..? Wykład ma taką złą sławę, że moja frekwencja wyniosła okrągłe 0%. Tak, po prostu pojawiłem się tam jeden jedyny raz – na egzaminie zerowym. Co jest z nim nie tak? Materiał tam prezentowany jest bezdennie głupi i nudny. Co wykład, to nowy algorytm kryptograficzny do wkucia na pałę. Oprócz ciągu przekleństw do głowy przychodzi mi jeszcze jedno pytanie: dlaczego tak brutalnie zgwałcono, przedmiot z ogromnymi możliwościami? Czy bezpieczeństwo to rzeczywiście tylko kryptografia? Czy znajomość przebiegu algorytmów jest informatykom w ogóle potrzebna (tym chyba się zajmują się ludzie od kryptologii, tj. matematycy)? Żale możnaby wylewać jeszcze przez 3 ekrany tekstu, ale chyba po prostu szkoda słów. Na zakończenie tematu dodam, że laboratoria są dostosowane poziomem do wykładu. Polegają one na napisaniu sprawozdania z klikania w różnych, niedopracowanych programach, które chyba mają za zadanie ilustrować zagadnienia takie jak szyfrowanie czy podpis cyfrowy. Zgroza!

Oferta edukacyjna mojego wydziału jest tak bogata, że musiałem dokonać wyboru najmniejszego zła – padło na przedmiot o nazwie Programowanie aplikacji interakcyjnych, o jakże uroczym skrócie PAIN (który wszystko tłumaczy). Nie ma co się chyba rozwodzić zanadto nad brakiem sensowności tego przedmiotu, jako że aplikacje interakcyjne (tzn. okienkowe) są od jakiegoś czasu w zaniku. Biorąc ten przedmiot miałem nadzieję, że nauczę się nieco technik i dobrych praktyk programowania aplikacji z widokiem okienkowym, że przy okazji poznam parę trendów w tej dziedzinie i co nieco dowiem się o istniejących rozwiązaniach. Tymczasem (prawie) każdy wykład dotyczył tego, jak rozmieszcza się guziki i pola tekstowe w frameworkach/środowiskach takich jak: X, WinAPI, MFC, Qt, .NET (WinForms). Rewelacja, nie? Czy komukolwiek potrzebna jest wiedza o tym, jak wyświetlić menu w WinAPI, albo o tym na ile okien może dzielić splitter dynamiczny z MFC? Totalna bzdura! Nie muszę chyba dodawać, że potem trzeba było to odtwarzać na kolokwium… Najwstrętniejszą częścią tego przedmiotu były jednak laboratoria. Każde z nich polegało na zrobieniu większego, bądź mniejszego programu w każdej z ww. technologii – kupa zmarnowanego czasu na bieganie po dokumentacji i sklejanie kilkunastu okienek. Oczywiście, jakość kodu i zastosowane techniki absolutnie nie miały żadnego znaczenia i nie były sprawdzane. Liczyło się tylko to, jak ładnie dane okienko wygląda. Jako, że jest to przedmiot obieralny, to z całego serca życzę mu szybkiej śmierci przez brak chętnych.

Dobro

Po wyszczególnieniu tego co złe, przechodzimy do rzeczy przyzwoitych, dobrych i genialnych. Nie będę się rozpisywał o przedmiotach takich jak Prawo własności intelektualnej czy Procesory sygnałowe. Powiem tylko, że były one bardzo lekkie i przyjemne i skutecznie zasiliły konto moich cennych ECTS-ów.

Warto jednak napisać coś więcej o przedmiocie o tajemniczej nazwie Języki przetwarzania symbolicznego. Przedmiot ten przedstawia dwa sztandardowe języki przetwarzania symbolicznego – LISP i Prolog. O ile Lisp był mi trochę znany za sprawą Emacsa, o tyle Prolog był całkowitą nowością. Jako język deklaratywny prezentuje całkiem nowe podejście do programowania – podejście bardzo ciekawe. Przedmiot zaliczam na duży plus, ze względu na pokzanie mi czegoś nowego, na co wcześniej nie zwracałem uwagi. Nie mówię, że było prosto, czy też, że Prolog stał się moją nową pasją, jednak moje horyzonty myślowe zostały poszerzone. I o to w studiowaniu chodzi!

Techniki kompilacji to przedmiot wobec którego miałem duże oczekiwania. Głównie ze względu na to, iż zawsze chciałem podjąć się napisania kompilatora i zobaczenia, jak ta cała magia się dzieje. Moje oczekiwania zostały częściowo spełnione. Wykład był naprawdę przyzwoitym wstępem do parsowania, zabrakło na nim jednak czegoś o optymalizacji kodu i o budowaniu samych kompilatorów. Braki wykładu nadrobił jednak projekt, na którym miałem możliwość napisania interpretera podzbioru języka Python. Projekt był naprawdę bardzo duży (zdecydowanie największy jaki robiłem na studiach) i niezwykle ciekawy. Końcowy efekt był dla mnie bardzo zadawalający, niestety nie miałem jednak czasu, aby dopracować kod, aby jego jakość zaspakajała moje osobiste potrzeby ;). Coś za coś, jak widać. Nie jest to może to samo co kompilator, jednak moja ciekawość i ambicja została w 100% zaspokojone. Zastanawiam się czy by przypadkiem nie upublicznić efektu mojej pracy w celach edukacyjnych, jednak niektóre programistyczne potworki, które się tam kryją mogłyby być bardzo antyedukacyjne ;>.

Przechodząc do tego, co na tym semestrze było najlepsze, zacznę od przedmiotu Systemy wbudowane. Przedmiot ten ze względu na niezwykle rozległą tematykę był bardzo przeglądowy. Udało mi się zdobyć przekrojową wiedzę na wiele tematów związanych z systemami wbudowanymi oraz systemami czasu rzeczywistego. Wykład był prowadzony dobrze i otwarcie a mnogość tematów pozwoliła mi po raz kolejny poszerzyć swoją wiedzę ogólną. Czy to dobrze? Zdecydowanie tak! Po co miałbym się uczyć o charakterystyce sygnałów sterujących w sieci polowej PROFIBUS – wystarczy mi wiedza, że taka sieć jest i co mogę dzięki niej osiągnąć! Laboratoria i projekt polegały na zapoznaniu się z systemem operacyjnym VxWorks – muszę przyznać, że to bardzo ciekawe, jednak niekiedy męczące, doświadczenie. Przedmiot na duuuuuuuuuży plus!

Na sam koniec, tradycyjnie – wisienka na torcie: Sterowniki urządzeń – podstawy programowania. Mógłbym długo „ochać” i „achać” na temat tego przedmiotu, ale może po prostu opiszę o czym on jest ;). Przedmiot jest o tworzeniu sterowników do urządzeń wszelkiej maści (mocno w kontekście systemów wbudowanych) w systemie Linux. Myślę, że ciężko byłoby mówić ogólnie, w oderwaniu od konkretnej implementacji, a więc wybór konkretnego systemu jest jak najbardziej słuszny. Wybór Linuksa też jest jak najbardziej na plus, gdyż ma to dużą wartość edukacyjną – przede wszystkim można przejrzeć jak coś jest zrobione, a nie polegać ślepo na dokumentacji. Przedmiot więc koncentruje się na grzebaniu głęboko w jądrze systemu – czyli to, co lubię najbardziej :). Wysoki poziom komplikacji materii i slajdy z kodem mogły niektórych przerażać, ale na tym polega przecież praktyczne podejście do sprawy. Do świetnego wykładu niezwykle ważnym dodatkiem jest projekt, który polega na stworzeniu sterownika do dowolnego urządzenia, na dowolnej platformie (niekoniecznie Linux, mógłbyć też np. dowolny mikrokontroler). Mojemu projektowi poświęce oddzielnego posta, bo myślę, że jest tego wart :).

Świetność tego przedmiotu należy w 100% przypisać prowadzącemu, panu dr inż. Wojciechowi Zabołotnemu. Pan doktor Zabołotny, dzięki swojej niezwykle rozległej, wszechstronnej i praktycznej wiedzy uczynił z wykładu prawdziwe widowisko, na które pomimo piątku i późnej pory przychodziłem z ogromną przyjemnością. Wszystkim studentom, z całego serca życzę takich prowadzących.

Reasumując, dzięki temu przedmiotowi dowiedziałem się masę ciekawych rzeczy związanych z jądrem Linux, systemami wbudowanymi i problemami jakie można napotkać podczas pracy ze sprzętem. Dokładnie to, czym chciałbym się zajmować. Dziękuję!

Ostatni semestr

W końcu udało mi się ukończyć semestr, w którym większość rzeczy zaliczyć mogę na plus. 6 semestr z 7 semestrów studiów inżynierskich – wynik niezbyt imponujący – coż, podobno lepiej późno niż wcale. To, czego jednak znów mi zabrakło, to więcej wolnego czasu na rozwój własnych zainteresowań.

Na zakończenie wspomnę, że przede mną ostatni semestr studiów inżynierskich, który poświęcę w zasadzie w całości (został mi tylko jeden przedmiot – algorytmy heurystyczne) pisaniu pracy dyplomowej. Ze względu na uczelniane wymogi pisanie inżynierki zacząłem już w minionym semestrze – i o tym napiszę w następnej notce.

I znowu porażka

To uczucie gdy…

Zapewne nieobce każdemu jest uczucie, gdy wydaje się, że „już gorzej być nie może”, a potem okazuje się, że no właśnie – wydawało się. Po semestrze numer cztery wydawało mi się, że gorzej być nie może – a tu proszę, taka niespodzianka! Semestr piąty przekroczył wszelkie granice beznadziejności, które ustanowili poprzednicy. Słyszałem pogłoski, że po dwóch pierwszych latach jest już luźno i przyjemnie – akurat!

To złe

Długo „stygłem” zanim napisałem tego posta. Gdybym napisał go od razu po zakończeniu sesji, byłoby w nim zbyt wiele nieprzyzwoitych określeń ;>. W ciągu tych 15 tygodni semestru „zaliczyłem” około 20 bezsennych nocy, spędzonych na roztrząsaniu rozmaitych „mądrości”. Wynika stąd, że średnio w każdym tygodniu nie spałem ponad jedną noc! Być może jestem zbyt ambitny, ale ja po prostu staram się wykonać zlecone mi zadania dobrze. Jak widać w prosty sposób odbija mi się to na zdrowiu, a także kontaktach towarzyskich, zainteresowaniach no i blogu. Do pierwszej fali kolokwiów udawało mi się pisać regularnie i to z nawet dobrym skutkiem. Potem odpadłem. Każdą wolną chwilę, którą jakimś cudem udawało mi się wyrwać szkole wolałem poświęcić na sen, spotkanie z ludźmi i niestety – na blog, czy też rozwijanie zainteresowań czasu już nie było. Czy studia tu są tego warte? Przemyślenia na ten temat pozostawię sobie na oddzielną notkę.

Teraz może wspomnę o garstce (z baaaaardzo wielu) absurdów, które spotkały mnie w tym semestrze. Przede wszystkim wyjątkowo dokuczliwa okazała się tzw. profesorska duma. Niestety, wiele osób pracujących na uczelni w roli wykładowcy/laboranta w ogóle nie przykłada się do swojej pracy. Ich stosunek do prowadzenia zajęć jest delikatnie mówiąc olewczy. Materiał jest przygotowany niedbale, czesto jest bardzo mizerny merytorycznie, albo mówiąć wprost – zawiera rażące błędy. Nie jest to jednak najbardziej denerwująca cecha – bardziej wkurzające jest to, że często właśnie te osoby nie potrafią się przyznać do swojego błędu czy też niewiedzy. Warto być przecież prawdziwym, nieomylnym twardzielem, nie? Dodajmy do tego poniżające odniesienie do studenta (bo co takiemu pro-fesorowi student, pff!) i katastrofa gotowa. Przykłady z życia wziętę? Jeden z prowadzących postanowił przepisać na slajdy tłumaczenie książki, a następnie na wykładzie pracowicie, przez dwie godziny odczytywał je nużącym głosem. To ma być wykład? Jeśli tak, to wykładowcą może być absolutnie każdy, kto potrafi czytać, bo to jedyne, co ten prowadzący zaprezentował swoją osobą. Inny wykładowca z kolei prowadził wykład chaotycznie i niedbale, a żeby zaliczyć przedmiot zalecał przeczytanie książki.. którą oczywiście sam napisał (to, że lansuje tam własny, często rozbieżny z rzeczywistością, ogląd tematu – przemilczę). Dodatkowo oceny z tego przedmiotu wydawały się pochodzić wprost z /dev/random, a liczba „uwalonych” po pierwszej turze przekraczała 50%. Czyja to wina? To chyba oczywista sprawa. Na innym przedmiocie spotkałem się z kolei z laborantem, który nie potrafił się przyznać do swojej niewiedzy – a była ona ogromna, bo niestety wydaje mi się, że został do przedmiotu wybrany przez przypadek. Oczywiście – mógł się przygotować, ale komu by się chciało? A może po prostu nie można zbyt wiele oczekiwać od programistów Javy ;>?

Nuda, nuda, nuda. Tak można scharakteryzować wykład z przedmiotu, który wydawał mi się ciekawy – z tytułu i opisu. Nużący, monotonny głos, patrzenie w podłogę, zerowy kontakt ze studentem – tak można scharakteryzować prowadzącego ten wykład. Człowiek ten na dobre obrzydził mi dziedzinę informatyki, którą kiedyś bardzo lubiłem. Szkoda.

Merytoryka – a raczej jej brak – najbardziej mnie boli. Zdarza się to dosyć często, a koronnym przykładem na moich studiach jest przedmiot o grafice komputerowej. O ile wykład był znośny (może nawet dobry dla kogoś zainteresowanego jakkolwiek tematem?), to już laboratoria zdecydowanie nie. Jak myślicie, co można robić na laboratoriach z przedmiotu o tytlue „grafika komputerowa”? Gdy sam sobie zadałem to pytanie miałem kilka pomysłów – podstawy silników graficznych (budowanie/modyfikacje/analiza), projektowanie/implementowanie algorytmów związanych z grafiką, pisanie sterowników graficznych. Tymczasem okazuje się, że na laboratoriach rysuje/edytuje się obrazki w programch graficznych i modeluje obiekty 3D! Prawdziwy absurd! To jest informatyka na Politechnice Warszawskiej, czy może ASP, tudzież grafika na PWSFTViT? Może warto jeszcze zrobić jakiś przedmiot z nauką Excela i Worda, przecież to też robi się na komputerze! Wydaje mi się, że osoba, która układała materiał na te laboratoria kompletnie nie miała pomysłu na czym mogą polegać albo brakowało ludzi z odpowiednimi umiejętnościami (i lepiej, żeby to był ten pierwszy powód…).

Na dobre zakończenie semestru spotkała nas studentów jeszcze bardzo „miła” niespodzianka. Mianowicie, na 6 semestrze mamy do zrobienia 4-6 przedmiotów, które sami wybieramy. W kwietniu zeszłego roku została przedstawiona oferta programowa liczącą kilkanaście przedmiotów. Okej, niezbyt bogata, ale można już było się zastanowić, co warto wybrać. Przyszedł moment wyboru i… okazało się, że połowy z tych przedmiotów nie ma – części nie można wziąć, a inne w ogóle nie zostały utworzone. Wszelkie skargi i pretensje zostały odrzucone metodą przerzucania odpowiedzialności na kogoś innego – i tak studenci zostali na lodzie. Cały „szeroki” wybór przedmiotów został ograniczony do wybierania „mniejszego zła”, czyli przedmiotów, które cieszą się lepszą sławą od pozostałych. I to mają być studia elastyczne – kpina! Nie wątpię oczywiście, że odpowiedzialni za ten bałagan się nie znajdą.

Podobna, miła sytuacja „administracyjna” miała miejsce na początku semestru, gdy to dziekanat dobroczynnie dał stypendia studentom, a nieco później okazało się, że trzeba je odebrać. Sprawa była moim zdaniem mocno skandaliczna, ale powiedzmy, że postarałem się już o tym zapomnieć.

I to dobre

Szczęśliwie, semestr ten miał kilka miłych akcentów. Przede wszystkim udało mi się dostać do najlepszego z możliwych opiekunów pracy inżynierskiej! Niezmiernie mnie to cieszy, bo wiem że pisanie jej, będzie dzięki temu prawdziwą przyjemnością. Postaram się o tym wspomnieć na blogu w niedługim czasie :).

Dodatkowo na semestrze tym miałem przyjemność uczestniczyć w 3 niezłych wykładach, które jakoś wzbogaciły moją wiedzę. Pierwszy z nich dotyczył technik internetowych – przekrojowo o różnych sprawach związanych z aplikacjami internetowymi; drugi był o systemie UNIX (nota bene, ten sam prowadzący co techniki internetowe) – opis API, a także wewnętrznych mechanizmów; trzeci natomiast dotyczył sztucznej inteligencji – co prawda pierwsza połówka dotyczyła wnioskowania i była naprawdę paskudna (zarówno pod względem materiału jak i prowadzącego), ale druga była naprawdę ciekawa i zainteresowała mnie tematem.

Ostatnim miłym elementem semestru były projekty – doskonała okazja, żeby posiedzieć z kolegami, napić się piwa, zjeść pizzę, a przy tym rozwiązać ciekawe zagadnienia :)! Kod, to jest jednak to, co cieszy programistów najbardziej :P.

Plany?

Nie. Kiedyś pisałem, o tym jakie przedmioty będę robić w nadchodzącym semestrze i czego od nich oczekuję, jednak po przeszłych doświadczeniach wiem, że należy wyłącznie oczekiwać, że będą one mało upierdliwe. O dobry, wysoki poziom jest bardzo ciężko, niech więc chociaż nie przeszkadzają w mojej własnej edukacji.