Ez egy nagyon bevezető kurzus azoknak akik még soha nem kaptak programozási oktatást. A kurzus célja a programozás alapvető gondolatainak bemutatása és a programozás iránti kedv felkeltése.
Irodalom: How to think like a computer scientist
https://media.readthedocs.org/pdf/howtothink/latest/howtothink.pdf
Ennek a könyvnek sok verziója van, ez a 2018 december 5.-ei változat. A cél ezen könyv első 11 fejezete. A 11.-ből legalalább az első feléig jó lenne eljutni.
Tartalom: Egyszerű adattípusok (int, float, string), típuskonvertálás. Értékadás, operátorok, operandusok, sorrendiség, modulus operátor. For ciklus turtle vektorgrafinkán bemutatva. Függvények, lokális paraméterek. Logikai opertárok, Boole függvények, kondiciónálás (True, False, if, else, elif). While ciklus, break és continue. Egymásba ágyazott ciklusok és egymásba ágyazott adattípusok. Sztringek, find és split metódusok. In and not in operátorok. Listák, klónozás. Szótárak. Modulok, fájlok. Rekurzió. Osztály fogalma, saját osztály készítése.
Ha marad idő a félévben akkor a következő témákkal érdemes esetleg foglalkozni: eseményvezérelt programozás, lista algoritmusok, objektum orientált programozás, hibakezelés.
Egyszerű programozási gondolatok. Inkrementális programozás, debugolás print paranccsal, tesztvezérelte programozás, átlátható programozás (kommentelés és szerkesztési elvek), függvénybe csomagolás, általánosítás. Mutálható és nem mutálható adattípusok.
Küzdöttem azzal, hogy mit kell fordítani magyarra és mit nem (és hogy egyáltalán, hogy van magyarul néhány dolog).
VálaszTörlésValószínűleg érdemes számelméleti problémákat használni a példákhoz: egy szám prím-e vagy sem, prímfaktorizáció...
VálaszTörlésHa ez egy közös Matlab-Python tárgy, akkor nem túl sok ez a tematika? (Hozzáteszem: nem tudom mennyire reális egy ilyen közös tárgyat csinálni). Ami még egy kicsit zavar, az a turtle, de meggyőzhettek, hogy az fontos. A címszavak közé még beírnám azt, hogy list comprehesion (noha implicite benne van). Egyébként tetszik, egyetértek a számelméleti kis példaprogramokkal is. Továbbra is szeltpkus vagyok azzal kapcsolatban, hogy van-e kapacitásunk megtartani. Végül: valami primitív kis osztályt nem kellene íratni velük? Azért is kérdezem, mert a kapcsolódó szintaxist amúgy is meg kell tanulniuk (például mi az a pont abban, hogy str.split(“,“)).
VálaszTörlésA Pazmanyon nagyon fiatal oktatok (felsobb eves diakok) tartjak az info-s gyakorlatokat. Ha valaki elakad instant segitseget kap. En is kuzdok ezzel a problemaval a gimis fiamnal, de ez a generacio ilyen, es nem pedig az utana olvasos tipus. (Nekik az a hozzalallas RTFM erzest ad, akkor is amikor pedig nem az.)
TörlésViszont ilyen gyakorlatokat mesterszakos diakokkal meg lehet oldani, ha jo jegyzet, jo programozasi feladatok vannak hozza. (Legalabbis remelem, hogy vannak nekunk ilyen diakjaink akik tudnak Pythonban programozni.)
Én is azt gondolom, hogy ha van 5 jó diákunk aki ismeri a Pythont és a kezükbe nyomjuk ezt a könyvet és hogy meddig jussanak el benne akkor valójában nem kell előadás sem. Körbe kéne kérdezni, hogy van-e 5 msc-s diákunk aki erre megfelelne.
TörlésEgyetértek, és doktorandusz is lehet, és szerintem sem kell előadás. Ugyanakkor azért jó lenne egy hozzávetőleges központi tanmenet, hogy egy okos diák ne nyomja el az egész könyvet egy óra alatt azzal, hogy ebben minden triviális. Pl. a GUI-s részeket én biztosan kihagynám. Laborban képzelitek, vagy HF-ekkel? Vagy saját laptoppal egy teremben? Vagy interaktívan úgy, hogy online konzultáció emailben vagy skype-on?
TörlésÉn a fenti leírásba most a 2018 december 5.-ei verziót tettem bele. Ne akarjuk mindig a legutolsó verziót, mert akkor állandóan át kell nézni a dolgokat. Ráadásul az utolsó verziót én is rosszabbnak érzem.
TörlésÉn arra szavazok, hogy labor legyen és HF viszont az online konzultáció és skypot nem támogatom. Akkor a diákok úgy éreznék, hogy bármikor konzultálhatnak. Viszont meg kell mutatni vagy elmondani nekik, hogy töltsék le a saját latopjukra a PyScriptert (vagy valami hasonlót), hogy otthon is tudjanak dolgozni.
Fontos kérdés a környezet. A laborban linux lesz (remélhetőleg). Akkor viszont kell egy óra arra is, hogy mi a cp parancs. Python esetében én mindig egyszerű editort használtam, de tudom, hogy ez nem az Idők Szava. PyScripter nincs linuxra. Van Eclipse plugin pythonhoz, ha mindenáron IDE-t akarunk, és azt jó megtanulni, mert más nyelvekhez is jó. Ha gondoljátok, eljátszom vele egy kicsit.
TörlésKét dolgot próbáltam ki: PyCharm és PyDev. Mindkettő van Windows-ra és Linuxra is.
TörlésA PyDev egy Eclipse modul. Az Eclipse-hez JAVA kell. Kissé bonyolult az install egy kezdőnek. Előnye, hogy ez nagyon bevett dolog, és szinte minden nyelvre jó (pl. C++-ra is). Konfigurálható template-ek vannak.
A PyCharm elvileg fizetős, de a community edition ingyenes, és a Pro is akkor, ha valaki diák, vagy ha open source projektre használja (ha jól értettem). Az install nagyon egyszerű, és talán használni is, de ehhez mindkettőről sokkal több tapasztalatot kellene gyűjteni.
Sajnos most is belefutottunk abba, hogy (nekem legalábbis) se a programozásban, se a programozás tanításában nincs tapasztalatom elég. Nem tudom, melyiket javasoljam, mindkettő mellett szólnak érvek. Mindkettőben van syntax highlighting és debugging support is.
Itt van egy elég profinak tűnő összehasonlítás:
Törléshttps://www.slant.co/versus/1240/1245/~pycharm_vs_eclipse-with-pydev
Porkoláb Zoli szerint az Eclipse-et nem használják, de nem is tiltják, a legegyszerűbb editort használják az oktatásban. Ez talán a Python-ra fokozottabban igaz. (A wysiwyg html editoroktól én is világgá bujdosom). Viszont azért segítség lehet az, hogy a kód részeit össze lehet ejteni, hogy a szintaxisban segít (főleg kezdőknek, de melyikünk nem vadászott sokat hiányzó }-re TeX-ben). Debugolni én print utasításokkal szoktam, de lehet, hogy az is kényelmesebb egy IDE-vel. Mit gondoltok minderről? Ezt el kell döntenünk. Én Emacs-ot használok, de egy windows-os lelkű fiatalnak a terminálablak is idegen, notepad-ban editálja a Python source-ot?
TörlésThonny
TörlésPython IDE for beginners
https://thonny.org/
Ez is cross platform. Nem próbáltam még ki. Az Eclipse-nek önmagában is biztos, hogy elég meredek az elején a tanulási görbéje.
https://www.youtube.com/watch?v=nwIgxrXP-X4
TörlésA Thonny szerzője ebben a videóban bemutatja, hogy kezdőket hogyan tanít vele. (Nem érvelek a Thonny mellett, hanem gyűjtöm az infókat.)
Van még a Visual Studio Code. Ez ugyan Microsoft, de mostanában a Microsoft supportálja a Linuxot is, és ennek is van Linuxos és Mac OS-es változata is. Ebben is van Python module.
Törléshttps://code.visualstudio.com/docs
Itt vannak intro videók is.
A Visual Studio Code tetszik eddig a legjobban. Intuitív és kényelmes. És a Microsoft supportban is bízom.
TörlésUgyanakkor a Thonny-t is nézzétek meg, mert hátha kezdőknek az hasznos.
Én nem tenném egybe a kettőt, egyszerre csak egyet kéne tanítani egy bevezető kurzusba. A turtle-lel nekem is gondom van, ezt én is szerencsétlennek tartom (ezt múltkor meg is jegyeztem egy megbeszélésen), de két érv mégis szól mellette. 1) Ez van a könyvben és jó lenne egy könyvet követni. 2) Látványos: egyszerűen látják a végeredményt. Ha bármelyike a két érvnek nem lenne igaz, akkor azonnal elvetném, mert így is nagyon rezeg a léc nálam, viszont akkor egy másik könyvet kéne keresni.
VálaszTörlésAz két különböző dolog a fejemben, hogy tudják, hogy vannak osztályok és hogy ők maguk írnak egyet. Az objektum orientált programozás pontosan úgy kezdődik, hogy írnak maguknak egy saját osztályt és hozzá egy egyszerű metódust, de vannak kétségeim, hogy ez belefér a félévbe.
Szerintem ez egy nagyon jo tematika. En nagyon orulnek, ha mind az elso mind a masodik felevben lenne info.
VálaszTörlésEloszor a Matlabos felfedezos, ott sok a matek, keves a programozas. (En nagyon hiszek abban, hogy a matematikai jelensegeket erdemes megismerni, amire a mai generacio valoszinuleg csak szamitogepen at hajlando.)
Utana masodik felevben johetne ez, es akkor talan mar nem is kell matek, hanem lehet normalis progi feladat is. Hardcore amit az IK-n csinalnanak. Illetve talan meg opkut? De biztos van sok erdekes matek, pl a 3n+1 sejtes. Statisztikabol is jo lenne szamitogepes labor...
Szoval, ha tudnank tobb idot erre szanni, az jobb lenne. De ez egyelore irrealis, ami esetben ez az ora fakultativ lesz. Jolemlekszem, hogy ez a terv? (Sztem minimum a hallgatosag fele azert meg fogja probalni mert nyilvanvaloan hasznos.)
Azt gondolom, hogy egy ilyen felfedezős óra jó lenne. Azt nem tudom, hogy a Matlab programozás nélkül mennyire izgalmas. Esetleg lehetne egy olyan órát csinálni ami ilyen felfedezős szellemben bemutatná a Matlab, Maple, SageMath lehetőségeit mindenféle programozás nélkül (vagy esetleg egy for ciklussal maximum). A 3n+1 sejtés benne van a fent említett könyvben, a kondiciónálás azon van bemutatva.
TörlésCsak arra gondoltam, nem is feltétlenül a végén, hogy írjanak egy "komplex" osztályt, benne mondjuk abszolút érték és szög, meg valós rész, képzetes rész és konjugált. És valamit, ami ezt használja. Az a baj, hogy az ember önkéntelenül is procedurálisan gondolkozik (pláne én, mint öreg, aki azon nőtt fel), és mindig félek attól, hogy ezt a szemléletet oltom át másba. Fontosabbnak érzem, mint egyes finomságokat megtanítani (pl. modulok). Ezen kívül, ha a python library-kat használni akarják (és fogják), ott minden osztály. Nehezebb úgy használni valamit, ha nem értjük, mi az.
VálaszTörlésBeírtam a tematikába. Lényegében a 15. fejezet az amit kértél és nagyon nagyon könnyen el tudom képzelni, hogy a tárgy leendő oktatója is veled fog egyetérteni.
VálaszTörlésAz online változatban a 16. fejezet az osztály nálam, a 15. a recursion. Még egy kérdés: dictionary-t nem kellene beleírni expliciten is? Én (a pici primitív programjaimban) állandóan használom, a listával csaknem egyenrangúan.
TörlésAzt elfelejtettem, hogy ennek a könyvnek nagyon sok változata van. Nálam a rekurzió csak a 18. fejezet, az benne legyen? A többit mindjárt megcsinálom.
TörlésEz a legfrissebb? Itt a végén már a harmadik kiadás előszava is megvan.
TörlésIgen, ez most javítottam.
TörlésBocs, hogy ennyit írok (és tudom, hogy ezzel csak az anyag nő). De valami olyan emlékem van, hogy azt, hogy egy file-t sikerült-e megnyitni, nem if-fel kell megkérdezni, hanem try/catch-csel (mert menet közben változhat az állapota). Szóval az opcionális részbe esetleg még az exception-t is bele lehetne írni, és az is fontos szemlélet (goto helyett :-). A hibakezelés fontos téma user inputnál is.
VálaszTörlés13.6.5 a könyv eme változatában, mint alapprogram:
Törléstry:
f = open("my_file.txt", "w")
try:
f.write("Writing some data to the file")
finally:
f.close()
except IOError:
print "Error: my_file.txt does not exist or it can't be opened for output."
Akár ennek a kurzusnak a tapasztalatait is figyelembe lehetne venni a tényleges anyag összerakásakor.
VálaszTörléshttps://www.edx.org/course/introduction-to-computer-science-and-programming-using-python-0
Pythonnal kapcsolatban még Madarasi Pétert lehet megkérdezni, vagy akár megkérni az óra megtartásában. Eléggé szeretik a diákok, és mintha besegített volna Fekete Pistának is.
VálaszTörlés