Programozd a jövőd! – IT a jövőd

A GINOP-3.1.1-VEKOP-15-2016-00001 „Programozd a jövőd!” projekt célja volt, hogy a nemzetgazdasági szempontból egyre jelentősebb informatikai ágazatban minél több diplomás fiatal kezdje meg pályafutását.

Kiemelt feladata volt a munkaerő-kínálat fejlesztése, a felsőoktatási informatikai kompetenciafejlesztés és a képzés támogatása, valamint, hogy a képzési rendszer a gazdasági szereplők igényeinek megfelelő piacképest tudást nyújtson.

Arra került a fókusz, hogy az egyetemi hallgatók megismerhessék az információs-kommunikációs technológiai (IKT) vállalkozások által alkalmazott technológiákat.

A Programozd a jövőd! projekt pillérei

  • I. pillér – Az informatikai oktatás megújítását támogató tudásbázis kialakítása
    Olyan kutatás, felmérés és adatgyűjtés valósult meg, amely lehetővé tette az informatikai munkaerő-piaci igények feltérképezését és a beavatkozások tervezését nemzetközi és hazai jó gyakorlatok feltárásán keresztül.
  • II. pillér – A képző intézmények és a környezetükben működő IKT vállalkozások közötti együttműködések fejlesztése
    Vállalati együttműködések valósultak meg felsőoktatási intézmények bevonásával, amelyek növelték a képzések munkaerő-piaci relevanciáját.
  • III. pillér – Az informatikai szakmák társadalmi-gazdasági elismertségének és népszerűségének növelése
    A középiskolásokat célzó motivációs akciók valósultak meg, amelyek az informatikai szakmák bemutatásán keresztül elősegítették a pályaorientációt a pályaválasztást.
  • IV. pillér – Kommunikációs tevékenységek megvalósítása
    Megvalósultak a projekt tevékenységeit támogató kommunikációs kampányok, amelyek fő célja volt a társadalmi szemléletformálás, a digitalizáció népszerűsítése.
  • V. pillér – IT pályára terelést segítő digitális élményközpontok létrehozása
    Olyan digitális élmény központok kerültek kialakításra, amelyek a diákok, családok számára az IT szakma élményszerű bemutatását szolgálta.

A projekt megvalósulása

A projekt a foglalkoztatás és a gazdaság bővítését kívánta elősegíteni a munkaerő-piaci szempontból releváns informatikai végzettséggel rendelkezők számának növelésével és szaktudásuk minőségének fejlesztésével. Közvetlen célja volt a gazdasági szereplők által meghatározott munkaerő-piaci illeszkedési problémák okait feltáró és kezelő javaslatok kidolgozása és pilot programok lebonyolítása együttműködésben a gazdasági és munkaerő-piaci szereplőkkel, a vállalkozások és a képző intézmények közötti együttműködések fejlesztése, valamint az informatikai szakmák vonzerejének, társadalmi-gazdasági elismertségének növelése.

A KIFÜ, az ITM és az IVSZ voltak a projekt megvalósítói. Célcsoportjaiba az IKT vállalkozások, a felsőoktatási és közoktatási intézmények, az oktatásban érintett szervezetek, illetve az oktatási intézmények tanulói és szüleik tartoztak. 2016 szeptemberben indult és 2023 februárban zárult le a projekt, amely során 21 egyetemmel alakult ki együttműködés, valamint számos kisebb vállalkozással és nagyobb vállalattal is.

Adódott lehetőség Microsoft, Oracle, ULX, SAP tananyagokhoz való hozzáférésre és vizsga voucherekre többféle, elismert MTA és MCP szinten, valamint releváns szakmai gyakorlat megszerzésére is. Az IKT vállalkozások, vagy IKT vállalkozásban dolgozó szakemberek jelezhették részvételi szándékukat vendégoktatásokat szervező cégek felé.

A felsőoktatási intézményeknek lehetőségük volt kiválasztani a vendégoktatás tartására jelentkező személyek/cégek közül a számukra érdekes témában előadó leendő vendégoktatókat.

Az it-tanfolyam.hu részvétele

Az it-tanfolyam.hu oktatói bekapcsolódtak a Programozd a jövőd! projektbe. Ennek keretében:

  • 2 felsőoktatási intézményben vettünk részt a projekt pilot fázisában (2016-2017),
  • 12 vendégelőadást tartottunk 5 felsőoktatási intézményben Java programozás, Ipar 4.0 digitalizáció és mesterséges intelligencia, Funkcionális programozás, Tervezési minták címmel és témakörökben (2017-2022),
  • 47 pályaorientációs előadást tartottunk 34 középiskolában az IT a jövőd! – A Tiéd a pálya! előadás sorozathoz kötődően országszerte (2018-2023),
  • tanfolyamaink hallgatói számára évente offline vagy online rendezvényt szerveztünk, amelyeken sok-sok ismeretterjesztő előadást és laborgyakorlatot tartottunk (2018-2022),
  • tanfolyamaink hallgatóival és gyermekeikkel 6 alkalommal látogattunk meg digitális élményközpontokat (2018-2020),
  • karrierváltó hallgatóink gyermekei 4 alkalommal részt vettek az élményközpontok nyári táborain, ahol mi is tartottunk előadásokat (2019, 2021-2022),
  • mindent precízen dokumentáltunk a projekt követelményeinek megfelelően, valamint
  • oktatóink 14 szakmai vizsgát szereztek (2017, 2019-2021).

Köszönöm oktató kollégáimnak a folyamatos lelkesedést, az állandó tenni akarást és a rendezvényeinken való aktív közreműködést! A koordinációban nyújtott segítséget szerteágazó szakmai kapcsolatainknak köszönhetjük és köszönjük.

Naprendszer szimuláció – objektumorientált tervezés

Naprendszer szimulációt terveztünk és valósítottunk meg Java nyelven, amit három részből álló blog bejegyzés sorozatban mutatunk be (ez a 2. rész):

A Naprendszer szimuláció objektumorientált tervezése

A Naprendszer égitestjeinek ábrázolása a valódi világban előforduló méretük és távolságuk szerint történik azért, hogy a szimuláció stabil legyen. A példában a Nap és a három belső bolygó szerepel, valamint a Hold. Utóbbi igazolja, hogy nem csak Nap középpontú égitestekre működőképes a modell. A szimuláció diszkrét lépések véges sorozataként valósul meg, az egyes lépések között az égitestek a virtuális térben egyenes vonalú egyenletes mozgást végeznek. Olyan lépésközt kell választani, amely rövid idő alatt kellően nagy változást képes bemutatni, ilyen például az 1 számítási ciklus / 1 nap érték. 10 képkocka / másodperces megjelenítést feltételezve – melyet egy időzítő biztosít – egy virtuális év kb. 37 másodperc alatt telik el, vagyis a Föld ennyi idő alatt tesz meg egy teljes fordulatot a Nap körül. Az égitestek kezdő pozíciója fiktív, nem függ konkrét dátumtól, együttállástól, méretük a jobb láthatóság érdekében torzított.

A program indításakor a szimuláció automatikusan indul, és nincs lehetőség a leállításra. Az alkalmazás felületének tetején foglalnak helyet a kezelő nyomógombok, a többi részt a megjelenítés/transzformált modelltér tölti ki. Futás közben – egyszerű ese­mény­ke­zelést megvalósítva – lehet változtatni a méretarányt és a nézőpontot, így az ekliptika síkját felülről és elbillentve is ábrázolhatjuk.

Kivételkezelés nem szükséges a programhoz, mert ez egy önálló demonstrációs eszköz, nem épül rá több elem, nem érhetőek el a szolgáltatásai külső programok számára.

Meghatározott cél és a szempontok: a Java projektben a csomagokat az MVC szerint hozzuk létre, a funkciókat logikusan osszuk szét, csoportosítsuk, tartsuk be az objektumorientált szemléletmód elveit, használjunk interfészt, biztosítsuk az egység­bezárást, legyen öröklődés, alkalmazzuk a polimorfizmust, legyen szép és elegáns megoldás, legyen a jelölésrendszer UML osztálydiagram. Mindez grafikus asztali Java alkalmazásként valósuljon meg.

A modell csomag (M – Model)

A modellhez 1 interfész és 5 osztály tartozik:


Az AdatInterfesz tárolja a modell számításhoz és megjelenítéshez tartozó konstansait (ezek a szimuláció paraméterei), és metódusfejet nem tartalmaz. A Pont2D osztály egy kétdimenziós pont sémája, valós x és y koordinátapárral, eltol() és túlterhelt tavolsag() metódusokkal. Ennek leszármazottja a Pont3D osztály, amely mindezt három dimenzióban biztosítja, valamint pozícióként és sebességvektorként is használható. Az Egitest osztályból létrehozott objektumnak van mérete, pozíciója, sebessége, színe és tömege. Az interfészt implementálja az Adattar osztály, amelynek egitestLista nevű generikus listája elérhetővé és egységesen kezel­hetővé teszi a tervben felsorolt 5 égitestet. A ZIndex osztályú objektumok az égitestek kirajzolásakor szükséges mélységpufferbeli adatot képesek kezelni.

A nézet csomag (V – View)

A nézet 2 osztályból áll:


Az Ablak osztály egy javax.swing.JFrame le­szár­mazott, az alkalmazás teljes grafikus felületét biztosítja, valamint előkészíti az eseménykezelést. Tartalompanelje négy vezérlő nyomógombot tartalmaz és rajta található a rajzpanel objektum, a vaszon. A RajzPanel osztály egy javax.swing.JPanel leszármazott, amely kapcsolatban áll az adattárral, és kezeli a mélységpuffert. Ez felel a szimulált 3D térben lévő objektumok 2D-beli leképezéséért, figyelembe véve a nézőpont elmozdulását is. A rajzolást a felüldefiniált (öröklődés) paintComponent() metódus végzi el.

Az Ablak osztályú objektum elsődleges szerepet tölt be a megjelenítésben, keretbe foglalva a látható komponenseket, vagyis a kezelő nyomógombokat és a modellteret. Az objektum megvalósít egy ActionListener eseménykezelőt, így a program reagálni tud a felhasználó által kiváltott eseményekre. Az ablakobjektum nagyítás és forgatás üzenetek küldésével saját vásznát – és csak azt – frissíti.

A vezérlő csomag (C – Controller)

A vezérlőt 2 osztály valósítja meg:

A Main osztály összefogja a projektet, ez a végrehajtás belépési pontja. Szükség szerint átadja az MVC szerinti objektumok referenciáit egymásnak, ezzel biztosítva a kommunikációt közöttük, valamint el is indítja a szimulációt. A Logika osztály képes az égitestek gyorsulásának és vonzásának kiszámítására, az égitestek mozgatására, továbbá a megjelenítésért felelős komponenst megfelelő időközönként értesíti a képernyő frissítésének szükségességéről, ami az alapbeállítás szerint 30 frissítés másod­percenként.

Magyar Informatika Napja 2023

1959. január 21-én – 64 éve -, az MTA Kibernetikai Kutatócsoportnak köszönhetően kezdett el működni az első magyar elektronikus számítógép, az M-3. A 64. évforduló az informatikusok körében kerek számnak tekinthető ;-). Ezt a napot – a Neumann János Számítógép-tudományi Társaság kezdeményezésére – tekintjük a magyar informatika megszületésének.

Ebből az alkalomból szerveztünk egy rendezvényt mára 9-12 óráig meghirdetve, offline és online egyaránt. Tanfolyamaink hallgatói közül többen is élénk érdeklődést és elkötelezettséget mutatnak a számítástudomány, IT történet, hardver eszközök iránt. Így oktatóinkon kívül őket is felkértük a közreműködésre.

Rendezvényünk programja

  • Kiss Balázs: Köszöntő
  • Marton Zsombor: Az M-3 alkatrészei és műszaki paraméterei, építése, átadása
  • Kaczur Sándor: Az M-3 számítási teljesítménye – összevetve a holdra szállások során használt számítógépekkel, a 2000-es évek Mars rovereivel, valamint egy mai „átlagos” mobiltelefonnal
  • Szegedi Kristóf: Az M-3 üzemeltetése, történeti érdekességei és néhány „éles” alkalmazása
  • Kiss-Kovács Andrea: Virtuális tárlatvezetés Vidovenyecz Zsolt Régi magyar számítógépek – Hungarian Old Computers weboldalán, a ritkaságok és 3D tárlat megtekintése
  • Nyújtó Péter Zoltán: Virtuális tárlatvezetés a Szent-Györgyi Albert Agóra területén található Informatika Történeti Kiállításon (ITK)
  • Kiss Balázs: A Neumann 120 emlékév szakmai programjainak áttekintése
  • Hollós Gábor: Válogatás az Álmok álmodói sorozat, híres magyarokat bemutató 5 perces epizódjaiból
  • Horváth János: Virtuális tárlatvezetés az Óbudai Egyetem Neumann János Informatikai Karának aulájában található IT Evolúció 2.0 kiállításon
  • Hollós Gábor: Múzeumok éjszakája – összefoglalók: 2018-ból, 2019-ből, 2020-ból, 2021-ből, 2022-ből
  • Szegedi Kristóf: Fényképes élménybeszámoló Nikola Tesla – Mind from the Future kiállításról és a World of Robots interaktív kiállításról
  • Kaczur Sándor: Fényképes élménybeszámoló a müncheni Deutsches Museum állandó tudományos és technológiai kiállításairól (elektronika, távközlés, számítástechnika, űrkutatás)
  • Kiss Balázs: Zárás

Köszönöm a résztvevők lelkesedését és színvonalas előadásaikat, élménybeszámolóikat.

A téma iránt érdeklődőknek ajánlom az alábbi négy magyar nyelvű könyvet:

Naprendszer szimuláció – elméleti háttér

Naprendszer szimulációt terveztünk és valósítottunk meg Java nyelven, amit három részből álló blog bejegyzés sorozatban mutatunk be (ez az 1. rész):

A Naprendszer szimuláció elméleti háttere

A Naprendszer szimulációhoz elengedhetetlen, hogy ismerjük a homogén koordinátákat, az elemi műveletek egységes megvalósításához szükséges transzformációs mátrixokat, a tömegvonzás elvét és az implementációhoz szükséges MVC modellt.

Homogén koordináták

Számítógépes algoritmusokkal egyszerű a térbeli transzformáció megvalósítása, ha homogén koordinátákat használunk. Segítségükkel az affin transzformációk egységesen kezelhetők. A cél egy egységes matematikai formalizmus alkalmazása. A pontok az égitestek középpontjait fogják jelölni. Legyen a P pont 3D-beli koordinátái: P=(x, y, z). Szükséges egy konstans érték. Ha w≠0, akkor a P pont koordinátái: P=(w·x, w·y, w·z, w). Ha w=1, akkor a P pont normalizált homogén koordinátái: P=(x, y, z, 1). A pontnégyes kijelölése kölcsönösen egyértelmű.

Transzformációk

Koordináta transzformáció során az ábrázolandó grafikus objektum pontjaihoz (tárgypontokhoz) új koordináta-rendszert rendelünk hozzá. Az objektum nem változik (nem torzul, nem változtatja meg az alakját), csupán a nézőpont változik meg. Például: a koordináta-rendszer eltolása, elforgatása, a koordinátatengelyek felcserélése, tükrözése, és a léptékváltás (nagyítás, kicsinyítés, összenyomás, széthúzás), elforgatjuk az ekliptika síkját a szimulált Naprendszerben.

Pont transzformáció esetén a tárgypontokhoz hozzárendeljük azok egy adott szempont szerinti hasonmását. Például: 3D-s tárgyak leképezése 2D-s képre, objektumok eltolása, forgatása, mozgatása, égitestek mozgatása tömegvonzás alapján. Affin transzformációk (egybevágósági és hasonlósági transzformációk) alkalmazása esetén pont képe pont, szakasz képe szakasz, felület képe felület, valamint metsző térelemek eredeti metszésvonala megegyezik azok leképezett metszésvonalával.

A számítógépes grafika területén az affin transzformációk általános alakja (mátrixosan):

A pont a B=(bx, by, bz) vektorral eltolható. A pont – a T=(t11, t12, …, t33) mátrixot használva – adott szöggel elforgatható, skálázható, tükrözhető. A számítógépes grafikában ezt a transzformációs mátrixot a homogén koordinátákkal alkalmazva, az összes geometriai transzformáció hatékonyan megvalósítható, visszavezethető mátrixok szorzására. Mindezt saját magunk is implementálhatjuk, de része a DirectX és OpenGL rendering pipeline-jának is.

Más módon is lehetne: egyenes és ehhez tartozó szög párossal is dolgozhatnánk.

A tömegvonzás elve

A tömegvonzás bármely két égitest között meghatározott, függ a gravitációs állandótól és az égitestek tömegétől egyenes arányban, az égitestek (tömeg)középpontjainak távolságától fordított arányban. Ez a Newton szerinti értelmezés, amelynek képlete:

A hatás-ellenhatás törvénye miatt a vonzás – egymás felé való gyorsulás – kölcsönös, a gyorsulás az égitestek tömegével fordítottan arányos, sosem nulla. A Naprendszerben a bolygók a Nap körül keringenek, és a bolygóknak lehetnek holdjaik. Egységesen kezelve: égitestek.

A tömegvonzásnak más elméleti megközelítései is vannak: Einstein gödör-modellje, Kepler törvényei, illetve differenciál-egyenletrendszer, integrálszámítás is használható a közelítő képlet helyett (csak ideális modell esetén pontszerű az égitest és gömbszimmetrikus azok tömegeloszlása), illetve ismeretes többféle értelmezés a rendszer/modell stabilitására: Lagrange pontok, Lyapunov stabilitás.

Az MVC modell

A klasszikus megközelítés szerint a szoftveres alkalmazások három, egymástól jól elkülöníthető szereppel rendelkező egységből állnak: modell (model), nézet (view), vezérlő (controller). A Java nyelv Swing komponensei az MVC architektúra szerint működnek.

A vezérlő reagál az érkező eseményre, hozzáfér a modell adatszerkezeteihez, azaz igénybe veszi a modell szolgáltatásait, valamint frissítheti a nézetet. A nézet a vezérlő frissítési kérésére a közvetlenül megkapott adatok alapján, vagy a modelltől elkért adatok alapján frissíti saját magát. A vezérlő határozza meg az alkalmazás, komponens, program működését. Egy modellt több nézet is használhat. A modell közvetlenül is üzenheti a nézetnek, hogy megváltozott. A nézet adja a látványt, amelyet angolul skin vagy „look and feel”-nek neveznek.