Project VISNUE-TWEE
Het oefeningensysteem/2

A. Bultheel

Oktober 2003





http://nalag.cs.kuleuven.be/research/ALpubs/AL20.abs.shtml

Samenvatting:

We geven een technische beschrijving van een aanpassing van het vorige oefeningensysteem, in het project VISNUE-TWEE. Het genereert vanuit een aangepast LATEXbestand een webpagina waarin de opgave wordt beschreven, en een webformulier waar de antwoorden moeten ingevuld worden. De oefening kan aldus on-line opgelost worden. De antwoorden van de ingevulde formulieren worden elektronisch verstuurd naar de student als hij/zij daarom vraagt. De antwoorden worden in elk geval in het systeem opgeslagen en verwerkt zodat ze op een overzichtelijke manier kunnen bekeken worden door het onderwijsteam zodat er een eventuele terugkoppeling mogelijk is.

Inleiding.

Het oefeningensysteem zoals beschreven in @L19 had een aantal problemen waardoor het systeem omwille van de webbeveiliging die op de server van kracht waren tot onwerkbare heksentoeren moest komen om de beveiliging te omzeilen.

Daarom werd besloten een aanpassing te maken die gebruik maakt van een MySQL gegevensbank. Overigens blijft het systeem naar het gebruik toe dezelfde functionaliteit behouden. Deze tekst moet vooral dienen om het gebruik te beschrijven en de opbouw van het geheel zodat herinstallatie of aanpassingen maken aan het systeem mogelijk wordt.

Structuur van het systeem

Elke opgave wordt beschreven in een oefz<nr>.dat bestand. Dit is een LATEX bestand met wat extra informatie voor het aanmaken van een antwoordformulier (zie verder).

Een perl-script maak.pl zal een map oefz<nr> aanmaken als die nog niet bestaat en het .dat bestand daarnaartoe kopiëren. Daarwordt dan drie versies aangemaakt: een .pdf formaat, een .html formaat (in een submap) en eventueel een antwoordformulier in de vorm van een .inc bestand.

Voor het gebruik is er een login.php bestand dat de begeleider van de oefeningen toelaat voor een bepaalde reeks en een bepaalde oefening de gegevensbank toegankelijk te maken voor de studenten.

De studenten kunnen, na het opgeven van hun identiteit en eventueel een email-adres en na het kiezen van hun reeks en de gewenste opgave, het antwoordformulier krijgen door het bestand antwoord.php in een browser te openen. Na het invullen van het formulier, kunnen ze hun antwoorden indienen waarna ze weggeschreven worden in de gegevensbank, en de antwoorden ook verstuurd worden naar het opgegeven email-adres. Na het indienen van de antwoorden kan de begeleider de gegevensbank weer afsluiten met het login.php script.

De ingediende antwoorden zijn dan per reeks en per oefenzitting te bekijken door het php script browse.php te openen in een browser.

Zowel login.php als browse.php zijn met een paswoord beveiligd.

Installatie.

Algemeen.

De bestanden nodig om het systeem te gebruiken, zijn verpakt in een zipbestand oef.zip. Dit moet eerst uitgepakt worden.

Het uitpakken van oef.zip resulteert in een map oef die vanaf nu de hoofdmap van het oefenzittingensysteem genoemd wordt. In deze map vindt u volgende bestanden:

In deze map bevinden zich ook een submap:

Voorbereidingen na het uitpakken.

Eerst moet het systeem op de hoogte worden gebracht van een aantal gegevens over waar wat te vinden is. Er is een bestand loadvars.inc in de hoofdmap waarin informatie staat over de beveiligde map waar informatie voor php is te vinden ($padhttpd) en het lokale pad ($padroot) waar de opgaven zullen aangemaakt worden. Bijvoorbeeld

<?php
//variabelen voor de php
$padhttpd="/cw/wwwserver/....   ...../httpd";
$padroot="../oef";
?>
De httpd map moet aangemaakt worden door de systeembeheerder.

In de map $padhttpd staan een aantal bestanden met gevoelige informatie die wel voor php beschikbaar is, maar niet door de buitenwereld kan bekeken worden.

Die bestanden zijn:

De opgaven

De mappen oefz<nr>

Alle gegevens over een oefenzitting zitten opgeslagen in een submap van de hoofdmap onder een naam oefz<nr>. Daarin zal minimaal een bestand oefz<nr>.dat zitten waarin de opgave beschreven is. Eventueel zijn daarin ook submappen maple en/of matlab te vinden waarin informatie zit over programma's die in de oefenzitting moeten gebruikt worden.

Als er een bestand oefz<nr>.dat in de hoofdmap aanwezig is zonder dat er een submap oefz<nr> bestaat, dan zal deze aangemaakt worden bij het uitvoeren van maak.pl.

Het bestand oefzlijst.txt

In de hoofdmap moet ook een bestand oefzlijst.txt aangepast of aangemaakt worden indien nodig. Voor elke oefenzitting met antwoordformulier is er in dit bestand 1 regel met het volgende formaat: De verschillende onderdelen van een dergelijke regel volgen elkaar direct op, zonder extra witruimte. Deze informatie wordt gebruikt door form.inc die in antwoord.php ingelast wordt.

De bestanden oefz<nr>.dat

De oefz<nr>.dat bestanden geven alle informatie over een oefenzitting weer. Ze zijn voor het overgrote deel een beschrijving van de opgave in LATEX.

De informatie over waar er welke invulvakjes voor het antwoordformulier moeten gemaakt worden staat in een LATEX omgeving \begin{form} ... \end{form} en wordt beschreven in html.

Sommige informatie die men wel in de opgave, maar niet in het antwoordformulier wil hebben (zoals een link naar het antwoordformulier, of een link naar de opgave) kan ingesloten worden in een LATEX omgeving \begin{noform} ... \end{noform}.

Het effect van maak.pl:

Het perl script maak.pl zal volgende operaties uitvoeren:

  1. kopiëren:
    Het bestand oefz<nr>.dat overbrengen naar de submap oefz<nr>.

  2. aanmaken oefz<nr>.txt:
    Uit dit .dat bestand worden dan alle korte beschrijvingen van de te geven antwoorden in het antwoordformulier (als dit er is) geselecteerd en in een bestand oefz<nr>.txt geplaatst.

  3. aanmaken van html versie:
    Er wordt een kopie gemaakt van oefz<nr>.dat naar oefz<nr>.tex waarbij de volgende operaties worden uitgevoer: Dan wordt met LATEX2html dit vertaald in de subsubmap oefz<nr> van de submap oefz<nr>. Daarin is oefz<nr>.html of index.html het aan te spreken bestand om de opgave van de oefening te bekijken. Bij het aanmaken wordt gebruik gemaakt van de LATEX2html configuratie die gedefineerd is in het bestand .latex2html-init van de hoofdmap. Voor het aanmaken van oefz<nr> wordt dit tijdelijk gekopieerd naar die submap.

  4. aanmaken van pdf versie:
    Vervolgens wordt een bestand oefz<nr>.pdf aangemaakt met pdflatex. De relatieve links naar ../matlab/... of ../maple/... worden vervangen door absolute links.

  5. aanmaken van het antwoordformulier oefz<nr>.inc:
    Tenslotte wordt het antwoordformulier aangemaakt als oefz<nr>.inc. Dit gebeurt door

Hoe de bestanden oefz<nr>.dat aanmaken?

Uitvoeren van maak.pl

Nadat de .dat bestanden in de hoofdmap gezet zijn zal bij het uitvoeren van het perlscript maak.pl, voor elke oefz<nr>.dat de oefening aangemaakt worden. Het systeem is nu klaar voor gebruik gedurende 1 academiejaar.

Gebruik van het systeem gedurende het academiejaar.

Een oefensessie voorbereiden.

De verantwoordelijke voor de oefensessie opent met een browser het bestand login.php in de hoofdmap en geeft aan welke sessie (oefening nummer en reeks) moet opengezet worden. Hij moet daarvoor de loginnaam en het loginpaswoord kennen.

Op het einde van de oefenzitting kan de sessie weer afgesloten worden op dezelfde manier.

Bij het openzetten wordt voor de betrokken sessie een 1 geplaatst in het veld open van de tabel sessies_nw van de gegevensbank. De drie velden in die tabel zijn oefz, reeks, en open.

Men kan die tabel aanmaken door een tabel oefz en een tabel reeks te maken waarin telkens slechts 1 veld aanwezig is waarin de nummers van de oefenzittingen, respectievelijk de reeksen zijn ingevuld. De tabel sessies_nw wordt dan aangemaakt met een MySQL commando

create table sessies_nw select oefz,reeks from reeks inner join oefz on 1
Nadien kan men een veld open bijvoegen in sessies_nw dat de default waarde 0 heeft.

Een oefensessie vanuit het standpunt van de student.

Algemeen.

De student opent de pagina antwoord.php in een bladerprogramma.
Hij geeft algemene informatie betreffende zichzelf en de oefenzitting, nl. zijn naam, voornaam, reeks, de oefenzitting en eventueel zijn emailadres. Vervolgens bevestigt hij dit door op de knop ``verder'' te klikken. Dan bevestigt hij zijn emailadres in een popup venster en krijgt nu het invulformulier voor de gekozen oefenzitting te zien.
De student maakt nu de oefeningen en vult de gevraagde antwoorden in in het formulier. Hij verstuurt zijn gegevens en krijgt een emailbericht met zijn eigen antwoorden indien hij emailbevestiging wenst. De oefensessie is afgelopen voor deze student.

Samenwerkende studenten.

Meerdere studenten die samenwerken kunnen hun namen en voornamen invullen in hetzelfde vak als voor 1 student; zij zullen waarschijnlijk spaties, ampersands, voegwoorden, enz. gebruiken om hun namen te scheiden. Hiermee wordt rekening gehouden bij het verwerken van de gegevens.
Er is slechts 1 emailadres mogelijk.

Afwijkende paden tijdens het invullen.

De gegevensbank

De gegevensbank bestaat uit slechts 2 tabellen:
  1. sessies_nw een tabel met velden
    1. oefz: het nummer van de oefenzitting (met antwoordformulier)
    2. reeks: de nummers van de reeksen
    3. open: bevat de waarde 1 als de sessie open is en 0 anders
  2. oef_ade_result, een tabel met de volgende velden
    1. id: een uniek identificatienummer
    2. naam: naam van de student
    3. voornaam: voonaam van de student
    4. reeks: het reeksnummer
    5. oefz: het nummer van de oefenzitting
    6. email: het email adres van de student
    7. jaar: het academiejaar (bv. 0304)
    8. opgave: het antwoord van de student in html met korte teksten voor elk antwoord tussengelast.

De gegevensbank kan door de rootlogin, mits ingeven van het bijhorende paswoord geraadpleegd worden via

https://naam_db_server/phpmyadmin/
Op dit moment is naam_db_server op het departement computerwetenschappen olympia.

Deze is eveneens bereikbaar door in te loggen op naam_db_server en het volgende commando uit te voeren:

mysql -u rootlogin -h localhoost -p

Nuttige links

www.mysql.com/documentation/
www.php.net
www.rexswain.com/perl5.html


© Adhemar Bultheel
2003-10-28