Aloita seuraavasti:
Jokaisella kurssilla tehtävät on ryhmitelty harjoituksiin (esimerkiksi CP), jotka koostuvat tehtävistä (esimerkiksi CP3b):
Kun olet kirjoittanut oikein toimivan ratkaisun johonkin tehtävään, pisteiden saamiseksi tulee vähintään tehdä seuraavat asiat:
Tehtävän ratkaisemiseen suosittelemme etenemään seuraavasti:
./grading. Sen pitäisi toimia hyvin ainakin tyypillisissä Linux- ja macOS-ympäristöissä../grading test. Komento yrittää kääntää koodisi ja ajaa joukon automaattisia testejä varmistaakseen, että ratkaisu on virheetön. Lue työkalun tuloste ja korjaa koodi tarvittaessa. Lisätietoja löytyy komennolla ./grading --help../grading benchmark, jotta saat paremman käsityksen sen nopeudesta (muista kuitenkin, että oma laitteistosi on todennäköisesti erilainen kuin arviointipalvelimen laitteisto).Muista, ettet ole sidottu käyttämään pelkästään tarjottuja työkaluja. Voit kirjoittaa myös omia apuohjelmia, jotka testaavat toteutustasi erilaisilla syötteillä, ja käyttää mitä tahansa kehitys- ja debuggaustyökaluja, joihin olet tottunut. Koska saman harjoituksen tehtävät liittyvät samaan ongelmaan, yhdestä tehtävästä kirjoitettua koodia voi usein hyödyntää myös muissa tehtävissä.
Jos sinulla ei ole sopivaa laitteistoa tai ohjelmistoa omalla koneellasi, voit usein yhdistää esimerkiksi yliopiston tarjoamiin Linux-koneisiin ssh:n kautta ja kehittää sekä testata koodia siellä. Vaihtoehtoisesti voit lähettää komennon etäsuoritettavaksi, kuten alla kuvataan.
Lisäämällä argumentin --remote mihin tahansa arviointityökalun komentoon, esimerkiksi ./grading test --remote, koodisi ja valitut testit lähetetään kurssin palvelimelle ajettavaksi. Komento suoritetaan siellä ja tuloste näytetään terminaalissasi, kun suoritus on valmis.
Kun käytät remote-valitsinta ensimmäistä kertaa, sinua pyydetään hakemaan API-avain tililtäsi ja kopioimaan se sopivaan asetustiedostoon. Helpoin tapa on tallentaa tiedosto ehdotettuun, järjestelmäkohtaiseen hakemistoon, jolloin se toimii automaattisesti kaikissa tehtävissä.
Tämä ominaisuus on tarkoitettu testaamiseen ja kokeiluihin. Komennon benchmark ajaminen etänä on erityisen hyödyllistä, koska se käyttää samaa laitteistoa kuin varsinaiset palautukset. Se ei kuitenkaan korvaa normaaleja palautuksia: kun olet tyytyväinen koodiisi, muista tehdä varsinainen palautus verkkokäyttöliittymän kautta saadaksesi pisteet.
Koodipohjat sisältävä zip-paketti sisältää myös joitakin testitapauksia, joiden määritykset löytyvät alihakemistosta tests. Kun ajat komennon ./grading test, skripti käyttää kaikkia näitä tiedostoja varmistaakseen, että koodisi toimii ainakin näillä syötteillä.
Lisäksi käytössä on joitakin salaisia testitapauksia, joita automaattinen arviointityökalu käyttää. Siksi ohjelmassasi voi olla virheitä, jotka eivät vielä näy paikallisesti ajettaessa. Ei kuitenkaan syytä huoleen: aina kun jokin salainen testi epäonnistuu, näet kyseisen testin määrittelyn. Voit jopa ladata testin, lisätä sen paikalliseen tests-hakemistoosi, jolloin ./grading test löytää sen, ja voit toistaa virheen paikallisesti. Voit myös valita komentoriviltä tarkasti, mikä testitapaus ajetaan.
Jos olet jo palauttanut jonkin ratkaisun ja keksit paremman version ennen määräaikaa, voit huoletta perua edellisen palautuksen (valitse “Jätä palautus huomiotta”) ja palauttaa paremman version. Älä kuitenkaan tee useita rinnakkaisia palautuksia ilman hyvää syytä (hyvä syy voi olla esimerkiksi jos haluat ymmärtää, miksi parannettu versio osoittautui hitaammaksi).
Jokaisella tehtävällä on määräaika, johon mennessä se on ratkaistava, jotta saat pisteitä. Ratkaisevaa on se ajankohta, jolloin lähdekoodi on ladattu automaattiseen arviointiin.
Jokaiselle tehtävälle on asetettu aikarajat ratkaisun suoritukselle; saamiesi pisteiden määrä riippuu siitä, kuinka nopeasti toteutuksesi ratkaisee ongelman annetuilla benchmark-syötteillä.
Jos noudatat ohjeita ja ratkaisusi on oikein, saat jo automaattisen arvioinnin jälkeen melko hyvän kuvan siitä, kuinka paljon pisteitä lopulta saat. Kurssihenkilökunta voi kuitenkin tarvittaessa säätää pisteitä; esimerkiksi lähes oikeasta ratkaisusta, jossa on pieniä virheitä joissakin erikoistapauksissa, voidaan vähentää yksi tai kaksi pistettä.
Uusintapalautuksista tai useista palautuksista ei rangaista. Uudelleenpalautus on aina turvallista; et voi menettää jo saamiasi pisteitä. Huomaa kuitenkin, että uusintapalautukset arvioidaan täsmälleen samalla tavalla kuin muutkin palautukset; erityisesti määräajan jälkeen tehty uusintapalautus ei voi saada täysiä pisteitä.