A programozás alapjai 3

A tantárgy angol neve: Programming 3

Adatlap utolsó módosítása: 2017. június 21.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar
Mérnök informatikus szak, BSc képzés
Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIIIAB00 3 2/0/2/f 5  
3. A tantárgyfelelős személy és tanszék Dr. Goldschmidt Balázs,
A tantárgy tanszéki weboldala https://www.iit.bme.hu/targyak/BMEVIIIAB00
4. A tantárgy előadója Dr. Goldschmidt Balázs, docens, Irányítástechnika és Informatika Tanszék
5. A tantárgy az alábbi témakörök ismeretére épít
  • C++ programozási gyakorlat
6. Előtanulmányi rend
Kötelező:
(TárgyEredmény( "BMEVIIIAA00" , "jegy" , _ ) >= 2
VAGY
TárgyEredmény( "BMEVIIIA114" , "jegy" , _ ) >= 2
VAGY
TárgyEredmény( "BMEVIIIAA03" , "jegy" , _ ) >= 2)

ÉS NEM ( TárgyEredmény( "BMEVIIIA212", "jegy" , _ ) >= 2
VAGY TárgyEredmény("BMEVIIIA212", "FELVETEL", AktualisFelev()) > 0)

ÉS (Training.Code=("5N-A8") VAGY Training.Code=("5NAA8"))

VAGY EgyenCsoportTagja("Kreditpótlás_2023/24/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ó.

Ajánlott:

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

A tárgy alapvető célja, hogy alapozó tárgyként folytassa a számítógépes problémamegoldás módszereinek és alapvető eszközeinek előző félévekben megkezdett megismertetését olyan szinten, hogy azt a hallgatók további tanulmányaik során képesek legyenek hatékonyan alkalmazni. Ezen félév alapvető célkitűzése, hogy további gyakorlatokkal mélyítse az objektumorientált problémamegoldási képességet, megismertesse a hallagtókkal a Java programozási nyelvet, megismertesse a nagymértékben osztálykönyvtárak használatára épülő programfejlesztést, ezen belül az általános megoldásokon (kollekciók, IO, stb) túl speciális problémákra (szálkezelés, XML feldolgozás, grafika és GUI) nyújtott lehetőségeket. Cél továbbá a Szoftvertechnológia c. párhuzamos tárgyban tanult UML modellek Java nyelven való megvalósításának képessége is.

Célkitűzését a tárgy az előző félévekben megszerzett C és C++ nyelvi tudásra alapozva, a Java nyelv megismertetésével éri el. A laborok anyaga folyamatosan követi az előadások tematikáját, azok mélyebb megértését teszi lehetővé.

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

Előadás

1.      Java alapok. Bevezető. Típusok, operátorok, utasítások. Objektumok, osztályok, Interfészek. Package-ek. Kivételkezelés, kódolási stílus.

2.      Java I/O. System Class. I/O Basics. I/O filters. Speciális osztályok: pipe, file. Serialization.

3.      Utilityk..(Scanner, Random, BigInteger, BigDecimal, szövegfeldolgozás).

4.      Java generikus osztályok. Genericitás és öröklés. Összevetés C++ generikus megoldásával. Megközelítések: heterogén kollekció, kasztolás, template.

5.      Java kollekciók.. Kollekció-keretrendszer. Collection, Iterator, List, ListIterator, Set, SortedSet, Map, SortedMap. Kollekciók kezelése (java.util.Collections).

6.      UML és Java kapcsolata. Asszociációk, aggregációk megvalósítása, jelölése. C++ visszatekintés (kompozíció, destruktor, deep és shallow copy)

7.      Szálkezelés. Kölcsönös kizárás, szinkronizálás, jelzések küldése kezelése. Szálbiztos kollekciók. Speciális szálosztályok (java.util.concurrent)

8.      Java GUI alapfogalmak. Componensek és konténerek, layout-ok. Esemény-kezelés. Alacsony szintű grafika.

9.      Speciális komponensek: menü, dialógbox, stb. Swing és AWT. Swing MVC modellje, JList, JTable, JTree.

10.  Automatizált tesztelés Java nyelven. JUnit.

11.  XML feldolgozása Javaban: SAX, DOM és JDOM.

12.  Naplózás. Log4J. Naplózási szintek. Nemzetköziesítés, lokalizáció.

13.  Kitekintés: relációs leképezés JPA-ban, hálózati kommunikáció, RMI.

Labor

1.      Eclipse alapok, intellisense, help, felépítés, projektfájlok.

2.      Hello World, parancssori fordítás, eclipse Java támogatás, csomagkezelés.

3.      Java öröklés, kivételek: C++ heterogén kollekciós vizsgapélda Java megoldása.

4.      Java IO gyakorlatok (beolvasás fájlból, kiírás, szerializálás, parancssori argumentumok)

5.      Java Util: kollekciókezelés, rendezés, iteráció.

6.      Java-UML kapcsolat gyakorlása, UML modellező eszközből egyszerű kódgenerálás.

7.      Java szálkezelés példa: termelő-fogyasztó, szinkronizálás.

8.      Swing alapok. Egyszerű SWING példa: titkosító alkalmazás (Caesar kódoló)

9.      SWING MVC: JTable feladat megoldása: rendezés, megjelenítés, speciális renderelés.

10.  Alacsonyszintű grafika: egyszerű vektorgrafikus alkalmazás készítése (kör, vonal, négyzetrajzolás)

11.  JUNIT példa: kész szoftver JUnit tesztjeinek előállítása, kipróbálása.

12.  (XML példa: feldolgozás, generálás.)

13.  Feladatbeadás

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

Előadás és laboratórium

10. Követelmények

a. A szorgalmi időszakban:

 

Az előadáson a jelenlét nem kötelező.

A laboratóriumi foglalkozásokon való megjelenés kötelező, az elmulasztott laborgyakorlatok nem pótolhatók. A laboratóriumi foglalkozáson a laborvezetők ellenőrző méréssel ellenőrzik a hallgatók felkészültségét. A félév teljesítésének feltétele, hogy az ellenőrző mérések legalább 2/3-a sikerrel záruljon.

A félév során 6 előre meghirdetett alkalommal kis zárthelyit íratnak a laborvezetők. A kis zárthelyi dolgozatokból a 4 legeredményesebb eredményét (dolgozatonként 0-5 pont között) vesszük figyelembe. Ha valaki 4-nél kevesebb ellenőrző dolgozatot írt, akkor a meg nem írt dolgozatok eredményét 0-nak tekintjük.

Minden hallgatónak egy nagy házi feladatot is meg kell oldania. A nagy házi feladatokat a 13. heti laboralkalom végéig kell beadni. A házi feladatok pótlólagos beadására a 14. heti laboralkalom végéig különeljárási díj megfizetésével van mód.

A félév elismerést jelentő félévközi jegy megszerzésére a következők együttes teljesülésekor van lehetőség:

·        -  a legjobb 4 kis zárthelyi dolgozat átlaga legalább 2,00,

·         - az ellenőrző mérések legalább 2/3-a sikeres volt,

·         - a nagy házi feladat a kiírás szerint elkészült, a laborvezető a kijelölt laboralkalommal személyesen átvette, ellenőrizte és elfogadta a hiánytalan dokumentációt és az elkészített programot, melyet együtt ki is próbáltak,

·         - a hallgató a programozási laborgyakorlatokat rendszeresen látogatta (hiányzása nem haladja meg a TVSz szerint megengedett 30%-os mértéket).

A fenti feltételek bármelyikének nem teljesülése esetén a félévközi jegy elégtelen ill. a tárgyat a hallgató nem teljesítette.

A félévközi jegy kiszámításának módja a következő: A 4 legjobb kis zárthelyi dolgozat pontszámának átlaga  határozza meg az alapot, amelytől a laborvezető legfeljebb 1.0 ponttal eltérhet a hallgató laborgyakorlatokon tanúsított felkészültsége, teljesítménye és aktivitása alapján. Az így kialakuló pontszámnak az alsó egész része adja az érdemjegyet..

 

b. A vizsgaidőszakban:

 Nincs.

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

Az ellenőrző dolgozatok és a kis zárthelyik nem pótolhatók (az összes dolgozat maximum 2/3-a számít bele a végső jegybe).

Az elmulasztott laborgyakorlatok nem pótolhatók.

A házi feladatok pótlólagos beadására a 14. heti laboralkalom végéig különeljárási díj megfizetésével van mód. A pótlási héten – a laborvezető oktatóval egyeztetett időpontban – már csak olyan programok és/vagy dokumentációk pótolhatók, melyek hiányosság, vagy működési hiba miatt kerültek elutasításra. A pótlási héten túl a nagy házi feladat nem pótolható.

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

Konzultációra a szorgalmi időszakban az előadások után, valamint a laborfoglalkozások alkalmával, illetve a laborvezetőkkel történő külön megbeszélés alapján van lehetőség.

13. Jegyzet, tankönyv, felhasználható irodalom
  • Előadásfóliák
  • Gyakorlati feladatsorok
  • Szoftverfejlesztés Java SE platformon, Kövesdán Gábor, Szak Kiadó, 2014.
  • Java útikalauz programozóknak, ELTE TTK Hallgatói Alapítvány, Budapest
  • Glenn Rowe: Java programozás, PANEM
14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka

Kontaktóra

56

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

6

Készülés gyakorlatra

0

Készülés laborra

28

Készülés zárthelyire

18

Házi feladat elkészítése

42

Önálló tananyag-feldolgozás

0

Vizsgafelkészülés

0

Összesen

150

15. A tantárgy tematikáját kidolgozta

Dr. Goldschmidt Balázs

docens

Irányítástechnika és Informatika Tanszék

Simon Balázs

adjunktus

Irányítástechnika és Informatika Tanszék

IMSc tematika és módszer

Az IMSc programban részt vevő hallgatók számára az előadásokon további elmélyülést biztosító irodalmat ajánlunk. Igény szerint ezek feldolgozásához a laborok alkalmával konzultációt is biztosítunk.

A laboratóriumi gyakorlatokon a program hallgatói a megoldandó feladatok mellé további, a téma  mélyebb megértését és elsajátítását lehetővé tevő extra feladatokat kapnak.

IMSc pontozás

Az utolsó három számonkérésen extra IMSc feladatot biztosítunk, amelyre az adott számonkérés alapfeladataira elérhető pontszám 30%-át lehet kapni. Az extra IMSc feladatokat csak akkor javítjuk, ha az adott számonkérést beleértve a megelőző kiszh-k közül a 4 legjobb esetében a hallgató átlagosan a megszerezhető pontok legalább 80%-át megszerezte. 

A három utolsó kisZH extra IMSc feladataira kapott pontok közül a két legnagyobb értékű számít. Ezek összegéből egyenes arányosítással áll elő a tárgyból megszerezhető maximum 25 IMSc pont.

Az IMSc pontok megszerzése a programban nem résztvevő hallgatók számára is biztosított.