TIE120 välikokeen (20.3.2002) arvosteluperusteita ja mallivastauksia

Tässä dokumentissa kerron yleisistä arvosteluperiaatteista, joita parhaani mukaan sovelsin tehtäviä tarkistaessani. Kustakin tehtävästä on kerrottu erikseen ja lopussa on listattu muutamia mallivastauksia.

Tehtävä 3

Ideana oli ymmärtää, että metodit tulosta ja tutki ovat toimintaidealtaan samanlaisia. Molemmat lukevat tiedostoa rivi kerrallaan ja antavat luetun rivin parametrina "alemman" tason metodille. tulosta_rivi -metodin puolestaan piti käsitellä parametrina saamaansa riviä sarake kerrallaan ja asettaa sarakkeen leveys cTabs -luokan avulla.

Yleinen arvosteluperiaatteeni oli jakaa pisteet siten, että tutki ja tulosta -metodien ideasta sai 3 pistettä ja tulosta_rivi -metodin ideasta 2 pistettä. Kuudennen pisteen sai, jos kirjoitettu C++ koodi oli hyvää. ("Hyvän" koodin ominaisuuksia oli mielestäni mm. ei paljoa syntaksivirheitä, sisennetty selkeästi, muistettu esitellä ja tarvittaessa alustaa muuttujat.) Muutaman puolipisteen tai aaltosulun puuttumisesta en vähentänyt.

Täydellisesti yllä kuvattuja periaatteita oli vaikea noudattaa, sillä vastaukset olivat hyvinkin erilaisia. Ne olivat kuitenkin suuntaa antavia ja pääpaino oli siis idean ymmärtämisessä ei koodin kirjoittamisessa.

Tähän tehtävään vastasi yhteensä 129 opiskelijaa. Tehtävä osattiin keskimääräisesti erittäin hyvin, mikä on havaittavissa myös alla esitetystä pisteiden jakaumasta. Jaoin pistemäärät kuuteen luokkaan, joista alin tarkoittaa pistemääriä 0 - 0.75 (1-), seuraava pistemääriä 1 - 1.75 (2-) jne.

Seuraavassa olen listannut muutamia yleisiä virheitä, sekä paljonko niistä sakotettiin.

Tehtävä 5 a)

Ideana oli keksiä, että numeerisuus on tutkittava tiedoston kaiklta riveiltä sarake sarakkeelta. Sarake on numeerinen, jos (ja vain jos) yksikään sen sanoista ei ole muu kuin numero. Numeerisuuden tutkiminen on tehtävä ennen kuin rivejä aletaan tulostaa tulosta_rivi-metodilla ja tieto numeerisuudesta on tallennettava johonkin, kätevimmin esimerkiksi boolean- tai int-taulukkoon.

Vesan mallivastauksessa numeerisuuden tutkiminen on hoidettu cTabs-luokan lisaa-metodissa ja cTabs-luokkaan on lisätty taulukko, joka kertoo onko kukin sarake numeerinen vai ei. Numeerisuus on vastaavanalainen sarakkeen ominaisuus kuin leveyskin, joten on luonnollista sijoittaa se cTabs-luokkaan. Numeerisuuden tutkiminen voidaan myös hoitaa ennen tulostusta tulosta-metodissa (ks. Janin mallivastaus). Tämä ratkaisu on hieman kömpelö ja "epätaloudellinen" sillä tiedostoa joudutaan lukemaan kahteen kertaan (ongelma jos esim. tiedostoa luetaan hitaan verkon yli jostain kaukaa). Vaarana on myös tiedoston toisen avauksen epäonnistuminen. Jos esimerkiksi tiedostoon on pääsy useammalla kuin yhdellä käyttäjällä, niin joku voi ehtiä ensimmäisen tiedoston avauksen jälkeen lukitsemaan tiedoston, jolloin toinen avaus ei onnistukaan. Tässä ratkaisussa ei alkuperäisiä luokkia jouduta muuttamaan lainkaan.

Arvosteluperiaatteina oli se, että yllä kuvatun idean keksiminen = 2 pistettä ja toteutus 2 pistettä. Jos numeerisuus tutkittu tulosta_rivi-metodissa max. 1 piste.

Tehtävä 5 b)

Arvosteluperusteina seuraava pisteiden jako:

Tämä tehtävä näytti olevan selkeästi vaikeampi, sekä siihen vastanneiden lukumäärän (33) perusteella että vastanneiden tulosten perusteella. Tehtävän b)-osio osattiin yleisesti ottaen hyvin, mutta a)-osio huomattavasti heikommin. Pisteiden jakauma (luokkarajat samat kuin 3. tehtävän jakaumassa) on esitetty alla.

Seuraavassa olen listannut muutamia yleisiä virheitä sekä paljonko niistä sakotettiin (myös 3.tehtävän yhteydessä listatut virheet vähensivät pisteitä, mutta ei usein ihan niin paljon kuin 3:ssa vaan soveltuvin osin).

Mallivastauksia välikokeen tehtäviin 3 ja 5.

Kurssin sivulle
Jani Korhonen
Päivitetty viimeksi 3.4.2002