2021. november 7. 15:40 @ Pomáz, Magyarország

Nyolcadik félévem az egyetemen

2021 februárjában megkezdődött tanulmányaim egy újabb szakasza, méghozzá a mérnökinformatikus mesterképzés első féléve. Az MSc-t ugyanott kezdtem, ahol a BSc-t is végigcsináltam, vagyis az Óbudai Egyetem Neumann János Informatikai Karán. A tárgyalt félévben továbbra is teljes mértékben online, távoktatásos formában zajlott az oktatás. Ezt a bejegyzést nagyjából szeptember közepén illett volna megírnom, de most már tényleg elkészítem. A rengeteg olvasomtól elnézést kérek a késlekedésért, az egyetemi cikksorozatom második évada ezennel megkezdődik...

A félévben 7 tárgyam volt, de nem mindegyik igényelt ugyanakkora energiabefektetést.  Az Adatbázis- és Big Data technológiák című tárgy során különféle modern, adatbázisokkal kapcsolatos technológiával ismerkedtünk meg, az órák pedig angol nyelven zajlottak, összevonva a külföldi hallgatókkal. Az Algoritmuselmélet több programozást oktató tanárom által is már emlegetett, hírhedten nehéz Formális nyelvek és gépek újratöltött, talán valamennyivel ki is bővített változata. A Diplomamunka I. annyiban tért el az alapképzés Projektmunkájától, hogy az első félévben még nem kellett elkezdeni az irodalomkutatást, csak témát kellett találni és egyeztetni azt a konzulenssel. Információ- és kódelméleten – bár a Neptunban a kötőjel nélkül szerepel a tárgy neve – főleg titkosítási módszerekkel foglalkoztunk, nagy mértékben építve az entrópia fogalmára. Az Informatikai rendszerek biztonságtechnikája tárgy elméleti része néhány hét erejéig fedésben állt a BSc-s Infóbiztonsággal, de aztán teljesen más technológiák felé orientálódott. A Számítógépes képfeldolgozás és grafika című tárgy nagyjából teljes mértékben egyezett a Szoftver-szakirányos Képfeldolgozással, de a majdnem 30 fős csoportból ezen csak ketten vettünk anno részt, mert a mesterképzésre nem csak a NIK-ről, sőt, nem is csak mérnökinformatikus diplomával jöttek, ráadásul a tárgy nem is képezte a kötelező tanterv részét, hanem kötválként volt felvehető. A Szenzormodalitások volt az első olyan tárgyam, ami az Orvosi mérnökinformatika szakirányhoz tartozott. Talán már az előző bejegyzésemben is említettem, hogy a nappalisok kapták ezt a szakirányt, az estisek pedig a Robotikát, tudomásom szerint a nem elegendő tanár munkájának optimális beosztása érdekében, de szerencsére ez pont egybeesett az általam választani kívánt szakiránnyal. A tárgy során mindenféle mérési módszerrel és mérőeszközzel ismerkedtünk meg az emberi test paraméterei kapcsán, de beadandót is kellett készítenünk.

A szorgalmi időszak február 8-án kezdődött, szerencsére órarendi anomáliák nélkül, mert a Tanulmányi Osztály felvette helyettünk a tárgyakat. Az első héten még nem dolgoztam, hogy fel tudjam mérni az órarend és a munkaidő összeegyeztetési lehetőségeit, de a Junior szoftvermérnök munkakört 15-étől már elkezdtem betölteni ugyanannál a cégnél, ahol 2020-ban kötelező szakmai gyakorlatot végeztem gyakornokként. Az órarendem eléggé optimális volt a munkához, mert hétfőn és pénteken egyáltalán nem volt órám, kedden és csütörtökön 16:00 és 18:00 között, illetve szerdán 08:00-12:00-ig is be tudtam ékelni pár munkaórát, amikor éppen nem voltak tanóráim. Természetesen a gyors kontextusváltást az utazási idő kimaradása is segítette, amit az online oktatásnak köszönhettem. Heti 24 órát tudtam vállalni, de később ezt kénytelen voltam 20-ra csökkenteni. Adatbázisokon az egyed-kapcsolat modellel és a normalizációval kezdtünk, tehát az elmélet ismétléssel kezdődött, és az első pár hétben a laborokon is jól átismételtük az Oracle SQL rejtelmeit. Az adatbázisok struktúrája és az indexek áttekintése után belekezdtünk egy több hétig tartó témába, a lekérdezések optimalizálásába. Algoritmuselméleten a véges automatákkal kezdtünk, illetve a formális és reguláris nyelvek alapfogalmaival. Nyelvészettel egybekötött matekként tudnám leírni, némi informatikai kapcsolódási ponttal. A nemdeterminisztikus véges automatákkal is foglalkoztunk, illetve ezek determinisztikussá alakításával. Egy szemléletes példa ezekre egy 9 mezőjű sakktábla volt, amely alapján egy táblázatot készítettünk az egy lépéssel elérhető mezők sorszámairól, ez alapján pedig előállítható egy gráf, amely bemutatja, hogy milyen állapotátmeneteken keresztül tudunk az egyik sarokból az átellenesbe jutni. A reguláris kifejezések – bár nem ennyire elvont formában – a programozásban is gyakran előjönnek mint karakterláncokon szabályszerűségekvizsgálatának eszközei. Mi megtanultuk, hogyan lehet ezen kifejezéseket gráfokká alakítani. Infóbiztonságon először ismételtünk: informatikai rendszer elemei és sérülékenységek típusai. illetve különféle támadási típusok. Ilyenkor jön jól, hogy OneNote-ból a 2018 óta készített rengeteg jegyzetemet ki tudtam exportálni Markdown-formátumban, mert így a GitHubomat nézegetve tudok visszaemlékezni, hogy mit is tanultam bő fél éve. A laborokon volt egy kis Active Directory, amivel már foglalkoztunk Oprendszereken is, aztán címtárintegráció és csoportmenedzsment, illetve PGP következett részben már ismert, részben új anyagrészekkel. Kódelméleten a kódolással és dekódolással, a forrásból célhoz üzenet juttatásának alapfogalmaival kezdtünk, aztán az entrópia és kódhossz kapcsolata, majd a prefix kód generálása következett néhány élőben, billentyűzettel nehezen lejegyzetelhető tétellel. Szenzormodalitásokon az érzékelők típusaival, DCS és SCADA rendszerekkel, majd biológiai jellemzők mérésével foglalkoztunk, beleértve a vérnyomásmérést, a cukorbetegség okait, a gyógyszeradagolás fejlődését és a légzés-, szívműködés-, illetve mozgásfigyelést. Képfeldolgozáson nem sokat jegyzeteltem a tantárgyi követelményeken kívül, mert szerencsére felmentést kaptam a vizsga alól, amiért 2019 őszén egy szinte csak nevében eltérő tárgyat már teljesítettem. Próbálkoztam egy OpenCV-s mobilalkalmazással mint beadandó, de annyira nem sikerült működésre bírnom még alapszinten sem, nem hogy még fel is dolgoztam volna a kamerából származó adatokat, hogy ezt végül elengedtem. Gyakorlatilag ugyanazokon a témákon mentünk végig mint pár évvel korábban, szóval ajánlom az ötödik félévről szóló bejegyzésem vonatkozó részeit elolvasásra. A hónap utolsó 1-2 hetében nekikezdtem a szenzoros beadandónak. Az 5-6 éve használaton kívüli, még anno Kínából rendelt kis Arduino-érzékelőket igyekeztem egy cserepes növény minél több környezeti paraméterét megfigyelő rendszerben összesíteni.

A diploma csomagolása

Március elején megszaporodtak a házi feladataim, de februárban is akadtak azért, főleg Algelmből és Infóelmből, hogy egy kicsit moduláljam a tárgyak megnevezéseit. Huffman-kód és Shannon-Fano kód, átlagos kódhossz, Algelmből pedig DFA-k és NFA-k gráfjainak megszerkesztése a leírás alapján. Adatb-n táblák összekapcsolásának módjaival, majd az Apache Cassandra technológiával, a MongoDB NoSQL-megoldással és a Big Data alapfogalmaival és például a Hadoop, Hive és Spark technológiákkal ismerkedtünk. 9-én írtunk egy elméleti és gyakorlati zárthelyit a relációs adatbázisok témájának megkoronázásaként. Algelmen a reguláris nyelvek mellett megjelentek a Turing gépek is, majd áttértünk a generatív nyelvtanokra. Infóbiztonságon ismétlésként feladták a kriptológiáról szóló néhány előadás felvételét, ami talán még 2019 tavaszán készült a nagyelőadóban, és én is jelen voltam rajtuk mint tisztelt hallgató úr. Infóelmen a távközlési csatornával, hibajelzéssel és hibajavítással foglalkoztunk, illetve írtunk egy zh-t is: fix hosszúságú kód, Huffman-kód fával, átviteli mátrix, stb. Szenzormodon az EKG-jelekről, a beadandómhoz is kapcsolódó mezőgazdasági monitorozásról, a távoli adattovábbításról és különféle vezetékes kommunikációs szabványokról tanultunk. Képfeldolgozáson sem voltam teljesen inaktív, egy multifunkciós, Photoshop-szerű programot is elkészítettem, amely főleg intenzitástranszformációkat hajtott végre egy betöltött képen, OpenCV segítségével. Általában a csütörtöki dupla előadások során készítgettem ezt a beadandót, illetve rakosgattam össze a növényfigyelő áramkört. Március 11-én is így tettem, de kora délután már éreztem a megfázás és a láz jeleit magamon. Másnap este már 39,2 fokos lázam volt, aztán egy hét múlva ki is derült az újpesti Aquaworld szűrőbuszánál, hogy sikerült elkapnunk a COVID-19-et. Ezen eléggé meglepődtem, mert nagyjából ki sem mozdultam a házból, mert az óráim és a munkám is otthonról zajlottak, de így jár az ember, ha rendelkezik közoktatásban dolgozó rokonnal, aki mindennap találkozik gyerekek tucatjaival, illetve azok családtagjaival. Nem volt valami kellemes az az egy-két hét, ameddig zajlott a betegség, de szerencsére tudtam a munkát és a tanulást is folytatni, bár a meetingek közben nehezebb volt a kommunikáció. A levegővétel nehezebbé vált, talán légszomjnak lehetne nevezni, az első néhány napban gyakran fújtam az orromat és néha köhögtem és kicsit le voltam gyengülve. Ami ijesztő volt, hogy a péntek esti pirítósevés közben még a paradicsom és a magyaros vajkrém ízét sem éreztem, illetve a vádlim környékén éjszakánként furcsa fájdalom is jelentkezett, de zsibbadás nem rémlik. Szerencsére esetemben nem volt túlzottan durva lefolyású a betegség, de egy légzőszervi betegséggel rendelkező emberre ez sokkal veszélyesebb tud lenni. Két hét karantént rendeltek el a gyorsteszt eredménye miatt, de ezt nem volt nehéz betartani. Visszatérve a tanulásra, 17-én írtuk az Infóelm zh-t, aztán 25-én 23:59-ig kellett leadni a témabejelentő lapot, amin a Diplomamunkaként választott téma címét, és az abban konzulensként segíteni tudó tanárt kellett megjelölni. Gondolkoztam az orvosi mérnökinfóval kapcsolatos témán is, de nem jutott eszembe semmi, emellett volt egy kis hiányérzet bennem a szakdolgozatként megvalósított képszínezőnkkel kapcsolatban is. Sok jót hallottam a generatív kontradiktórius hálózatokról (GAN), ezért témaként vállaltam, hogy megpróbálok ilyen neurális hálóval is megvalósítani egy remélhetőleg korábbiaknál is jobban működő színezőt, elszakadva a tájképektől. A projektmunka-társam nem jött tovább mesterképzésre, ezért ezt a szakdogát egyedül csinálom. Meglátjuk, mennyire fog sikerülni az ő kiváló technikai ötletei és lustaságom ellenirányába kifejtett unszolása nélkül. Március utolsó napján Szenzormodból is zh-t írtunk, ha jól emlékszem egy többoldalas esszét a szív paramétereinek méréséről és számos fogalom definíciójából. A szkenner persze ekkor akart csődöt mondani, ezért csak nehezen tudtam beküldeni a dolgozatot. Bezzeg ilyen probléma nem fordult elő a szép emlékű, 2017-es péntek esti, úgynevezett duplamatekzéhákon, melyeket gólyaként volt alkalmam átélni. Majd' el is felejtettem, hogy 25-én hozta a postás a diplomámat és a hozzá tartozó, Neptunból kinyomtatott lapokat. Ideje volt már a január 5-én lezajlott záróvizsga óta, de valószínűleg még az egyetem is reménykedett benne, hogy fizikailag is megtarthatják a diplomaosztót, és a kézbesítések megszervezése is okozott némi logisztikai bonyodalmat.

COVID-teszt eredményére várva

Áprilisban Adatb-n Sparkkal és Redis-szel foglalkoztunk, de én már meg nem mondom, hogy mit csináltunk, a Git log alapján pedig akkoriban foglalatoskodtam a beadandóval is, amely részeként először egy 10 órás folyamat során összescrape-eltem több százezernyi dalról, albumról és előadóról szóló adatot a Spotify API-ja segítségével, aztán ezekhez készítettem sebesség szerint optimalizált lekérdezéseket, összekapcsolva pár táblát és részletesen kielemezve az execution planeket. A laborokon MongoDB-vel és Cassandrával hajtottunk végre NoSQL-feladatokat. Nekem ezek kifejezetten tetszettek, ezért a Szenzormod áramkörömben is használtam hasonló adatbázist. Volt egy kis bonyoldalmam a Magyar Postával is, mert sikerült a NAV-os bejelentő papírt Gödöllőre küldeniük, aztán nagy nehezen visszajutott hozzám, és végül személyes kézbesítéssel jutott az irodába. Legalább kicsit jobban megismertem az Üllői út környékét, mert nem sokszor voltam bent a munkahelyemen fizikai formában. Algelmen mindenféle normálformáról és a Cyk-algoritmusról tanultunk, illetve zártsági tételekről. A tanárunk szerencsére gondolt arra, hogy a tárgy gyakorlati példái nem éppen egyszerűek, ezért 2-3 gyakorlóórát is tartottunk a tananyag végéhez közeledve. Talán húsz olyan feladat volt feltöltve, amelynek a megoldását is ismertünk, de nagyjából kétszer ennyi megoldás nélküli is volt, ami nem tette könnyűvé a helyzetet. Infóbiztonságon egyszerre több virtuális gépen dolgoztunk. Különféle szerveralkalmazásokhoz kapcsoltuk a kliensgépet, amelyek mindegyike felhasználók csoportban kezelését, házirendek betartatását, jogosultságok menedzselését végezte többek között. Írtunk scriptet felhasználók Active Directoryba regisztrálására, és az IBM Tivoli szoftvercsomaggal és VPN-beállításokkal is dolgoztunk. Sokféle témát érintettünk, valamennyit biztos kihagytam. Infóelmen tömörítési és titkosítási módszerekről tanultunk, aztán 21-én megírtuk a második zárthelyit: Golay-kód hány hiba javítására alkalmas, futamhossz-kódolás és LZW-tömörítés papíron, illetve tesztkérdések. Szenzormodból volt néhány óra, amikor az Arduinóról tanultunk és Tinkercaden szimuláltunk kisebb áramköröket, illetve folytattuk az adatfeldolgozás témakörét. A hónapban volt még jó pár házi feladat Infóelmre, és április 27-ig kellett a beadandó fogalmazást is elküldeni, amelyben egy 3 évnél nem régebbi tömörítési vagy titkosítási módszer bemutatása volt a feladat, ha jól emlékszem nagyjából 5-10 oldalas terjedelemben. Én a JPEG XL-ről írtam, majd mutattam be prezentációt, ami eléggé jól takarékoskodik a tárhellyel.

A ritkán felkeresett irodánál

Május elejéig kellett beadni a Photoshop-szerű programot, aminek a párhuzamosítása nem igazán valósult meg, de nagyjából jól működött. Még hisztogramot is képes voltam C++-os GUI-n megjeleníteni. Adatb-n megírtuk a második zh-t, egy vegyes témakörökből álló tesztet és gyakorlati Cassandra-/MongoDB-feladatokat kézhez, vagy inkább géphez kapva. Algelmen gyakoroltunk, a Diplomamunka kapcsán pedig párszor konzultáltam, hogy a félév végéig megfogalmazzuk a dolgozattal kapcsolatos elvárásokat egy oldalban. Infóelméleten bemutattuk a prezentációinkat, Infóbiztonságon pedig zárthelyit írtunk, ha jól emlékszem AD-vel és VPN-nel kapcsolatos feladatok voltak többek között. Képfeldolgozáson abban állapodtunk meg a tanárral, hogy a témához erősen kapcsolódó projektmunkámat prezentáljam féléves feladatként. Az élő adás varázsát elkerülendő, képernyőfelvételt készítettem a PPT-ről és a szoftver működéséről. Menet közben elkészült a növényfigyelő áramköröm is, amit elég érdekesen oldottam meg, az órák során megismert adattovábbítási és feldolgozások tekintetében. A hőmérsékletet és páratartalmat, valamint a fényerőt, a talajnedvességet és a jelenlétet ultrahanggal mérő szenzorokat egy eBayen vásárolt, piros Arduino-hamisítványra kötöttem, ami egy első generációs Raspberry Pi-től kapott tápellátást. Mivel a Wi-Fi adapter kicsit problémás, rákötöttem a Pi-t a routerre. A Pi-n futott egy Python-script, ami képes volt az Arduinótól soros porton keresztül mért adatokat fogadni, majd azokat egy MongoDB-adatbázisban eltárolni. A script küldte a vezérlőjeleket is a szenzoroknak, tehát ő kért le bizonyos időközönként aktuális számokat a mérőeszközöktól. A Raspberry Pi-re SSH-val rácsatlakoztam az asztali gépről, így indítottam el az alkalmazást, illetve onnan értem el a Pi-n tárolt adatbázist, benne a mérési eredményekről. Tényleg minden szenzort felhasználtam, ami csak rendelkezésemre állt, így került bele a rendszerbe az ultrahang szenzor is, ami bejegyzéseket írt az adatbázisba a célnövény megközelítéseinek eseményeiről, passzívan védve azt a támadásoktól, illetve lehetővé téve például az átlagos locsolási időpont meghatározását, ha még a talajnedvesség tűréshatár feletti növekedését is számításba vesszük. Az áramkörről és a programról videót készítettem, melyet aztán Microsoft Teamsen keresztül bemutattam. Többen használtak fel valódi orvosi mérőműszereket a beadandójukhoz, mert az egyetemen ezek rendelkezésre állnak, szóval jól jött volna a jelenléti oktatás ezesetben. 20-án levizsgáztam Infóbiztonságból, amit kicsit elrontottam a Tivoli-technológiák tekintetében, de a gyakorlati eredmények felhúzta a jegyet. Ezután már csak az Algoritmuselméletre gyakoroltam egyénileg és kettes csoportba fejlődéssel. Eléggé tartottam a vizsgától, nem igazán volt olyan forgatókönyv a fejemben, hogy sikerül átmennem rajta. A tanulás könnyítése érdekében kértem a heti munkaidőm csökkentését húsz órára, méghozzá a keddi és csütörtöki, órák után nem sok szünetet hagyó (Miklós) 16:00-18:00 intervallum felszabadításával. 60% helyett tehát május óta 50%-ban dolgozom, de a jelenlegi órarendemhez ennél többet nem is nagyon tudnék vállalni.

Növényfigyelő áramkör

Június eleje tehát az Algelm vizsgáról szólt a munka mellett. Májustól kezdve többször nekikezdtem a hatvan példának, aminek csak egyharmadához tartozott megoldás, a többinél tehát csak feltételezhettük, hogy jól oldottuk meg. Nagyjából negyven A4-es oldalt írtam tele gyakorlásként (a félév korábbi részeit nem számítva), aztán ezeket mind be is szkenneltem a papírgyűjtésbe száműzés előtt. 7-én lezajlott a vizsga. A tanárunk többször említette, hogy nem kötelező az öt példa közül az utolsó kettőt megcsinálni, csak ha hármasnál jobb jegyet szeretnénk, illetve engedmény volt, hogy néhány példa már ismert lesz, értelmet adva ezzel a minél alaposabb gyakorlásra. A kétórás vizsga második felében a nehezebb példákkal is megpróbálkoztam, hátha sikerül megoldani, és pozitív csalódásként még a Turing-gépes példával is tudtam részeredményeket elérni. Nem tudom sajnos, hogy ott mit rontottam el végül, de négyest kaptam, szóval a többi példát jól oldottam meg. Ezzel tehát véget ért a mesterképzés első, összességében nyolcadik félévem az egyetemen. Azt talán már leírtam korábban, hogy 2-1-3-4. féléves sorrendben haladok a tárgyakkal, a TO-féle munkaidő-optimalizálás miatt, tehát túl vagyok már a második féléven, a mesteres gólyák számára spoilereket biztosító képességgel felvértezve.

Udvar office

Nyáron folytattam a munkát, továbbra is home office-ban, illetve néhányszor belföldi „nagyszülők office” is előfordult. Szabadságot nem nagyon vettem ki, hogy a téli vizsgaidőszakra maradjon, de a 20 órát tömbösítve gyakorlatilag 4,5 napom minden héten szabad volt, az meg bőven elég még az unatkozásra is, így tanulás nélkül és sajnálatosan a diplomamunka ősz előtti nem elkezdésével.

Nem otthoni munkavégzés

Szeptember elején volt a regisztrációs hét. Ezért lett volna jó már akkoriban megírnom ezt a bejegyzést, mert akkor jobban emlékeznék a tárgyfelvétel körülményeire. Nem rémlik semmilyen fennakadás sem június közepéről, sem az első őszi hónapból. Így már jóval könnyebb felvenni a tárgyakat, hogy csak egyetlen kurzus van mindenből, mivel nem járunk túl sokan mesterképzésre. Ebben a félévben a diplomamunkának az irodalomkutatási részét kell elvégezni, tehát írni kell az érintett témákról és az enyémhez hasonló projektekről. Ez folyamatban van, de még sok a feladat. Az órarendem nem annyira optimális mint tavasszal, mert csak a péntek teljesen szabad, teret adva a nyolcórázásra. Van egy-két olyan nap, amikor itthon dolgozok reggel két-három órát, majd beutazok az egyetemre, de van két olyan nap is, amikor viszont „school office”-t valósítok meg, és az aulából vagy egyéb konnektort és Internetet biztosító területről dolgozom, hogy aztán odaérjek az órára. Nem ideális így, de megoldható. Kíváncsi leszek, hogy jövőre – amikor a 3-4. félévekkel megjelenik több szakirányos tárgy, köztük választhatókkal – mennyire tudom majd összeegyeztetni a munkát a tanulással, de nem szeretném egyiket sem abbahagyni, mert a tapasztalatszerzés és az önálló jövedelem is fontos, nem csak az okleveles mérnökinformatikusság. Pont három órája kezdtem el írni ezt a bejegyzést, ami egyéni rekordnak számít. Remélem, nem hagytam ki semmilyen fontos eseményt, ami a tanulással van összefüggésben, az órákon érintett témákat viszont szándékosan nem fejtettem ki bővebben, mert akkor nem maradna időm semmire. Elkészítem a féléves összesítést, aztán visszatérek a jelenbe, hogy remélhetőleg legkésőbb március elején újabb fejezetet közölhessek egyetemi kalandozásaimról, terveim szerint e három óra kihagyás miatt bekövetkező bukások számának minimalizálásával.

-----

Tanulmányi átlag: 4,81
Megszerzett kreditek: 33/120 (MSc ~27,5%)
[57 EAdás: ~102 óra + 37 Labor: ~48 óra + 4 Konzultáció: ~óra]

Tantárgyak:
  • Adatbázis- és Big Data technológiák (4 kr5-ös)
    • [12 EA: ~18 ó + 12 L: ~18 ó]
  • Algoritmuselmélet (5 kr, 4-es)
    • [9 EA: ~21,75 ó + 4 GY: ~9,66 ó]
  • Diplomamunka I. (7 kr, 5-ös)
    • [2 K: ~1,25 ó]
    • >> Diplomamunka II. (7 kr)
  • Informatikai rendszerek biztonságtechnikája (4 kr, 5-ös)
    • [2 EA: ~3 ó + 5 L: ~7,5 ó]
  • Információ- és kódelmélet (5 kr, 5-ös)
    • [11 EA: ~24,75 ó + 1 K: ~2,25 ó]
  • Számítógépes képfeldolgozás és grafika (4 kr, 5-ös)
    • [10 EA: ~15 ó + 10 L: ~15 ó + 1 K: ~1,5 ó]
  • Szenzormodalitások (4 kr, 5-ös)
    • [13 EA: ~19,5 ó + 10 L: ~7,5 ó]

MEGJEGYZÉSEK: