Topic outline

  • Kurssin suoritusvaatimuksissa on kerrottu: "Harjoitustehtävien ratkaisuista saa keskustella muiden opiskelijoiden kanssa, mutta jokaisen on kirjoitettava oma ohjelmakoodinsa itsenäisesti."

    Koska aikaisempina vuosina jotkut opiskelijat ovat kertoneet, että heidän on vaikea tietää, missä menee sallitun ja kurssilla kielletyn yhteistyön raja, on tähän koottu muutamia esimerkkejä siitä, mikä on kurssilla sallitua ja mikä kiellettyä.

    Sallittua on

    • Käyttää kurssin oppimateriaalissa, luentokalvoissa ja MyCourses-sivulla mainitussa kurssikirjassa annettua ohjelmakoodia apuna harjoitustehtävien ratkaisuja kirjoitettaessa.
    • Keskustella kaverin kanssa laadittavasta ohjelmasta periaatteellisella tasolla seuraavaan tyyliin:
      • A: Ohjelmassa tarvitaan varmaan toistokäsky, joka käy listan läpi ja tarkistaa, että siinä ei ole yhtään nollaa.
      • B: Joo, ja sitten tarvitaan funktio, joka muuttaa parametrina annetussa listassa kaikki ykköset kakkosiksi.
      • A: Ihan ensin täytyy kuitenkin luoda lista ja alustaa sen kaikki alkiot nolliksi.
    • Ym. keskustelu on täysin OK niin kauan, kun pysytään periaatteellisella tasolla eikä sanota ääneen/kirjoiteta näkyviin niitä täsmällisiä Python-kielen käskyjä, jotka tekevät mainitut asiat. Keskustelu menee kuitenkin liian pitkälle, jos siinä käydään käytännössä läpi lähes jokainen rivi, joka ohjelmakoodiin tulee, vaikka pysyttäisiinkin sanallisen kuvauksen puolella eikä sanottaisi suoraan tarvittavia Python-käskyjä.
    • Antaa kaverille pari vinkkiä ohjelman kirjoittamiseen samaan tyyliin kuin edellisen kohdan keskustelussa on kuvattu. Vinkit eivät kuitenkaan saa olla niin kattavia, että ne käytännössä kuvaavat koko ohjelman alusta loppuun.
    • Katsoa kaverin koodia (sen jälkeen kun on saanut oman ratkaisunsa palautettua) ja kertoa siitä 2-3 kohdasta, mikä siinä on vikana ja miten sitä pitäisi muuttaa, jotta saisi ohjelman toimimaan. Jos kysymyksessä on pieni virhe yhdellä rivillä, voi esittää suoraan tarvittavan korjauksen Python-kielellä (esim. Tässä sinulla on i < 5, mutta siinä pitäisi olla i <= 5, koska... ).
    • Jos kuitenkin kysymys on suuremmasta kokonaisuudesta, pitää neuvojen pysyä periaatteellisella tasolla (esim. Tästä kohdasta sinulla puuttuu osa, joka tarkistaa, että listassa ei ole kahta yhtäsuurta alkiota.). Tätä koodin katsomista ja neuvomista ei saa kuitenkaan toistaa saman ohjelman kohdalla moneen kertaan niin, että lopuksi kaverin koodi on käytännössä lähes identtinen neuvojan koodin kanssa.
    • Jos tarvitset selvästi enemmän neuvontaa kuin mitä näiden ohjeiden perusteella on sallittu antaa kaverille, sinun pitää mennä harjoitusryhmään kysymään apua assistentilta.

    Kiellettyä on esimerkiksi

    • Etsiä netistä ohjelma, joka tekee juuri tehtävänannossa pyydetyn asian, ja käyttää tätä ohjelmaa apuna ratkaisua tehdessä. (Kannattaa muistaa, että myös kurssihenkilökunta osaa käyttää Googlea.) Sen sijaan on täysin sallittua etsiä netistä tietoa jostain ohjelmointiin tai Python-kieleen liittyvästä asiasta yleisesti.
    • Lähettää jollekin nettisivulle julkisesti muiden nähtäväksi valmis tai lähes valmis vastaus johonkin harjoitustehtävään ennen harjoitustehtäväkierroksen päättymistä. Tässä kannattaa huomata, että oletusarvoisesti useimmat nettisivut tekevät niille lähetetyistä koodinpätkistä aina julkisia, jollei käyttäjä itse rajoita näkyvyyttä. Tällöin ratkaisu saattaa löytyä helposti hakukoneilla ilman, että linkkiä edes julkaisee missään, ja muut voivat näin kopioida nettiin lähetetyn ratkaisun, vaikkei se olisikaan ollut lähettäjän alkuperäinen tarkoitus. Tällaista on tapahtunut kurssilla aikaisempina vuosina useaan kertaan.
    • Kirjoittaa ohjelma yhteistyössä kaverin kanssa niin, että yhdessä mietitään ohjelman sisältö rivi riviltä ja molemmat kirjoittavat ohjelmaansa käytännössä samat rivit (vaikkakin ehkä muuttujien nimissä ja kommenteissa on eroja).
    • Antaa kaverille neuvoja ratkaisun kirjoittamiseen niin paljon, että kaverin ohjelma sisältää käytännössä samat rivit kuin mitä auttajan ohjelmassa on (vaikkakin ehkä muuttujien nimissä ja kommenteissa on eroja).
    • Näyttää tehtävää vielä tekevälle kaverille valmis ratkaisu tai lähettää hänelle valmis ratkaisu malliksi, vaikka kaveri lupaisikin tehdä ohjelmasta ihan omanlaisensa version.