Skip to main content
2. júní 2016

Notkun hugbúnaðar við kennslu í forritun.

EyjolfurÁ síðustu árum hafa fjölmargir nemendur tekið áfanga í forritun við Háskólann í Reykjavík. Inngangsáfangi í C++ forritun er kenndur bæði fyrir fyrsta árs nemendur í tölvunarfræði, og fyrir annars árs nemendur í verkfræði. Undanfarin ár hafa um 400-500 nemendur setið þessa áfanga á hverju ári. Í þessari grein mun ég fjalla stuttlega um þann hugbúnað sem ég hef notað við kennslu í C++ forritun við Háskólann í Reykjavík.

Val á forritunarmáli

Ein fyrsta ákvörðunin sem þarf að taka þegar kennsla í forritun er skipulögð er hvaða forritunarmál verður fyrir valinu. Helstu valkostirnir eru C++, Java og Python.

mynd 1

Mynd 1: Vinsældir nokkurra forritunarmála samkvæmt PYLP Index (PopularitY of Programming Languages)

Python kom fyrst fram um 1991 en hefur náð miklum vinsældum síðustu ár. Helstu kostir Python sem fyrsta forritunarmál er að málið er bæði skýrt og öflugt, þar sem hægt er að gera flókna hluti með tiltölulega fáum línum af kóða. Fyrir kennara sem fara yfir og meta forrit frá byrjendum í forritun þá er mikill kostur hvað Python er strangt varðandi uppsetningu á kóða, þ.e. kóðinn verður að vera rétt inndreginn, en það leiðir af sér betri vinnubrögð og skýrari framsetningu á forritum. Nafnið "Python" er komið frá sjónvarpsþáttunum Monty Python's Flying Circle, en höfundur Python, Hollendingurinn Guido van Rossum er mikill aðdáandi þeirra.

Java hefur verið algengt val sem fyrsta forritunarmál, sérstaklega þar sem lögð er áhersla á hlutbundna forritun. Java kom fyrst fram árið 1995 og náði fljótlega miklum vinsældum. Samkvæmt PYPL Index þá er Java vinsælasta forritunarmálið, eins og sjá má á Mynd 1. PYPL Index metur vinsældir forritunarmála út frá því hversu oft leitarvélin Google er beðin um að finna leiðbeiningar (e. tutorial) fyrir viðkomandi forritunarmál. Í október 2015 var 24,7% af slíkum leitum fyrir Java. Forritunarmálið Java er ólíkt mörgum öðrum málum að því leyti að forrit skrifuð í Java eru keyrð í gegnum Java sýndarvél (e. virtual machine) sem þarf að vera til staðar á tölvunni. Slík uppsetning verður þá til þess að hægt er að keyra sama Java forritið á tölvum með mismunandi stýrikerfi, þ.e. hugmyndafræðin á bak við Java er "skrifa einu sinni, keyra hvar sem er" (e. WORA: Write Once, Run Anywhere).

C++ á sér mun lengri sögu en Java og Python. C++ kom fram árið 1983, en C++ byggist á forritunarmálinu C sem kom fram árið 1972. C er svo byggt á forritunarmálinu B, sem aftur á móti var byggt á forritunarmálinu BCPL. C náði fljótt miklum vinsældum og hefur haldið þeim í gegnum tíðina. Einn helsti gallinn við C er skortur á stuðningi við hlutbundna forritun, og eitt helsta markmiðið með þróun C++ var að bæta við þeim stuðningi.  C++ varð fljótlega mjög vinsælt og hefur haft mikil áhrif á mörg önnur forritunarmál, til að mynda Java, C#, Objective-C og fleiri, en Python er hinsvegar ekki undir miklum áhrifum frá C++. Forritunarmálið C++ er mun nær vélbúnaðinum í tölvunni en bæði Java eða Python, sem þýðir að hægt er að ná miklum hraða í forritum skrifuðum í C++, en á móti verður sjálfur kóðinn þá oft mun lengri en til dæmis sambærilegur kóði í Python.

Við Háskólann í Reykjavík er C++ kennt sem fyrsta forritunarmál. C++ er ekki auðvelt forritunarmál og það setur miklar kröfur á að hlutir séu settir fram skýrt og rétt og allt sé vel skilgreint. Það er hinsvegar í raun ein af ástæðunum fyrir því að nemendur sem læra C++ sem fyrsta mál standa oft vel að vígi þegar kemur að áframhaldandi forritun, því C++ þvingar notandann til að vera meðvitaður um hvernig tölvan virkar og að beita aga í forritun. Eftir að hafa lært C++ þá er tiltölulega auðvelt að læra önnur forritunarmál, bæði vegna þess hvað C++ gefur oft góða innsýn inn í hvernig hlutir virka, en einnig vegna þess hvað mörg önnur forritunarmál byggja beint á C++. Val á fyrsta forritunarmáli fyrir nemendur er hinsvegar mjög umdeilt og hægt er að lesa á netinu langar rökræður og rifrildi um það efni.

Þróunarumhverfi

Forrit eru oftast skrifuð í þróunarumhverfi (e. IDE: Integrated Development Environment) sem sameina textaritil, þýðanda og aflúsunarkerfi. Forritunarkóðinn er skrifaður í textaritli, en góð þróunarumhverfi setja til dæmis mismunandi liti á kóðann til að forritið verði skýrara. Þýðandi tekur kóðann og býr til forrit sem hægt er að keyra á tölvunni, og aflúsunarkerfin hjálpa til við að finna villur í forritum. Bæði Microsoft og Apple bjóða upp á þróunarumhverfi fyrir þær vélar sem keyra Windows og MacOS. Á tölvum með Windows stýrikerfinu er Visual Studio eitt öflugasta þróunarumhverfið á meðan XCode er líklega öflugasta þróunarumhverfið fyrir Apple tölvur. Vandamálið við að nota Visual Studio og XCode við kennslu er hinsvegar að þá eru sumir nemendur hugsanlega ekki með sama umhverfi og kennari. CodeBlocks (http://www.codeblocks.org/) er ókeypis þróunarumhverfi sem virkar fyrir bæði Windows, MacOS og Linux, og það hefur því orðið fyrir valinu sem þróunarumhverfið sem er notað við kennslu í C++ við Háskólann í Reykjavík. CodeBlocks er alls ekki gallalaust, til dæmis þarf stundum að breyta nokkrum stillingum til að það sé stöðugt á Apple tölvum, en það er engu að síður mjög öflugt og býður upp á allt það sem þarf fyrir inngangsáfanga í forritun.

Forrit sem búin eru til af nemendum í fyrstu áföngum í forritun eru oftast tiltölulega lítil og án notendaviðmóts. Slík forrit eru keyrð í gegnum skipanalínu. CodeBlocks, sem og önnur þróunarumhverfi, býður upp á að ræsa sjálfkrafa skipanalínuna til að keyra forrit, sem er sú leið sem flestir nemendur velja. Hinsvegar er stundum mikilvægt að geta keyrt sama forritið aftur og aftur í gegnum sömu skipanalínuna, til dæmis þegar verið er að sýna dæmi um keyrslur á forriti í kennslu því þá þarf oft hafa stærra letur, en leturstærð er upphafsstillt í hverjum nýjum glugga. Á Apple tölvum er Terminal skipanalínan mjög öflug, sem og á Linux vélum, á meðan innbyggða skipanalínan í Windows er afar takmörkuð. Þeir nemendur sem vilja nota skipanalínu á Windows tölvum ná sér því oftast í aðrar skipanalínur, til dæmis Console2 (http://sourceforge.net/projects/console/).

Piazza

Þegar verið er að kenna stóra áfanga þá er mikilvægt að hafa auðveldar leiðir fyrir nemendur að leita sér aðstoðar hjá kennurum og að setja fram spurningar um námsefnið. Stundum er farin sú leið að búa til hópa á Facebook þar sem nemendur og kennarar geta rætt saman. Gallarnir við þá leið eru hinsvegar nokkrir, t.d. þvingar það alla til að vera Facebook notendur, það setur óskýr mörk milli skólans og einkalífs nemenda og kennara utan skóla, það er erfitt að skipuleggja eða að leita að ákveðnum atriðum, og það er mjög erfitt að setja inn forritakóða á Facebook þannig að kóðinn sé læsilegur. Vefforritið Piazza (piazza.com) var hannað til að mæta þessum vanköntum, þar geta nemendur sent inn spurningar og valið um að hafa þær aðeins sýnilegar kennurum, ákveðnum kennurum eða öllum. Það er þægilegt að leita, spurningar eru flokkaðar, og það er sérstakur textaritill sem gerir það auðvelt að setja inn fallegan kóða. Piazza veitir líka góða yfirsýn fyrir kennara, til dæmis hversu langan tíma nemendur þurfa að bíða að meðaltali áður en þeir fá svör við spurningum og hversu virkir einstakir nemendur og kennarar eru í kerfinu. Eftir að hafa prófað bæði Facebook og Piazza sem samskiptavettvang fyrir áfanga, hvort sem um er að ræða forritun eða annað, þá tel ég Piazza hiklaust betri valkost.

Git

Git er kerfi sem er hannað fyrir útgáfustjórnun á forritum (e. version control). Git fylgist með ákveðnum skráarsvæðum á tölvunni, og geymir hvernig allar skrár í því skráarsvæði líta út, þ.e. git geymir allar breytingar á öllum skrám. Git er ómissandi þegar margir einstaklingar eru að vinna í sama kerfinu, því þá þarf að passa upp á að breytingar hjá einum aðila muni ekki skapa vandræði fyrir aðra. Með því að nota git má fá nauðsynlega stjórn og skipulag þannig að margir geti unnið í sama kerfinu samtímis.

Fyrir kennslu í forritun þá er mikilvægt að nemendur kynnist aðeins git, sérstaklega ef nemendur taka þátt í stærri hugbúnaðarverkefnum seinna meir, en það er einnig þægilegt að nota git til að koma sýnidæmum og öðrum kóða beint til nemenda. Í fyrirlestri er oft verið að taka sýnidæmi þar sem verið er að byggja rólega upp stærri forrit eða nota sama forritið til að sýna mismunandi dæmi. Með því að nota git má t.d. taka skyndimyndir af forritinu á nokkurra mínútna fresti á meðan fyrirlestri stendur, þannig að nemendur geti fengið afrit af forritinu nær samstundis með því að nota git til að sækja nýjustu útgáfu, en einnig má skoða eftir á hvernig forritið þróaðist í gegnum fyrirlesturinn.  Hægt er að nota ýmis forrit, t.d. gitk, til að sjá á myndrænan hátt hvernig breytingar á forritinu voru gerðar.

Mooshak

Þegar nemendur skila verkefnum er mjög þægilegt að nota tölvur til að athuga hvort forritin virki rétt eða ekki. Mooshak var upprunalega hannað sem kerfi til að sjá um forritunarkeppnir, en innan Háskólans í Reykjavík hefur það verið aðlagað að skilum á forritunarverkefnum. Nemendur skila inn kóða í Mooshak, sem sér um að þýða kóðann og keyra forritið á fyrirfram ákveðnum prófunardæmum. Nemendur fá svo endurgjöf frá Mooshak hvort forritið innihaldi villur og hvort það náði að skila réttum svörum við prófunardæmunum. Þetta gefur nemendum betri innsýn í það hvort forritin þeirra virki rétt, ásamt því að hjálpa mikið til við yfirferð á verkefnum.

Rafrænt prófakerfi

Þar sem nemendur eru að vinna á sínum eigin tölvum alla önnina við að forrita, þá er mikilvægt út frá kennslufræðum að lokapróf og önnur próf séu í svipuðu umhverfi. Þar sem fjöldi nemenda á hverju ári er slíkur að það er ómögulegt að nota tölvustofur skólans til að prófa á tölvum, var farin sú leið að láta nemendur taka próf á sínum eigin tölvum. Hinsvegar er mikilvægt að nemendur geti ekki haft samskipti sín á milli á meðan prófi stendur. Til að leysa það vandamál er notað rafrænt prófakerfi, sem virkar þannig að nemendur ræsa tölvurnar upp á USB lykli sem inniheldur Linux stýrikerfi. Það stýrikerfi keyrir á tölvum nemenda og inniheldur öll nauðsynleg forrit, til dæmis CodeBlocks þróunarumhverfið. Í þessu kerfi er einnig git sem sér um að taka afrit af öllu sem nemandinn skrifar, til að tryggja að gögn glatist ekki. Prófakerfið notar engin gögn af tölvum nemenda, það tengist hörðum diskum ekki að neinu leyti og er algerlega óháð því hvaða stýrikerfi er á tölvunum. Nemendur fá prófspurningar annað hvort á blaði eða í prófakerfinu, skrifa sín forrit á sínar tölvur í vernduðu Linux umhverfi, og skila inn lausn með því að smella á viðeigandi tákn á skjáborði. Hér er því mikilvægt að nota sama þróunarumhverfi og nemendur eru vanir og því er CodeBlocks góður valkostur.

Moss

Því miður gerist það öðru hvoru að nemendur brjóti gegn verk- og prófareglum, til dæmis með því að afrita forrit frá öðrum nemendum. Þegar um er að ræða mikinn fjölda af nemendum getur verið erfitt að sjá slíkt. Moss (Measure of Software Similarity) er kerfi sem var þróað í Stanford (https://theory.stanford.edu/~aiken/moss/) til að finna forrit sem eru svipuð eða eins. Hægt er að láta Moss skoða allar lausnir af ákveðnum verkefnum og fá til baka skýrslu sem sýnir lista yfir lausnir sem eru svipaðar ásamt mælikvörðum hversu líkar lausnirnar eru. Með því að skoða vandlega þau forrit sem Moss telur vera eins má auðveldlega finna þau verkefni sem eru afrituð. Kosturinn við Moss er að það skilur flest forritunarmál og aðlagar sig að þeim, þannig að forrit geta verið talin eins, jafnvel þó breytuheitum eða athugasemdum í kóða hafi verið breytt.

Lokaorð
Þrátt fyrir að margvíslegur hugbúnaður hjálpi oft við kennslu í forritun, samanber atriðin hér að framan, þá koma reglulega stundir þar sem nauðsynlegt er að nota túss og töflu til að útskýra einhver atriði. Vandamálið er að oftast er skjávarpi í gangi sem tekur plássið frá töflunni, því flestar skólastofur virðast gera ráð fyrir að kennari noti alltaf aðeins annaðhvort túss eða skjávarpa. Ein einföld lausn til að komast hjá þessu er að setja svarta skjáhvílu á tölvuna sem verður virk þegar músabendillinn er settur í ákveðið horn. Með því að hafa skjávarpa í gangi en myndina alveg svarta þá virkar þetta eins og búið sé að slökkva á skjávarpanum og því má teikna á töfluna að vild.

Í tölvuheiminum er þróunin hröð og breytingar örar. Sá hugbúnaður sem notaður er til kennslu í forritun breytist einnig hratt og því er nauðsynlegt að fylgjast vel með öllum breytingum. Færni í forritun verður æ mikilvægari eftir því sem tölvur öðlast stærri sess í daglegu lífi okkar, og sérstaklega þarf að hlúa að kennslu í inngangskúrsum í forritun því lengi býr að fyrstu gerð.

Höfundur Dr. Eyjólfur Ingi Ásgeirsson, lektor Háskólanum í Reykjavík

Skoðað: 2799 sinnum

Blaðið Tölvumál

Forsíða Tölvumála

Leita í vefútgáfu Tölvumála

Um Tölvumál

Tölvumál - tímarit Skýrslutæknifélags Íslands er óháð tímarit um tölvutækni og hefur verið gefið út frá árinu 1976.

Vefútgáfa Tölvumála birtir vikulega nýja grein á vef Ský og árlega er gefið út veglegt prentað tímarit undir nafninu "Tölvumál" þar sem fjallað er um tölvutækni frá ýmsum sjónarhornum og er þema blaðsins jafnan valið snemma árs og útgáfa að hausti.

Ritnefnd Ský sér um að afla efni í Tölvumál og geta allir sem áhuga hafa sent inn efni.

Um ritnefnd Tölvumála