HTML

Programozó Páternoszter

Ez a Programozó Páternoszter (PP) blogja, a programozásról szól. Aktualitása, hogy a Debreceni Egyetem Informatikai Kara Magasszintű programozási nyelvek 1-2, C++ esattanulmányok, Java esettanulmányok című kurzusainak blogja is egyben.

A vadászat

A Debreceni Egyetem Programozói Évkönyve: az UDPROG projekt. A szakmai fórumunk a Facebook-en. Az új előadások a prezin.
A régi előadások:
Prog1:
1. C bevezetés
2. C tárgyalás
3. C befejezés
4. C a gyakorlatban
5. C++ bevezetés
6. C++ tárgyalás
7. C++ befejezés
8. C++ a gyakorlatban
9. Java platform bevezetés
10. Kvantuminformatikai alg. bev.
Prog2:
1. Java bevezetés
2. Java tárgyalás
3. Java befejezés
4. Java a gyakorlatban
5. Software Engineering bev.
6. Java EE bevezetés
7. AspectJ bevezetés
8. BPMN-BPEL SOA programozás
9. C++ haladó
10. Tensorflow

Kövess engem!

Friss topikok

Linkblog

Sillabusz - "you'll be interested to know that the Italian navigator has just landed in the new world"*

2013.02.19. 11:15 nb

Kedves Hallgatók, Laborvezetők!

Megszületett a várva-várt "interkurzus" megállapodás, bár a sillabuszt még nem tudtam frissíteni, de íme a lényeg a közös számonkérés kapcsán:

  • mindhárom kurzus bead 16 feladatot március 15-ig a közösbe
  • a közös feladatokból történő beszámolás a laboraláírás feltétele

(néhány részletet majd küldök magánban a Neptunban). Ennek a beszámolásnak a lebonyolítása, maga a kurzus és a vizsgák már a kurzus saját belső hatáskörébe tartoznak.

Laws of the game

Jöjjenek most az idei játékszabályok, ahol feszültség van a sillabusz és a jelen szereplők között, ott ez a poszt az irányadó! Először is a nyelv C++ lesz (Retreat, Hell**)!!! Ennek kapcsán tankönyvként két könyvet mérlegeltem:

Az első mellett az szólt, hogy abszolút a kezdőket célozza és sokkal populárisabban van megírva, mint a második, amely jóval szakmaibb a kezdő olvasónak. Viszont a második magyarra is le van fordítva, míg az első még angolul sincs meg az ország egyetlen könyvtárában sem... Hoppá! (Most megrendeltem, de ez az idén már nem számít.) Az elsőhöz van fóliasó, a második számos példányban elérhető a könytrárban... tehát nem egyszerű a választás. Illetve ajánlható könyv még a Szoftverfejlesztés C++ nyelven c. könyv. S persze az alap C könyv, a K&R.

Azt próbáljuk ki, hogy az előadás fő sodorvonalát az említett 2. könyvből (a továbbiakban csak KÖNYV) vetítjük, s ezt esetlegesen kiegészítjük a korábbi fóliasónkkal. A laborok munkáihoz pedig esetlegesen fellapozhatjuk a többi említett könyvet, vagy adott példánál a Páternosztert (a továbbiakban PP), illetve az alábbi könyvek valamelyikét.

A laborok

A laborok anyaga közös minden laborra, s előre ki fogom tenni őket ide egy poszt formájában, most az ismert okból nyilván van egy kis késés. Illetve a laborok alapszerkezete is közös: a laborvezető szúrópróba szerűen ellenőrzi, hogy a hallgatók olvasták-e a kötelező olvasmányt (ha nem, akkor egy fél hiányzást könyvelünk el), majd közösen feldolgozzák az aktuális poszt tartalmát. Nincs semmilyen papíros ZH, hanem a laborközösség előtt 2 programot kell védeni, az egyiket (humán genomos) a félév közepén, a másikat (robot- vagy kvantumfocis) a félév végén. Illetve a közös kötelezettségnek eleget téve az utolsó 5 labor valamelyikén a hallgató 3-at húz a közös feladatokból és ezekből az egyiket kell megoldania/bemutatnia a helyszínen (természetesen bármit használhat e közben is, mint ahogyan bármely számonkéréskor a kurzusban). A két sztenderd védés és a közös védése is ismételhető persze.

Jegymegajánlás

Létezik hagyományosan: az adott határidőig legtöbb pontot gyűjtő hallgató jelest kap. A feladatok pontszáma itt lesz a blogon, illetve a laborvezető a labormunkát serkentő felajánlásokat tehet, pl. "az első 3 aki megcsinálja, 4 pontot kap". A posztokban adott feladatok hatóköre az adott hét (de figyeld a kommenteket, mert ha mást nem mondunk, akkor mindig az első hármat pontozzuk), a laborvezetők által kiadott az adott nap. Nincs központi pontnyilvántartás, hanem elosztva: minden hallgató tartson nyilván magára egy "mikor, mennyit, mire" táblázatot és ha elszámolási vita van, akkor ezt kell elküldenie nekem. Illetve amikor valaki pontot szerez, az egy kommentben aktuálisan jelezze és ezeket fogom időszakosan itt jobb oldalon szerepeltetni. Egy pont két fél-hiányzást válthat ki, nem fizikai hiányzást, hanem olvasmány vagy feladat nem tudási "fél hiányzást".

Hallgató is pontoz hallgatót

A kurzus közösségét erősítendő: aki a posztok kommentjeiben kérdez és kielégítő választ kap, az a választ adónak adhat egy pontot! (Ha elfogadjuk persze, szóval valódi kérdés, valódi válasz kell nyilván.)

Binom rendszer

A laborközösségben mindenkinek legyen egy párja, akivel "együtt" olvassa a könyvet, a feladatok egy részét együtt készíti.

További kedvezmények
  • 100 pont felett: +1 jegy az elégtelentől különböző írásbelin vagy szóbelin, a szóbelin 3 tétel elkerülhető.
  • 200 pont felett: +1 jegy az elégtelentől különböző írásbelin vagy szóbelin, a szóbelin a tételek fele elkerülhető.
  • 300 pont felett: +2 jegy az elégtelentől különböző írásbelin vagy szóbelin, a szóbelin 2 tételből kell húzni.

Az első labor

Ismerkedjünk meg a teremmel, milyen szoftverek vannak stb. Ha valamit hiányolunk (szövegszerkesztő, IDE stb), jelezzük és kérjük a rendszergazdáktól. Itt egy virtuális VB image, amiben minden menni fog: Batfai_Prog1

(Ezen a héten a csúszás miatt az esetleges feketéket ("fél-hiányzás") még ne könyveljük.) A KÖNYVből olvassuk el a (18-i) hétre

  • a 3-25 oldalt
  • a 25-37 oldalt

együtt e két blokkból mindenki 3 olyan dolgot kérdezzen meg a binomjától, amelyet nem ért, a binom pedig próbáljon meg válaszolni. A szúrópróbaszerű ellenőrzésen ezt a levélváltást kell bemutatni a laborvezetőnek. Globális ellenőrző kérdések:

  • C++-ban bevezethetünk-e változót például a for utasításban?
  • mond-e olyat a szerző, hogy a K&R C könyv minden progija C++ progi?

Az első labor feladatai, poszt-pontjai

Az a gyakorlat, hogy aki előre elvégzi a laborra tervezett feladatokat, az megkapja a pontot, s ettől függetlenül a laboron mehet a bajnokság a feladatok kapcsán.

  • Vegtelen feladat: C vagy C++ végtelen ciklust írj! A legszebb (ezt a laborvezető saját szempontjaiból zsűrizi) 3 1 pont.
  • Kétféle végtelen: írj két végtelen ciklust, az első alig pörgesse a procit, a második 100%-on (a top paranccsal ellenőrizendő a CPU használat, ha több mag van, akkor press '1' benne). (help PP 27. oldaltól) Az első 3 3 pont.
  • Az első celebráció: aki a PP 25 szohossz.c progiját elmagyarázza a laborközösség előtt, annak 5 pont üti a markát.
Opcionális feladatok
  • Másik könyv, chapter 2: egy pont, aki lefordítja, lefuttatja a 2. fejezet progiját.
  • 105: válaszold meg a "régi" prezi 105. fóliáját! (2 pont) /help/
  • 106: válaszold meg a "régi" prezi 106. fóliáját! (2 pont)
  • 107: válaszold meg a "régi" prezi 107. fóliáját! (2 pont)
  • KÖNYV 25 oldal: gépen próbáld ki Stroustrup könyv 25. oldalán kezdett vermes példát 3 pontért:
    stack.h
    namespace Stack // felület
    {
    void push ( char );
    char pop ();
    }
    stack.cpp
    namespace Stack // megvalósítás
    {
    const int max_size = 200;
    char v[max_size];
    int top = 0;
    
    void push ( char c )
    {
      /* túlcsordulás ellenõrzése NÉLKÜL és c behelyezése */
      v[top++] = c;
    }
    char pop ()
    {
      /* alulcsordulás ellenõrzése NÉLKÜL és a legfelsõ elem kiemelése */
      return v[--top];
    }
    }
    

    user.c
    #include "iostream"
    #include "stack.h"
    
    int
    main ()
    {
      Stack::push ( 'c' );
      if ( Stack::pop () != 'c' )
        std::cout << "lehetetlen";
    
      return 0;
    }
    norbi@colossus:~/Documents/P1$ g++ stack.cpp user.c -o user
    norbi@colossus:~/Documents/P1$ ./user
    norbi@colossus:~/Documents/P1$

Lényeges, hogy ne essünk pánikba! Különben pedig: "Imádni fogjátok a C++-t, egy emberként, tiszta szívből 4"***. Kapcsoljátok be a gépet, mehet a zene és végre indulhat a programozás!!!

*: Enrico Fermi: http://en.wikipedia.org/wiki/Enrico_Fermi

**: szinkron: "Vissza? Soha!", http://www.imdb.com/title/tt1217613/, Battle Los Angeles

***: "Imádni fogják a légiót, egy emberként, tiszta szívből", www.imdb.com/title/tt0126388/

110 komment

Segíthetnek-e Futball Zombik megnyerni a Labdarúgó-világbajnokságot?

2013.01.07. 21:54 nb

Korábbi posztunkban már tisztáztuk, hogy a Futball Zombik nem a programozás labor védésére készülő, a lázas robotfoci fejlesztéstől támolygó hallgatóink folyama, hanem a Quantum Consciousness Soccer Simulator (QCSS) referencia csapatának neve, amivel egyszerűen arra utalok, hogy jelen pillanatban mennyire keni-vágja ez a csapat a foci játékát.

sz4.png

Ám jelen címünk is magyarázatra szorul. Nem kicsit megalomán, ellenben ha a QCSS modellje valóban működik a világunkban, akkor elképzelhető, hogy a szurkolók "kvantum tudatos" támogatása hamarosan a foci világának tetejére repíti a magyarokat. (Különben is: a kitalálónak, fejlesztőknek nagyot álmodni kötelező.) Sajnos két lábbal nézve a modellnek nincs realitása, lévén csupán egy (azért igen) izgalmas ugrás a sötétbe, ezért lássuk előbb a poszt kézelfoghatóbb céljait. A végén persze naná, hogy megadjuk majd a tuti receptet a foci vb megnyeréséhez!

  • Legközvetlenebb cél csapatok toborzása a kvantum-tudatos foci szoftveres fejlesztéséhez-teszteléséhez, amelyet egy programozói verseny formájában képzelünk majd bebootolni: itt a kapcsolódó (CALL FOR PARTICIPATION IN PROMOTING THE CONCEPT OF QCSS) felhívás. Jól jönne, ha ezt tovább tudnád replikálni olyan műhelyek felé, ahol esetlegesen van programozói érdeklődés-affinitás.
  • Ezzel párhuzamosan most januártól a programozás kurzus laborgyakorlatát már a QCSS (C++/Boost ASIO) platformra alapozzuk majd (ez egyben - a szabad tanárválasztás jegyében - nem burkolt fenyegetés volt a potenciális hallgatóknak, hanem éppen hogy ez a mézesmadzag).

Kvantum-tudatos foci

Mi is ez? Csak két mondatban, részletesebb kifejtés az imént linkelt felhívás kapcsolat részében van. Tehát röviden. A lényeg könnyen megragadható a robotfocival összehasonlítva (amelyben a kurzus hallgatóinak van mérnöki gyakorlata), itt van ugye a szerver, amely szimulálja a focit, ehhez csatlakoznak a játékos kliensek és az esetleges edző kliensek, mindösszesen olyan huszon-valahányan. A kliensek megkapják a szervertől a játék aktuális állapotának (zajjal is terhelt) kódolt formáját, amelyből kihámozzák a lényeges infókat. Ez a hámozás az érzékelés: mit látnak a játékosok a pályán, mit hallanak stb. S ezek alapján elküldik a szervernek, hogy éppen mit tesznek/válaszolnak: rúgnak-rúgnák a lasztit, mozognak-helyezkednének, fordulnak-szétnéznének stb. amely parancsok alapján a szerver aktualizálja a játék állapotát és így tovább a lefújásig...

Ezzel szemben a QCSS szerver nem szimulál, hanem a jelentkezett kliensek szimulálnak. Minden csatlakozott játékos és szurkoló a saját valóságában (a külső megfigyelő számára a képzeletében) szimulálja, hogy éppen hogyan alakul a játék és szimulációs ciklusonként, vagy néhány ciklusonként felküldi a szervernek a képzelete állapotát. A szerver pedig csupán választ a beküldött érvényes (pl. időben megérkezett) képzeletek közül egy olyat, amelyet kiküld az összes csatlakozott kliensnek, akik ezt innentől a közös valóságnak fogadnak el és megint elkezd dolgozni ebből kiindulva a képzeletük és így tovább a lefújásig...

(Az már csak a kokcáknak érdekfeszítő, hogy a QCSS-nél nincs "kihámozás" - egy valódi azonnali élményt ad a csapatok programozása a fejlesztőnek.)

Izgalmas dolog a választás: annak a kliensnek a beküldött képzeletét inkább választja ki a szerver, aki eddig már sikeresebben jósolta meg a jövőt (lásd a kapcsolódó publikációkban a kvantum-tudatosság függvényt); illetve például a jelen pillanatban rögzített algoritmus szerint az összes hazai szurkolónak annyi az ilyen induló "valóság alakító" ereje, mint egy játékosé - ezzel konkrét értelmet adtunk annak a szokásos edzői mondatnak, hogy "a közönségünk volt a 12. játékosunk". Persze vannak további fonomságok is, de ezek még megülnék a gyomrunkat.

Egy további különbség - a kockák számára egyben nagy kihívás - a kliensek nagy száma: a Bernabéu stadiont szimulálva 80.000 szurkoló ágenssel kell dolgoznunk a stadionban... csak gondolj bele, hogy egy Linux-os PC hány processznél hal meg... és máris érthető a kihívás - ha nem, akkor még nem vagy elég kocka :)

A foci vb megnyerése

Itt már óvatosan kell fogalmazni. Maga a recept egyszerű, a szurkolóknak egy előre kitervelt közös stratégia alapján kell nézniük a meccset (és egyben látniuk a jövőt), hogy "valóság alakító" hatásuk minél erősebb lehessen. Nem kell semmi misztikus dologra gondolni. Hiszen ha meccset nézel tipikusan most is sok esetben fogod sikerrel megjósolni, hogy kinek megy majd a passz stb. Egyszerűen egy közös recept kell, hogy adott minták esetén hogyan képzeljük a jövőt. Az óvatosság pedig azért kell, hogy elkerüljük az asszociációt a "koncentráló QCSS szurkolói magról" a Kecskebűvölők (The Men Who Stare at Goats) c. film néhány jelenete és a valóság tragikus szívmegállásos esetei között. Ezért inkább a következő cikk focis részét jelölöm meg tipikusan ars poeticámul: A tizenhatodik félidő, Az ember tragédiájának alternatív folytatása – focis parafrázisa.

Szólj hozzá!

Címkék: Soccer Zombies Kvantum-tudatos foci Quantum Consciousness Soccer Simulator Debreceni Egyetem programozás kurzus Labdarúgó-világbajnokság

süti beállítások módosítása