Hasznos bővítmények bemutatása

Virtual Programming Lab for Moodle - Szoftverbeadó,tesztelő és plágium ellenőrző rendszer a Moodleban

Az informatika oktatás, és ma már számos természettudományos tárgy (fizika, matematika) elengedhetetlen része a programozási ismeretek bővítése. Egy kiadott programozási feladat megoldását egyszerű fájl beküldéssel is beadhatja a tanuló, ám ezek ellenőrzése és értékelése minden esetben az oktatóra hárul. Természetesen vannak komplex feladatok ahol ez elkerülhetetlen, ám bizonyos alap programozási kompetenciák mérésére elegendő előre definiált tesztesetekre automatikus tesztelést végezni. A felhasználók megkapják a bemenet és kimenet specifikációját - ennek maradéktalanul meg kell felelni- , a beadott megoldásokat a fordítást követően (amennyiben van fordítás) tesztelni kell. Jól elkészített tesztesetekkel lehetőség van szofisztikált pontozási rendszert kialakítani. Erre nyújt teljes körű támogatást a Moodle Virtual Programming Lab bővítménye. A bővítmény számos kényelmi szolgáltatást nyújt mind a diákok, mind az oktatók számára.

  • A tanulók egy böngészőbe ágyazott egyszerűsített fejlesztő eszközzel írhatják a kódjaikat.

  • A megírt programokat futtathatják is a böngészőből, ezzel azonnal visszacsatolást kapnak az eredményről.

  • Tesztesetekkel ellenőrizhetők a programok helyes működése.

  • Lehetőséget biztosít a beadott megoldások közötti hasonlóságok keresésére, kiszűrve ezzel az esetleges "csalásokat".

  • Lehetőséget biztosít a szerkesztési folyamatok korlátozására. Letiltható a külső források beillesztése, megakadályozva ezzel a nem megengedett eszközök használatát.

Az eszköz tetszőlegesen konfigurálható bármilyen programozási eszközhöz. Ám alapértelmezésben az alábbi programozási nyelveket támogatja:

  • Ada

  • C

  • C++

  • C#

  • Fortran

  • Haskell

  • Java

  • Matlab/Octave

  • Pascal

  • Perl

  • PHP

  • Prolog

  • Python

  • Ruby

  • Scheme

  • SQL

  • VHDL

A Virtual Programming Lab az Universidad de Las Palmas de Gran Canaria egyetemen oldaláról http://vpl.dis.ulpgc.es/ tölthető le. A program fejlesztése folyamatos jelenleg a 3.0 verzió érhető el, mely már a legújabb Moodle verziókkal is kompatibilis. A bővítmény GNU/GPL licensz hatálya alatt érhető el. Az eszközhöz jelenleg nem elérhető magyar nyelvi támogatás, ám az informatikát tanulókkal szemben ma már elvárt az angol nyelv ismerete.

11.1. ábra - Program futtatása a Virtual Programming Lab bővítmény segítségével

Program futtatása a Virtual Programming Lab bővítmény segítségével


Installáció és konfiguráció

A bővítmény telepítése nem bonyolultabb, mint bármilyen egyéb Moodle bővítmény telepítése. Az egyetlen eltérés, hogy az eszköz működéséhez a szerverre telepíteni kell egy jail (Java Archive Internet Launcher) alapú futtató rendszert, mely szintén a weboldalról tölthető le. Ennek az eszköznek a feladata az elkészített programok fordítása, végrehajtása és tesztelése. A telepítés és konfiguráció részletes leírását, valamint a működéséhez szükséges követelményeket megtalálhatjuk a weboldalon, ennek bemutatása túlmutat a jegyzet keretein. Execution Server 2.0 telepítése

Tanároknak

A megfelelően konfigurált futtató rendszerrel az eszköz használata már nagyon egyszerű (11.1. ábra - Program futtatása a Virtual Programming Lab bővítmény segítségével). A Virtual Programming Lab bővítmény számos - már említett - funkciót tartalmaz, melyek részletes bemutatása túlmutat a jegyzet keretein. A következő részben csak az általunk legfontosabbnak tartott néhány lehetőséget mutatjuk be.

Az új feladat létrehozásakor a szokásos alapadatokon túl megadhatjuk, hogy a feladat egyéni vagy csoport munka, milyen idő intervallumban oldható meg a feladat, esetleges jelszót is rendelhetünk a feladathoz, valamint az eredmény meghatározásáról is nyilatkozhatunk (11.2. ábra - Feladat felvétele). Lehetőségünk van a beadás helyét hálózati szinten korlátozni. Ez a funkció nagyon hasznos lehet, ha az eszközt a tantermi mérés kiegészítésére használjuk, hiszen ezzel elkerülhetjük, hogy a termen kívülről valamelyik részvevő helyett más küldje be a megoldást.

11.2. ábra - Feladat felvétele

Feladat felvétele


A feladat létrehozását követően a Settings menüpont segít bennünket a további beállításokban (11.3. ábra - Beállítások).

11.3. ábra - Beállítások

Beállítások


  • Itt adhatjuk meg a fordítás és a futtatás paramétereit. Alapértelmezésben előre definiált végrehajtási környezetek közül választhatunk, ezek módosítása már haladóbb ismereteket igényel.

  • Definiálhatunk teszteseteket

  • Amennyiben nem találunk megfelelő végrehajtási környezetet a haladó beállításokkal tetszőleges új környezetet definiálhatunk. Ezen szkriptek bemutatása túlmutat a jegyzet keretein.

Tesztesetek definiálása

A tesztesetek definiáláshoz minden feladathoz a vpl_evaluate.cases fájlt kell használni. Erre a VPL felületén van lehetőségünk (11.4. ábra - A vpl_evaluate.cases állomány szerkesztése a böngészőben).

11.4. ábra - A vpl_evaluate.cases állomány szerkesztése a böngészőben

A vpl_evaluate.cases állomány szerkesztése a böngészőben


A vpl_evaluate.cases fájlban az egyes teszteseteket az alábbi rekordszerkezet segítségével adhatjuk meg:

  • case: A teszteset rövid leírása, a teszteset definiálásának kezdő utasítása.

  • input: A bemenet definíciója, mely több soros lehet. Hatása a következő utasításig terjed.

  • output: A kimenet definíciója, mely több soros lehet. Hatása a következő utasításig terjed. Három típusa lehet:

    • number: Számok (egész és lebegőpontos) szekvenciája. Csak a számok kerülnek ellenőrzésre, minden egyéb szöveget figyelmen kívül hagy.

    • text: Idézőjelek nélküli szöveg, melyben szereplő szavak lesznek összehasonlítva a kimenettel.

    • exact text:Idézőjelekkel határolt szöveg: A teljes szöveg pontos egyezését vizsgálja.

  • grade reduction = [érték|százalék%]: Itt adhatjuk meg, hogy a sikertelen tesztesetek hogyan befolyásolják az eredményt. Alapértelmezésben a tanuló pontszáma a maximális pontszám/tesztesetek száma hányados értékével csökken minden sikertelen teszt esetén. (100 pont és 5 teszteset esetén minden elbukott teszt 20 ponttal csökkenti a hallgató eredményét.)

Az állományban legalább egy, de tetszőlegesen sok ilyen rekord szerepelhet.

Példa a másodfokú egyenlet megoldóképletét implementáló program tesztelésére:

case = Két valós gyök (egész)
input = 10
20
-30
output = -3.0 1.0
output = 1.0 -3.0

case = Két valós gyök (nem egész)
input = 3
-5
-2
output = 2.0 0.33333
output = 0.33333 2.0

case = Egy valós gyök
input = 2
4
2
output = -1.0
output = -1.0 -1.0

case = Komplex gyök
input = 1
1
1

output = Hiba