Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

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

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

    Adatlap utolsó módosítása: 2018. június 25.

    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, Automatizálási és Alkalmazott Informatikai Tanszék
    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 rendek grafikus formában itt láthatók.

    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 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 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. WPF é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.

    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 (1. házi feladat kiadása)

    5.

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

    6.

    Linq, lambda kifejezés és XML

    7.

    Az 1. házi feladat specifikációjának változása (a megrendelő meggondolta magát…)
    WPF (Windows Presentation Foundation): alapok, xaml, események

    8.

    WPF: adatkötés

    9.

    WPF rajzolás, hasznos UI elemek

    10.

    WPF: command pattern, MVVM architektúra (2. 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, continuous integration szerver és unit tesztek használata

    2.

    Hagyományos labor, C# alapok

    3.

    Hagyományos labor, C# alapok, benne dependency injection és tesztelési alapok

    4.

    Hagyományos labor, kollekciók, generikus tömbök

    5.

    Hagyományos labor: szövegkezelés, I/O

    6.

    Code review labor (házi feladat 1-hez)

    7.

    Hagyományos labor: eseményvezérelt programozás

    8.

    Hagyományos labor: Linq, lambda és XML

    9.

    Házi feladat 1 leadása

    10.

    Hagyományos labor: WPF alapok, xaml

    11.

    Hagyományos labor: WPF adatkötés

    12.

    Házi feladat 1 leadás (módosított specifikációval)

    13.

    Hagyományos labor: további hasznos UI elemek

    14.

    Hagyományos labor: command pattern, MVVM architektúra

    15.

    Házi feladat 2 konzultáció és XP páros programozás labor

    16.

    Hagyományos labor: UI és háttér szálak

    17.

    Hagyományos labor: attribútumok, reflection

    18.

    Házi feladat 2 konzultációs labor

    19.

    Hagyományos labor: integráló jellegű feladat

    20.

    Házi feladat 2 konzultáció (esetleges korai HF leadás)

    21.

    Házi feladat 2 leadása

    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. Ilyen laborokból van a legtöbb, ezeken megy le az előadások mellett a tananyag.

    ·         Code review labor: ezeken a laborokon a házi feladatokhoz kapcsolódóan a hallgatók egymásnak magyarázzák el a kódjuk működését, hasonlóan az ipari környezetben igen gyakran elvárt code review rendszerekhez. A laborvezető ilyenkor is köröz, bekapcsolódik a beszélgetésekbe. A cél a forráskód minőségének növelése, az „ezt hogyan érdemes elegánsan megoldani” kérdések megvitatása.

    ·         Házi feladat konzultációs labor: ezeknek a laboroknak a célja kifejezetten a házi feladat összetettebb részeinek és az egyéni kérdéseknek a megválaszolása. Akinek esetleg nincsen kérdése, kihasználhatja a rendelkezésre álló időt, hogy a házi feladatán dolgozzon, miközben szükség esetén azonnal kérdezhet is.

    ·         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 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.

    A félév során két házi feladat lesz, az egyik főleg a C# nyelv gyakorlását célozza meg, a második pedig a WPF-es GUI fejlesztést. A feladatok megoldása során mindenki személyre szóló github repositoryba dolgozik (GitHub classroom), melyben bizonyos feladatok előre elkészített unit tesztek formájában adottak.

    Az első házi feladat további specialitása, hogy két leadási határideje van és az első után előre ismeretlen módon megváltozik a feladat specifikációja. Ennek célja, hogy rávilágítson az áttekinthető fejlesztés, objektumorientált dekompozíció és beszédes, karbantartható forráskód fontosságára.

    A laborok értékelésébe beszámít a „beugró”, ami vagy konkrétan megválaszolandó kérdéssor, vagy a laborfeladat eleje, aminek elkészítésében a laborvezető még nem segít, azt teljesen önállóan kell tudni elkészíteni. Amennyiben ez nem sikerül, a laborra a hallgató 0 pontot kap.

    Az előadások és laborok anyagának kiegészítéseként előfordulhat olyan ajánlott szakirodalom (például online videók formájában), amik megtekintése a már elhangzottak megértését segíti, így önálló feldolgozásuk erősen javasolt.

    10. Követelmények

    A szorgalmi időszakban:

    Minden nem házi feladat leadási laboron az órai aktivitást és eredményeket a laborvezető pontozza 0-1-2 ponttal. Mindkét házi feladat maximum 30-30 pontot ér. Így az összes megszerezhető pont 100 pont (Ha a félév beosztása több, mint 20 labort is lehetővé tesz, az utolsókat már nem értékeljük.) A félév sikeres teljesítésének feltétele a laborok 70%-án való részvétel és az elégséges osztályzathoz tartozó pontszám megszerzése.

    Egyes előadásokon és laborokon 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. Ilyen lehet a házi feladat korábbi időpontban történő leadása is. A tantárgy munkafolyamatainak automatizálása érdekében fontos a formai előírások betartása. Az ettől való eltérés mínusz pontokkal büntethető.

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

    A házi feladatokra és laborokra kapott pontszámok összege alapján az alábbi ponthatárok szerint: 0-40p elégtelen, 41-55p elégséges, 56-70p közepes, 71-85p jó, 86-100p jeles.
    11. Pótlási lehetőségek

    A házi feladatokat előre kihirdetett időpontokban, késedelmesen is le lehet adni. A laborok pótlására nincsen lehetőség.

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

    Egyrészt több labor alkalom középpontjában konzultáció áll, ezen kívül 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 óra70
    Készülés előadásokra14
    Készülés laborra42
    Házi feladat elkészítése60
    Önálló tananyag-feldolgozás24
    Összesen210
    15. A tantárgy tematikáját kidolgozta Dr. Csorba Kristóf, egyetemi docens, Automatizálási és Alkalmazott Informatikai Tanszék