Eseményvezérelt és vizuális programozás

A tantárgy angol neve: Event Driven and Visual Programming

Adatlap utolsó módosítása: 2023. október 20.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar
Üzemmérnök-informatikus szak, BProf képzés, közös tárgy

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIAUBB01 3 2/0/3/f 7  
3. A tantárgyfelelős személy és tanszék Dr. Csorba Kristóf,
A tantárgy tanszéki weboldala https://www.aut.bme.hu/Course/VIAUBB01
4. A tantárgy előadója

Dr. Csorba Kristóf, egyetemi docens, Automatizálási és Alkalmazott Informatikai Tanszék

5. A tantárgy az alábbi témakörök ismeretére épít

·         Objektum orientált programozás

·         Verziókövetési alapismeretek Git alatt

·      Alapvető unit tesztelési ismeretek

6. Előtanulmányi rend
Kötelező:
Training.Code=("5N-A9") ÉS
TárgyEredmény( "BMEVIIIBA02" , "jegy" , _ ) >= 2

A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

7. A tantárgy célkitűzése

 

A tárgy keretein beül a hallgatók a korábbi objektum-orientált ismereteikre alapozva megismerik az eseményvezérelt és grafikus programozás legfontosabb módszereit. A hallgatók megismerik a C# nyelvet és a .NET/.NET Core környezeten keresztül elsajátítják a grafikus felhasználói felület (GUI - Graphical User Interface) programozási alapjait. Megismerik a modern osztálykönyvtárak fontosabb szolgáltatásait (reflexiós technikák, adatkötés, rajz és szöveg megjelenítése stb.), valamint betekintést kapnak a feladatok párhuzamos futtatásának lehetőségeibe.


 

8. A tantárgy részletes tematikája

·         A .NET és .NET Core keretrendszer felépítése és szolgáltatásai: architektúra, főbb komponensek és szerepük. JIT fordítás és toolchain (megértés szint - K2)

·         A C# nyelv alapjai: nyelvi konstrukciók, láthatóság, property-k, attribútumok. Kollekciók, generikus típusok. Népszerű osztálykönyvtárak: szövegkezelés, I/O kezelés, Linq és lambda kifejezések, XML (alkalmazás szint - K3)

·         XML kezelés, események, metódus referenciák, eseményvezérelt programozás. (alkalmazás szint - K3)

·         Adatkötés, rajz és szöveg megjelenítése. Szálak, párhuzamos feldolgozás, szinkronizációs technikák. MAUI (Multi-Platform App UI) és XAML, adatkötés. (alkalmazás szint - K3)

·         Dependency injection, tesztelési technikák (elsősorban laborpéldákban bemutatva) (megértés szint - K2)

 

·         Reflexiós technikák (megértés szint - K2)

  

Az előadások tematikája:

Előadás

Előadás anyaga

1.

Bevezető, demó, követelmények ismertetése, egyéb adminisztratív és technikai tudnivalók. A .NET keretrendszer komponensei és szerepük. Toolchain, JIT, .NET Core

2.

C# alapok (osztályok, láthatóságok, érték és referencia típusok)

3.

Kollekciók, generikus tömbök

4.

Osztálykönyvtárak: szövegkezelés, I/O (házi feladat kiadása)

5.

Események, delegate és event, eseményvezérelt programozás

6.

Linq, lambda kifejezés és XML

7.

MAUI: alapok, xaml, események

8.

MAUI: adatkötés

9.

MAUI rajzolás, hasznos UI elemek

10.

MAUI: command pattern, MVVM architektúra (a házi feladathoz mindent tudnak)

11.

UI és háttér szálak

12.

Attribútumok, reflection használata

13.

Kimaradt részek bepótlása, nagyobb projektekből esettanulmányok és további rövid példák hasznos .NET-es eszközökre

14.

Az esetleges óraelmaradások miatt ez az óra elmaradhat. Ha nem, a témája összefoglalás, kitekintés, érdekességek.

A gyakorlatok (laborok) tematikája:

 

Labor

Labor anyaga

1.

Labor infrastruktúra használata, git ismétlés, github classroom használata, fejlesztő környezet alapok

2.

C# alapok

3.

Kollekciók, generikus tömbök, házi feladat kiadás

4.

szövegkezelés, I/O

5.

eseményvezérelt programozás, code review

6.

Linq, lambda és XML

7.

1. zárthelyi megírása (a ZH ütemtervnek megfelelően esetleg másik időpontban)

8.

MAUI alapok, xaml

9.

MAUI adatkötés, UI elemek

10.

MVVM architektúra, Command pattern

11.

UI és háttér szálak, integráló jellegű feladat

12.

Szálkezelés, többszálú programozás

13.

Integráló jellegű, összetett szoftverfejlesztési feladat

14.

2. zárthelyi dolgozat megírása (pontos időzítés a ZH rendnek megfelelően)

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

 

A tantárgy oktatása során az előadások és laborok laza kapcsolatban vannak, mivel sok labor időpont esetén az előadás-labor sorrend nem minden esetben garantálható. Az előadások rövid demók és érdekességek mellett elsősorban a szemléletet, a működési alapkoncepciók átadását célozzák meg.

A laborok anyagukat tekintve bár építenek az előadásokra, a kiadott segédanyagok törekednek arra, hogy egy külön tanulási egységet képezzenek. Azért is, mert az előadások alacsony száma miatt az anyag egy jelentős része nem fér bele az előadásokba. A laborok a „flipped classroom” koncepciót követve igyekeznek az önállóan megtanulandó anyagot az otthoni felkészülésre helyezni, hogy az oktatóval együtt töltött időt ténylegesen a kérdések és interaktívan hatékonyabban megtanulható szempontok elsajátítására koncentrálhassák.

A laborok jellegüket tekintve az alábbi jellegeket öltik:

·     Hagyományos labor kiadott segédlettel, elvégzendő feladatokkal. A hallgatók önállóan dolgoznak, a laborvezető segít. A labor elején beugró iratható, melynek eredménye beleszámít az értékelésbe. A labor teljesítésének feltétele a megoldás határidőre történő leadása. A határidő előre kihirdetett módon lehet a labor vége után is.

·      Bizonyos laborok anyaga otthoni feldolgozásra is alkalmas, így az órarendi időpontban lévő tantermi labor ehhez kapcsolódó konzultációként is igénybe vehető. A megoldást a hallgatóknak ebben az esetben is elektronikusan, határidőre kell leadni. Az egyetemi helyszínen történő teljesítés vagy konzultációs lehetőség 24 órával korábbi, előzetes jelentkezéshez köthető.

·  Páros programozással tanuló labor: ezeken a laborokon a hallgatók párban (de mindig más párosításokban) dolgoznak a feladatukon, mely lehet a házi feladat elkezdésével kapcsolatos, vagy egy a laborok listájában „hagyományos labor”. A cél az egymástól kérdezés, egymásnak magyarázás, valamint magának a páros programozásnak a gyakorlása, konkrét feladatokon. A laborvezető ugyanúgy segít, mint egy hagyományos laboron.

·    Házi feladat leadási vagy online zárthelyi labor: az ütközésmentes leadási időpont szervezés érdekében a házi feladatok leadása is laboridőpontban történik, ahol a házi feladatban a helyszínen elvégzendő módosítások is kérhetők. Szükség esetén teremfoglalási okokból az online ZH megíratása is történhet labor időpontban.


A tananyag elsajátítását a laborokon kívül a félév felénél és végén egy-egy zárthelyi dolgozat ellenőrzi.

A tárgy keretében kiadunk otthon feldolgozandó tananyagokat is online videók, tutorialok, leírások formájában. Ezek között van olyan is, ami a kontaktórákon nem hangzik el, de a tananyag részét képezi.


 

10. Követelmények

 

A szorgalmi időszakban:

A pontozott laboron a munkát és eredményeket a laborvezető pontozza, az összes ilyen laborra egyenletesen elosztottan, összesen 50 ponttal. A két zárthelyi feladat maximum 25-25 pontot ér, így az összes megszerezhető pont 100 pont.

A zárthelyi dolgozatokban a programozási feladatok mellett lehet teszt alapú beugró is, melynek elégséges teljesítése (legalább 70%) a programozásos részek elkészítésének előfeltételeként előírható.

A félév sikeres teljesítésének feltétele

·        A pontozott laborok 70%-ának teljesítése (ami a megoldás határidőre történő beküldését és legalább 1 pont megszerzését jelenti).. A nem pontozott laborok itt nem számítanak bele a 100%-ba.

·         Minden zárthelyi külön-külön legalább elégséges szintű (40%) teljesítése.

Az előzetes felkészülésre kiadott anyagok elsajátítása online teszt formájában is történhet (például labor eleji beugró helyett), melyeket határidőre kötelező adott szinten (80%) teljesíteni és minden teszttel háromszor lehet próbálkozni. Ezek nem teljesítése tesztenként 2 pont levonásával jár. (A próbálkozások között minimális időkülönbség előírható.)

A félév során, esetleg előre be nem jelentett módon, további bónusz pontok nyerhetők, melyek hozzáadódnak a félév során gyűjtött pontokhoz. A tantárgy munkafolyamatainak automatizálása érdekében fontos a formai előírások és határidők betartása. Az ettől való eltérés mínusz pontokkal is büntethető.

Az osztályzat megállapításának módja:

 

A zárthelyikre és laborokra kapott pontszámok összege alapján az alábbi ponthatárok szerint: 0-39p elégtelen, 40-54p elégséges, 55-69p közepes, 70-84p jó, 85-100p jeles.

11. Pótlási lehetőségek

A zárthelyik előre kihirdetett időpontban pótolhatóak. Javító célú pótlás esetén rontani is lehet. A laborok pótlására nincsen lehetőség. A hallgató hibájából késve leadott, de bizonyíthatóan időben elkészített laborok 50% pontszámmal vehetők figyelembe.

 

12. Konzultációs lehetőségek

 

Egyrészt több labor alkalom alkalmas konzultációra is, de igény esetén közös konzultációs időpont is szervezhető. Ezen kívül a félév során folyamatosan használható online kommunikációs csatorna áll a hallgatók rendelkezésére.

 

13. Jegyzet, tankönyv, felhasználható irodalom

·         Albert István et al: A .NET Framework és programozása

·         Andrew Troelsen: A C# 2008 és a .NET 3.5 – 1, 2. Kötet

14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka

 

Kontaktóra

70

Készülés előadásokra

20

Készülés gyakorlatra

0

Készülés laborra

20

Készülés zárthelyire

50

Önálló tananyag-feldolgozás

50

Vizsgafelkészülés

0

Összesen

210

 

15. A tantárgy tematikáját kidolgozta Dr. Csorba Kristóf, egyetemi docens, Automatizálási és Alkalmazott Informatikai Tanszék