Tantárgy » BMEVIHIAV10
Algoritmusok és adatszerkezetek hatékony implementálása C nyelven
Algorithms, Data Structures and their Efficient Implementation in C Language
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
—
| Tantárgy neve (magyarul, angolul) |
Algoritmusok és adatszerkezetek hatékony implementálása C nyelven
Algorithms, Data Structures and their Efficient Implementation in C Language
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Tantárgykód | BMEVIHIAV10 | ||||||||||||
| Tantárgyjelleg | — | ||||||||||||
| Képzési szint | — | ||||||||||||
| Kurzustípusok és óraszámok (heti/féléves) |
|
||||||||||||
| Tanulmányi teljesítmény/értékelés típusa | félévközi érdemjegy | ||||||||||||
| Tantárgy kreditértéke | 2 | ||||||||||||
| Tantárgyfelelős |
DR. Zsóka Zoltán
beosztás: egyetemi docens
elérhetőség:
zsoka.zoltan@vik.bme.hu
|
||||||||||||
| Tantárgyat gondozó oktatási szervezeti egység |
Hálózati Rendszerek és Szolgáltatások Tanszék
|
||||||||||||
| Kar | Villamosmérnöki és Informatikai Kar | ||||||||||||
| Tantárgy weboldala | — | ||||||||||||
| Tantárgy elsődleges mintatantervi jellege | — | ||||||||||||
| Közvetlen előkövetelmények – Erős előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Gyenge előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Párhuzamos előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Mérföldkő előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Kizáró feltétel | nincs |
Célkitűzés
Tantárgyprogram
1. A strukturált programozás tétele a gyakorlatban, a backtrack algoritmus implementálása
2. Rekurzió vs. ciklus: előnyök – hátrányok, rekurzív algoritmusok átalakítása ciklusokká, rekurzív adatszerkezetek
3. Eseményvezérelt modell megvalósítása függvénypointerekkel. Alapszintű diszkrét idejű szimuláció.
4. K-ágú fák alkalmazása tudás reprezentációra, szakértő rendszerek, egyszerű tanulóalgoritmus megvalósítása bináris fa használatával.
5. Fájlok kezelése az operációs rendszerben. Dinamikus adatszerkezetek mentése és felépítése fájlba, illetve fájlból.
6. Kiegyensúlyozott bináris fák, AVL és piros-fekete fák megvalósítása és karbantartása. Kupac adatszerkezet.
7. Helyben rendező algoritmusok összehasonítása, osztályozása, szoftver mérési eredmények vizualizálása
8. Szélességi keresés, a legrövidebb út problémája; elárasztásos algoritmus implementálása várakozási sorral, Dijsktra algoritmusa kupaccal megvalósítva
9. Típusok hatékony felhasználása lineáris algebrai algoritmusokban, mellékhatások kihasználása.
10. Magasszintű nyelvek verem használata; a párhuzamos programozás lehetőségének megteremtése
11. Tartalék előadás: Tesztelési adatsorok szisztematikus tervezése.
12. A hallgatók által házi feladatként elkészített programok prezentációja, kódelemzés, a megoldások megvitatása – 1. alkalom
13. u.a. – 2. alkalom
14. u.a. – 3. alkalom
Ha a félév során 2 alkalommal marad el a foglalkozás, akkor a prezentációk bemutatására órarenden kívüli alkalmat biztosítunk.
2. Rekurzió vs. ciklus: előnyök – hátrányok, rekurzív algoritmusok átalakítása ciklusokká, rekurzív adatszerkezetek
3. Eseményvezérelt modell megvalósítása függvénypointerekkel. Alapszintű diszkrét idejű szimuláció.
4. K-ágú fák alkalmazása tudás reprezentációra, szakértő rendszerek, egyszerű tanulóalgoritmus megvalósítása bináris fa használatával.
5. Fájlok kezelése az operációs rendszerben. Dinamikus adatszerkezetek mentése és felépítése fájlba, illetve fájlból.
6. Kiegyensúlyozott bináris fák, AVL és piros-fekete fák megvalósítása és karbantartása. Kupac adatszerkezet.
7. Helyben rendező algoritmusok összehasonítása, osztályozása, szoftver mérési eredmények vizualizálása
8. Szélességi keresés, a legrövidebb út problémája; elárasztásos algoritmus implementálása várakozási sorral, Dijsktra algoritmusa kupaccal megvalósítva
9. Típusok hatékony felhasználása lineáris algebrai algoritmusokban, mellékhatások kihasználása.
10. Magasszintű nyelvek verem használata; a párhuzamos programozás lehetőségének megteremtése
11. Tartalék előadás: Tesztelési adatsorok szisztematikus tervezése.
12. A hallgatók által házi feladatként elkészített programok prezentációja, kódelemzés, a megoldások megvitatása – 1. alkalom
13. u.a. – 2. alkalom
14. u.a. – 3. alkalom
Ha a félév során 2 alkalommal marad el a foglalkozás, akkor a prezentációk bemutatására órarenden kívüli alkalmat biztosítunk.
A tantárgy célkitűzése, hogy a hallgatók a programozási ismereteiket olyan megoldásokkal, módszerekkel bővítsék ki, melyek a képzés programozási törzsanyagában nem szerepelnek, de a hatékony programok írását lehetővé teszik. Ennek során elsajátítják egyes hatékony, illetve gyakran használt algoritmusok és adatszerkezetek megvalósítási lépéseit a C nyelv lehetőségeit felhasználva és kihasználva. Az elsajátítandó módszereket a mérnöki gyakorlatban sűrűn előforduló kritikus problémákon próbáljuk ki.
Tanulmányi eredmények
Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:
Tudás
Nincsenek rögzített tanulási eredmények.
Képességek
Nincsenek rögzített tanulási eredmények.
Attitűd
Nincsenek rögzített tanulási eredmények.
Autonómia és felelősség
Nincsenek rögzített tanulási eredmények.
Oktatási módszertan
A kétórás foglalkozások első részében elméleti szinten ismertetjük a problémákat és a megoldási módszereket, majd ezeket az ismereteket konkrét problémákra alkalmazzuk.
Tanulástámogató anyagok
Online források
• N. Wirth: Algoritmusok + Adatstruktúrák = Programok, Műszaki Könyvkiadó, 1982; • Benkő Tiborné, Dr. Poppe András: Együtt könnyebb a programozás – C, Computer Books, 2006; • Nemes Mihály: Sebesség a számítástechnikában, Szieben és Tsa, 1995; • Wayne Amsbury: Data Structures from Arrays to Priority Queues, Wadsworth Publishing, 1985
A tantárgy teljesítéséhez ajánlott előzetes ismeretek
Tudás típusú kompetenciák
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
Alapszintű strukturált programozás, C programozási nyelv ismerete
Képesség típusú kompetenciák
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
Alapszintű strukturált programozás, C programozási nyelv ismerete
Általános szabályok
Követelmények:
A gyakorlatok látogatása (a TVSZ értelmében) kötelező. A jelenlétet minden alkalommal ellenőrizzük, 30%-ot meghaladó hiányzás esetén a tantárgyból az elégtelentől eltérő jegy sem kreditpont nem szerezhető.
a. A szorgalmi időszakban:
(1) Egy nagy házi feladat, ami a tanultak alkalmazása egy a való életből vett problémára. Az elkészült munkát a tárgy hallgatóságának személyes prezentáció formájában be kell mutatni. A bemutatás feltétele, a házi feladat beadása az utolsó órarendi órát megelőző napon 12 óráig. A nagy házi feladat értékelése 0 - 58 pont.
A nagy házi feladat elfogadható szintű megoldása elégtelentől eltérő jegy megszerzésének feltétele (legalább 20 pont).
(2) Két kis házi feladat a tanultakhoz kapcsolódó összehasonlító szoftver kísérlet dokumentálása, értékelése egyenként 0 - 21 pont
Az elégtelentől eltérő jegy megszerzéséhez a hallgatónak legalább az egyik kis házi feladatot teljesen meg kell oldania (21 pont).
A házi feladatokkal összesen 100 pont érhető el.
A félévközi jegy ponthatárai:
40 pontig elégtelen
41 ponttól elégséges
56 ponttól közepes
71 ponttól jó
86 ponttól jeles.
Pótlási lehetőségek:
A házi feladatok késedelmes beadására, a pótlások hetének utolsó előtti munkanapján 10 óráig van lehetőség.
A késedelmesen beadott feladatok prezentálására nincs lehetőség, de a prezentáció hiányában is elérhető az elfogadáshoz minimálisan szükséges pontszám.
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Szorgalmi időszakban végzett teljesítményértékelések részaránya
Nincs megadva részarány.
Vizsgaidőszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Vizsgarészek részaránya
Nincs megadva részarány.
Érdemjegy megállapítása
Nincs megadva érdemjegy határ.
Jelenléti és részvételi követelmények
Nincs megadva jelenléti követelmény.
Javítás, ismétlés és pótlás különös szabályai
Nincs megadva.
Rövid leírás
Nincs megadva.
Részletes leírás
Nincs megadva.
Ajánlott tantárgyak
A tárgyat csak azoknak célszerű felvenni, akik korábban már hallgatták a következő tárgyat:
villamosmérnök alapszakon (BSc) a VIHIA106 Programozás alapjai I., vagy VIHIAA01 A programozás alapjai 1.
A tantárgy elvégzéséhez szükséges tanulmányi munka
Nincs megadva munkaidő bontás.
Tantárgykövetelmények hatályossága
Tantárgykövetelmények hatályosságának kezdete:
—
Tantárgykövetelmények hatályosságának vége:
—
Tantervi elhelyezés
Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.