Advanced C++ programming
A tantárgyleírás hatályossága
| Subject name (Hungarian, English) |
Haladó C++ programozás
Advanced C++ programming
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Subject code | BMEVITMAV18 | ||||||||||||
| Subject type | — | ||||||||||||
| Training Level | — | ||||||||||||
| Course types and hours (weekly/semester) |
|
||||||||||||
| Assessment type | vizsga | ||||||||||||
| Credits | 5 | ||||||||||||
| Subject coordinator |
DR. Maliosz Markosz
position: egyetemi docens
contact:
maliosz.markosz@vik.bme.hu
|
||||||||||||
| Responsible department |
—
|
||||||||||||
| Faculty | |||||||||||||
| Subject website | — | ||||||||||||
| Primary curriculum type | — | ||||||||||||
| Direct prerequisites – Strong prerequisite | none | ||||||||||||
| Direct prerequisites – Weak prerequisite | none | ||||||||||||
| Direct prerequisites – Parallel prerequisite | none | ||||||||||||
| Direct prerequisites – Milestone prerequisite | none | ||||||||||||
| Direct prerequisites – Exclusion | none |
Objectives
A tárgy hét fő részre osztható az alábbiak szerint:
- A C/C++ nyelv áttekintése (ismétlés).
A C/C++ programozási nyelvi ismereteinek felfrissítése a nyelv elemeinek gyors újratárgyalásával. Az első kis házi feladatok kiosztása.
- Fejlettebb, kevésbé ismert C++ nyelvi elemek megismerése
Ide azok a nyelvi elemek tartoznak, amelyekkel a hallgatók a C++ tárgy elsajátításakor nem találkoztak. Ilyenek pl. a * ill. ->* operatorok (tagra hivatkozó mutatók), new és delete tagoperátorok, a függvényobjektumok, az adatfolyamok részletesebb megismerése, a sablonok részletesebb megismerése (statikus tagok, barátok és sablonok, sablon mint sablonparaméter, stb), illetve ide is tartozik a következő pont (STL) egy része is.
- A Standard Template Library (STL) részletes megismerése, példákkal, feladatokkal.
Ide a következő főbb elemek tartoznak: absztrakt tárolási osztályok (vector, list, deque, set, multiset, map, multimap, ... ideértve a string és complex osztályokat is), általános algoritmusok (adjacent_find, binary_search, copy, copy_backward, count, count_if, equal, equal_range, fill, fill_n, find, ...), iterátorok (bidirectional iterator, forward iterator, input iterator, output iterator, ...), memóriakezelés (allocator, auto_ptr, raw_storage_iterator, uninitialized_copy, ...), függvényobejktumok (binary_function, binary_negate, binder1st, binder2nd, divides, equal_to, ...), stb.
- Gyakori C++ kódolási hibák és elkerülési lehetőségeik megismerése.
Pl.: Megjegyzések helyes használata, globális változók helyes használata, buktatók a kiértékelési sorrenddel kapcsolatban (függvényparaméterek, részkifejezések, stb.), többdimenziós tömbök függvényparaméterként, az előfeldolgozó helyes használata, típuskonverziós problémák, memóriafoglalási hibák, kezdeti beállítás vagy értékadás, virtuális függvény túlterhelése, túlterhelés / felülbírálás / elrejtés közötti különbségek, stb.
- Megismerkedés a hibakeresővel (debugger), a teljesítményelemzővel (profiler), verziókövető rendszerekkel (cvs, svn).
Szoftvertesztelés, interaktív diagnosztika, hibaazonosítás. Program állapotváltozásainak nyomkövetése. Töréspontok és lépésenkénti végrehajtás. Az adatszerkezetek vizualizálása. A stack megjelenítése, vizsgálódás különböző szinteken. Objektum orientált öröklődési fa grafikus megjelenítése. Memóriaszivárgás nyomkövetése.
Program futási idő optimalizálása, válaszidők mérése, PC (program counter) mintavételezés adott időközönként, időmérés meghatározott események bekövetkeztekor. Profiling eszközök.
Verziókövető rendszerek (cvs, svn): fájlok tárolása, verziók elérése, változások lekérdezése. Elágazó fejlesztés. Konfliktusok feloldása.
- A Doxygen dokumentációs rendszer megismerése.
Megjegyzések formátuma, konfigurációs fájl készítése, kimeneti formátumok. Példák.
- Bevezetés a tervezési mintákon (design pattern) alapuló szoftvertervezésbe.
Bevezetés a tervezési mintákat (design pattern) használó objektumorientált szoftvertervezésbe: különböző projektekben rendszeresen visszatérő tervezési kérdések és azok egységes kezelése. Fontosabb minták és mintacsaládok áttekintése: elvont gyár, építő, prototípus, egyke (singleton), felelősséglánc, parancs, bejáró, stb.
Learning outcomes
Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:
Knowledge
No learning outcomes recorded.
Skills
No learning outcomes recorded.
Attitudes
No learning outcomes recorded.
Autonomy and responsibility
No learning outcomes recorded.
Oktatási módszertan
Tanulástámogató anyagok
Not provided.
Recommended preliminary knowledge for completing the subject
General rules
Assessment methods
In-term assessments
No detailed assessments provided.
Weight of in-term assessments
No weights provided.
Exam-period assessments
No detailed assessments provided.
Weight of exam elements
No weights provided.
Grade calculation
No grade thresholds provided.
Attendance requirements
No attendance requirements provided.
Rules for retake and resubmission
Not provided.
Short description
Not provided.
Detailed description
Not provided.
Recommended courses
Workload to complete the subject
No workload breakdown provided.
Validity of subject requirements
Curriculum placement
No curriculum placements recorded for this subject version.