Bevezetés a programozásba
|
Szak: PTI BSc |
Óraszám / hét: 0+0+2 |
|
Kurzuskód: INBPM0104 |
Kreditérték: 3 |
|
Félév: 1 |
Előfeltételek: - |
|
Típus: Labor |
Számonkérés módja: Gyakorlati jegy |
A tantárgy feladata: A programozáshoz kötődő alapismeretek tárgyalása, a programnyelvek eszközeinek heurisztikus bemutatása és megismerése.
Szerzett tudás: Ismeri és érti az informatikai szakterület legfontosabb általános elméleteit, összefüggéseit, tényanyagát és az ezekhez szükséges felépítő fogalomrendszert, különösen az alábbi területeken: a programozás módszertani alapjai, programozási nyelvek, fordítóprogramok, alkalmazások fejlesztése, programozási környezet; számítógép-architektúrák, operációs rendszerek, számítógépes-hálózatok, osztott rendszerek, az adatbázisok elméleti alapjai. Ismeri és érti az informatikai szakterület szakmai szókincsét, kifejezési és fogalmazási sajátosságait anyanyelvén és legalább alapszinten angol nyelven is. Ismeri a szakszerű és hatékony szakmai kommunikáció speciális informatikai eszközeit és módszereit.
Szerzett képességek: Képes a szakmai információforrások használatára, a megoldandó problémához szükséges ismeretanyag megkeresésére. Meglévő ismereteire alapozva hatékonyan sajátít el új technológiákat és paradigmákat. Képes informatikai tudását az elsajátított matematikai, számítástudományi elvek, tények, szabályok, eljárások alapján folyamatosan fejleszteni.
Szerzett attitűdök: Vállalja és hitelesen képviseli informatikai szakterülete szakmai alapelveit. Nyitott a képesítésével, szakterületével kapcsolatos szakmai, technológiai fejlődés és innováció megismerésére és befogadására. Elfogadja az informatikai szakma munka- és szervezeti kultúra szabályait, etikai elveit. Reflektív módon tekint saját szakmai kompetenciáira és tevékenységére. Törekszik a folyamatos szakmai képzésre és általános önképzésre.
Szerzett autonómiák és felelősségek: Felelősséget vállal szakmai tevékenységéért. Törekszik a hatékony és minőségi munkavégzésre.
Tárgyleírás (Neptun): Alapszintű operációs rendszer elemek, felhasználói szintű operációs rendszer ismeretek. Parancssor használata, kézikönyvlapok, fejlesztőeszközök. A forráskódtól a futtatásig. A fordítóprogramos technika, a tiszta interpreteres technika és a hibrid megközelítés. Hibák, hibatípusok, hibaüzenetek. Szintaktika és szemantika. Algoritmusok szerkezeti elemei: szekvencia, szelekció, iteráció. Absztrakt adatszerkezetek és elemi algoritmusok (bejárások, keresések, rendezések). Programkódok működés közben (pl.: Visualgo). Programnyelvi alapismeretek: adatok kezelése, a változó fogalma. A standard input/output kezelése. Típusok, műveletek. Egyszerű adatkezelés. Kifejezések, utasítások. Tömbök kezelése, a mutató, mint programozási eszköz. Vezérlési szerkezetek. A függvényfogalom bevezetése, paraméterek, paraméterátadás, visszatérési érték, környezet. Nevek hatásköre. Rekurzió, rekurzív algoritmusok, önhivatkozó struktúrák. Rekurzív kódok írása. Forráskódok értelmezése, elemzése.
Tananyag: http://stroustrup.com/Programming/
Tanári kézikönyv: Bjarne Stroustrup: "Programming: Principles and Practice using C++ (Second Edition)" Addison-Wesley 2014, ISBN 978-0-321-99278-9 (Part I) („S” könyv)
Prezentációk: http://stroustrup.com/Programming/lecture-slides.html
Instructor’s guide: http://stroustrup.com/Programming/PPP-guide.pdf
Egyéb ajánlott irodalom:
Narasimha Karumanchi: Data Structures and Algorithmic Thinking with Python, CareerMonk, 2017.
Ivor Horton: Beginning C, 5th edition, Apress, 2013.
Robert Sedgewick: Algorithms in C, több kiadásban, Addison-Wesley.
Brian W. Kernighan, Dennis M. Ritchie: A C programozási nyelv, Műszaki Könyvkiadó, 2008.
Forstner B., Ekler P., Kelényi I., Bevezetés a mobilprogramozásba - Gyors prototípusfejlesztés Python és Java nyelven, SZAK KIADÓ, 2008, 3. fejezet, A Python nyelv bemutatása, pp 35-50.
Bontás a tárgyleírásnak megfelelően
|
Rövid leírás |
Tárgyleírásban |
Tananyagban |
Olvasmány |
|
Bevezető labor, a tárgy szerepe, a programozás szerepe, ismerkedés a környezettel (Linux, gcc, g++, parancssor) |
Alapszintű operációs rendszer elemek, felhasználói szintű operációs rendszer ismeretek. Parancssor használata, kézikönyvlapok, fejlesztőeszközök. A forráskódtól a futtatásig. A fordítóprogramos technika. Szintaktika és szemantika. |
Prezentáció: Ch1-2: Programming and "Hello, World!" Egyszerű Hello World! megírása. Parancssor használata, fordítás. |
S könyv: Ch0, Ch1, Ch2 |
|
„Változós” labor, alapvető változó fogalom, típusok, szemléltetés: I/O. |
Programnyelvi alapismeretek: adatok kezelése, a változó fogalma. A standard input/output kezelése. Típusok, műveletek. Egyszerű adatkezelés. Kifejezések, utasítások. Nevek hatásköre. |
Prezentáció: Ch3: Objects, Types, and Values Egyszerű beolvasás, kiírás string típussal. |
S könyv: Ch3 |
|
„Computation” labor, egyszerű aritmetikai és logikai műveletek, vezérlési szerkezetek |
Algoritmusok szerkezeti elemei: szekvencia, szelekció, iteráció. Vezérlési szerkezetek. |
Prezentáció: Ch4: Computation (slide 1-15) |
S könyv: Ch4 (4.1-4.4.) |
|
Függvény labor, egyszerű függvények, „külső” függvények használata (pl. printf, read, stb) |
A függvényfogalom bevezetése, paraméterek, paraméterátadás, visszatérési érték, környezet. |
Prezentáció: Ch4: Computation (slide 16-19) |
S könyv: Ch4 (4.5) |
|
Adatszerkezetek labor, egyszerű vector példa, néhány rendező algoritmus szemléltetése VisuAlgoval. |
Absztrakt adatszerkezetek és elemi algoritmusok (bejárások, keresések, rendezések). VisuAlgo. |
Prezentáció: Ch4: Computation (slide 20-31) |
S könyv: Ch4 (4.6-végig) |
|
Tömbös labor |
Tömbök kezelése, a mutató, mint programozási eszköz. |
Prezentáció nincs. Forráskód: EXOR. |
K&R-C programozási nyelv: Ch5 |
|
Rekurzív labor |
Rekurzió, rekurzív algoritmusok, önhivatkozó struktúrák. Rekurzív kódok írása. |
Prezentáció nincs. Forráskód: LZWBinFa C változat. |
K&R-C programozási nyelv: Ch6 |
|
Szakmai hét / Gyakorlás |
|||
|
Hibakezelés labor, fordítási, futási hibák, hibakezelés, kivételkezelés |
Hibák, hibatípusok, hibaüzenetek. |
Prezentáció: Ch5: Errors |
S könyv: Ch5 |
|
„Writing a program” labor |
Forráskódok értelmezése, elemzése. |
Prezentáció: Ch6 |
S könyv: Ch6 |
|
„Writing a program” labor 2 |
Forráskódok értelmezése, elemzése. |
Prezentáció: Ch7 |
S könyv: Ch7 |
|
Függvény labor 2, függvénydeklarációk, „pass by” technikák (value, reference, const reference) |
Paraméterek, paraméterátadás, visszatérési érték |
Prezentáció: Ch8: Technicalities: Functions, etc. |
S könyv: Ch8 |
|
Absztrakt adatszerkezetek labor |
Absztrakt adatszerkezetek |
Prezentáció: Ch9: Technicalities: Classes, etc. |
S könyv: Ch9 |
|
Python labor, egyszerű példák az interpreteres programnyelvek kapcsán. |
A tiszta interpreteres technika és a hibrid megközelítés. |
Prezentáció nincs, forráskódot készítünk. |
|
A tárgy teljesítésének feltételei:
Aláírás megszerzésének feltétele
A félév során legfeljebb 3 hiányzás megengedett,
Az adott héten kiadott olvasmány fejezet végi „Drill” részének elkészítése (hétről hétre). A félév során legfeljebb 3 esetben „passzolható”.
Érdemjegy
a szakmai hét előtt bemutatott LZWBinFa program C változatának megvédése, valamint kis módosítások elvégzése. A bemutatás a félév során bármikor megtehető, több alkalommal is.
Etikai elvárások: a hallgatókkal kapcsolatos etikai normákra A DEBRECENI EGYETEM ETIKAI KÓDEXE az irányadó lásd.: http://www.unideb.hu/portal/hu/node/47
Egyebek:
A feladatokhoz használt header file: http://stroustrup.com/Programming/PPP2code/std_lib_facilities.h