MTI

Mindenkinek tudnia kellene programozni?

Számos tanár van azon a véleményen a számítógép-tudományt oktatók körében, hogy a főiskolát végzetteknek tisztában kell lenniük a szoftverek alapjaival. Persze nem azt állítják, hogy mindenkinek szükségképpen képzett programozóvá kell válnia. Inkább arra törekszenek, hogy megtanítsák a "számítógépi gondolkodást" - a programozási nyelvek által alkalmazott általános fogalmakat.

2006-ban Jeannette M. Wing, a Carnegie Mellon Egyetem számítástechnikai karának vezetője kiáltványt állított össze, amellett érvelve, hogy újra kell értelmezni az általános műveltséget: szerepelnie kell benne a számítógépes folyamatok megértésének is. "A számítógépi gondolkodásnak mindenki számára alapvető készségnek kell lennie, az nem csupán a számítógépes szakemberek kiváltsága - írta. "Az olvasással, az írással és a matematikával azonos szintre kell emelni a számítógépes gondolkodást is, hogy teljes értékűvé váljék minden gyermek elemző képessége." Arról azonban nincs igazán egységes álláspont, hogy pontosan mik is minősülnek a számítógépes gondolkodás központi elemeinek. Mint ahogy arról sincs, hogy a diákoknak - ha kell egyáltalán - milyen fokon kell érteniük a programozáshoz, annak érdekében, hogy megértsék azt. És a legfontosabb: továbbra is bizonytalan, szükség van-e arra, hogy minden főiskolai hallgató elsajátítsa a számítógépes gondolkodást.

A nem szakirányú főiskolai képzésben a számítástechnika-órák tematikája igen eltérő. Egyes szakok hallgatói rögtön valamelyik fontosabb programozási nyelven kezdenek el kódolni, másutt viszont teljesen kizárják a programozást, és inkább a számítógép-használat szociális és etikai kérdéseiben merülnek el. A Carnegie Mellonon az olyan diákok számára, akiknek nem a számítástechnika a fő szakjuk, A számítástechnika alapelvei című kurzust javasolják. Ez a számítástechnika történetével indul, de a diákok már a második héten elkezdik tanulni a Ruby nevű programozási nyelvet. A tanfolyam ezt követően az iteráció, a rekurzió, a véletlenszám-generálás és hasonló témák területét fedi le.

Tom Cortina, aki tanít a tanfolyamon, azt mondja, hogy néhány diák kihívásnak tekinti a programozást, különösen azok, akiknek a szakjai nem érintik a technológia, a műszaki tudományok vagy a matematika területét, és nincsenek hozzászokva az e területeken szükséges precizitáshoz. A Massachusetts állambeli Nortonban található Wheaton Főiskolán Mark D. LeBlanc "költőknek" oktatja a számítástechnikát. A tárgy ismertetője szerint a tanfolyami részvétel egyetlen előfeltétele, hogy valaki "szeresse az írott (és a digitális) szöveget". LeBlanc professzor óráin a diákok megtanulják a szoftveripar egyik divatos, modern nyelvének, a Pythonnak az alapjait, de ez a képzés kapcsolódik az angol irodalmi kar J. R. R. Tolkiennel, illetve az angolszász irodalommal foglalkozó kurzusaihoz. A számítástechnikai tanfolyam hallgatói azonnal nagy szövegek elemzésén próbálhatják ki a megszerzett ismereteket. A tanterv olyasmire hasonlít, amit inkább a humán szakokon keresne az ember.


Mark LeBlanc szerint a kreatív írás mellett számítástudományt is kell tanulniuk a költőknek

"Az órákon komoly problémákkal szembesülünk - fogalmazott a professzor a The New York Times tudósítójának nyilatkozva -, hiszen a diákok többsége túlterhelt. Fontos eldönteni, hogy hol kezdjünk bele az anyagba. Ez teremti meg a lehetőséget arra, hogy a hallgatók megismerjék a dekompozíció fogalmát: azt, ahogyan egy nagy problémát kezelhető, kisebb problémákra lehet felosztani." LeBlanc becslései szerint az egyes félévekben a beiratkozók mindössze 5 százaléka int búcsút a kurzusnak azon az alapon, hogy az "rosszabb, mint egy idegen nyelv". A professzor úgy véli, hogy a bölcsészettudományra szakosodott Wheatonon végzettek többsége olyan területeken talál majd munkát, ahol meg kell tanulniuk programozni, a bölcsészettudományi főiskola pedig biztonságos hely az ilyen kezdők számára.

Egy sor más felsőoktatási intézményben a számítástechnikai karok úgy igyekeznek bevezetni a hallgatókat a számítógépi gondolkodás elsajátításába, hogy megkímélik őket valamelyik "ipari erősségű" programozási nyelv elsajátításától: attól, hogy azokon keresztül ismerjék meg az általános fogalmak alkalmazását. Ehelyett a hallgatók interaktív animációk létrehozására alkalmas vizuális script-nyelveket tanulnak. Az egyik ilyen nyelv a Scratch, amelyet általános és középiskolai tanulók számára fejlesztettek ki. Marie Desjardinsnek, a Marylandi Egyetem számítástechnika-professzorának osztálya a Scratchet a Bevezetés a számítógépek és a programozás világába című tárgy keretében használja, így a diákok a gyakorlatban ismerkedhetnek meg néhány alapfogalommal. A félév mintegy 25 százaléka telik programozással.

Arra a kérdésre, hogy miért használják a főiskolai szintű oktatásban a Scratchet, Desjardins szerint egyszerű a magyarázat: minden hallgató úgy érkezik az egyetemre, hogy a középiskolában angolból, matematikából, biológiából megszerezte a kellő ismereteket, de ugyanez a számítógépes jártasságot illetően már nem mondható el mindenkiről. Michael Littman, aki a Rutgers Egyetem számítástechnikai karának vezetője, hasonló véleményen van: a számítógépi gondolkodást a középiskolában kellene elsajátítani, de az ott nem valósul meg, következésképpen az egyetemi számítástechnikai karoknak kell megfelelő alternatívát ajánlaniuk a felzárkózáshoz.

Az iowai Grinnell Főiskolán a diákok felvehetik A digitális kor című tárgyat, amelynek keretében megismerhetők "a számítógép-tudomány legnagyszerűbb gondolatai, főként a mögöttes algoritmikus elvekre és a társadalmi következményekre összpontosítva". Mindez azonban nem jelenti azt, hogy valamilyen programozási nyelvet meg kellene tanulni. "Mivel az általános műveltségnek része az olvasás és az írás ismerete, a 'számítógépes műveltség' megfogalmazás azt sugallja, hogy kötelező programozói tudással rendelkeznie annak, aki e területen akar tevékenykedni" - magyarázta a lapnak Henry M. Walker, a Grinnell számítástechnika-professzora. "Az átlagos állampolgárok azonban akár tudnak, akár nem tudnak programokat írni, hatékonyan működhetnek ebben a technológiai korban."

A professzor inkább azt részesíti előnyben, hogy a hallgatók otthonosan mozogjanak a számítógépes környezetben, ez pedig elérhető anélkül is, hogy programozási feladatokat végeznének. Eljön majd az az idő, amikor a számítástechnikai folyamatok megértése elengedhetetlen lehet mindenki számára, akárhol tevékenykedik is. De az még nem világos, mikor érkezik el az a pont, amikor a "jó ismerni" megfogalmazás helyét a "kötelező tudni" veszi át.

Hozzászólások

A témához csak regisztrált és bejelentkezett látogatók szólhatnak hozzá!
Bejelentkezéshez klikk ide
(Regisztráció a fórum nyitóoldalán)
  • fonak #77
    És mi a helyes válasz? 0x1004? :)
  • figyu #76
    "Én sem tudom pontosan, most hol tart nálunk az oktatás és mit tanítanak, csak azt láttam, hogy akiket suli után felvettünk (nulla gyakorlattal), azok helyett a pizzafutárt is berángathattuk volna,"

    10 éve történt: cégünk c++ programozókat keresett. 10 jelentkezőből 8-nak fingja se volt a pointer-aritmetikához. És C programozásból akar megélni?
    Ez volt a példa amin 80% diplomás elhasalt:

    DWORD* p = 0x1000;
    p++;
    p = ?

    Leggyakoribb válasz az 0x1001 volt. De előfordult 0x1002, 0x1016 (!) is.
    Én meg máig nem értem.

  • figyu #75
    "A programozás = matematika"
    Ehhez szeretnék hozzáfűzni egy durva felismerést: Az egyszeri programozó nem is találkozik a matekkal! Én 10 év után azt vettem észre hogy összeadni se kellet :) Sőt, ha csak összeadok két számot és az eredményt írom le a kódba az szakmai hiba!
    Mert senki sem fogja érteni mi a a fasz az a y = 123, ellenben így rendben van:
    #define LOW_LIMIT 100
    #define BORDER_SIZE 23
    y = LOW_LIMIT + BORDER_SIZE;

    Sőt a megrendelő külön kéri, hogy ne kezdjünk el "optimalizálgatni". Mert nem érdekli hogy egy függvény 10 vagy 14 ms alatt fut le, az érdekli hogy a kód olvasható, fejleszthető legyen.

    Sőt, a rendszertervezők se matekoznak. Nekik design patterns, intelligencia és tanulási vágy kell.

    Aki matekozik az nagyon kis rész, pl. aki kitalálja a képtömörítéseket, titkosításokat. Ha ő kész van az algoritmussal a programozó majd lekódolja.

    Persze nem azt akarom írni, hogy aki büszkén vallja, hogy "hülye vagyok a matekhoz" az jó lesz programozónak. Kell hozzá némi intelligencia és mérnöki véna (rendszer-szemléletnek, analitikus gondolkodásmódnak szokták írni az állás hirdetésekben). De ha ezek megvannak, a mérnöki szakmák közül mindenképp a programozót javasolnám. A legnyugisabb meló :) Nem dől össze az épület, nem füstöl el a motor. Ha hiba van egyszerűen kijavítjuk és mindenki boldog :)

  • georgesmatyas #74
    szánalmas....
    gépészmérnöknek is teljesen felesleges belenyalogatni minden szarba.
    PLC... jó-jó szép meg minden, de az egy külön szakma. ki nem szarja le a metódusok felépülését?
    CAE ANSYS algoritmusok... No comment. Kajak azt se tudtam mit tanulok csak 15-20 cm széles képleteket bemagoltam. A francot nem érdekli, hogy rácsszerkezetnél a hegesztési tényezők komponenseit meg feszültséget hogy csűri-csavarja.

    Általános isiben bezzeg még a szövegszerkesztő is érdekes lett volna.
    De nehogy baja legyen a gépeknek inkább csak ültünk előtte és Neumann elvek... dec>bináris szarakodás. és TÁBLÁN a TURBO pascal!!!!

    Hungary.....
  • M2 #73
    Ami ideális lett volna: egy objektum-orientált nyelv alapos ismerete, Model-View-Controller ismerete, sok-sok framework és design pattern ismerete, mit mikor és hol érdemes használni. Hogy át lehessen beszélni egy egész programozási folyamatot úgy, hogy a konkrét nyelvet még csak nem is érintettük.
  • M2 #72
    Én sem tudom pontosan, most hol tart nálunk az oktatás és mit tanítanak, csak azt láttam, hogy akiket suli után felvettünk (nulla gyakorlattal), azok helyett a pizzafutárt is berángathattuk volna, mert fél-egy évig csak tanultak, utána tudtak valami hasznosat produkálni. Mindenről hallottak de semmit nem tudtak a gyakorlatban, olyan volt mintha egy vaskos könyvből csak a főcímeket magolták volna be.
  • lordsithlord #71
    Az a baj, hogy a felsőoktatásban jelenleg nincs igazi alapozás, meghatároznak egy nyelvet (tapasztalataim szerint előszeretettel vagy JAVA, vagy C vagy C++ lesz ez) és abban elkezdik bemutatni a különböző technikákat és módszereket.

    Én anno 2 évig tanultam kifejezetten programozást OKJ keretein belül (megjegyzem, kidobott idő volt). Anno azzal kezdtük, hogy megtanítottak minket megtervezni a programot, utána azt, hogy hogyan válasszuk ki a megfelelő nyelvet (ez mondjuk poénos volt, mert őssz-vissz tanultunk Pascalt és Delphi-t) és csak ezután jöhetett a kódolás folyamata. Ma meg megkérdezel egy felsőoktatásban tanulót arról, hogy minek alapján választott programnyelvet és milyen módszerrel tervezte meg a programját és nézz rád, mint borjú az új kapura. Lehet, hogy sok dolog elavulttá vált az évek folyamán, nem tudom, mert a programozástechnikát nem követtem az évek folyamán, mivel más szakágat választottam végül, de szerintem sok olyan dolog van, ami még mindig élvez létjogosultságot, mégse tanítják és nem is használják.
  • M2 #70
    "Mark LeBlanc szerint a kreatív írás mellett számítástudományt is kell tanulniuk a költőknek"

    Szerintem meg Mark LeBlancnak el kellene mennie egy húsz éves kvantumfizika tanfolyamra, az is nagyon hasznos tud lenni, több példa is van rá.
  • M2 #69
    Szerintem a programozás alapjait fél, az objektum orientált gondolkozást és trükköket újabb fél év alatt meg lehet tanulni. Ennyi alapozásnak elég is, mert aztán jön egy nyelv kiválasztása, amiben úgy 5-6 év gyakorlat után mondható valaki jónak.
    Ebből látszik, hogy az első év ami suliban megoldható, de az is csak akkor ha igazán érdekli a delikvenst a programozás (30 gyerekből 1). Ne raboljuk el gyerekek idejét, nekik sincs végtelen.
  • Ferrer #68
    Nekem ez a kedvenc programozós kurzusom (Stanford). Nagyon nagy arc a csávó, és tényleg megtanít mindenkit 0 előképzettséggel. Igaz bizonyos értelemben az előadásokon érződik az amcsi színvonal, főleg az első néhányon.