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.