T-106.1208 Ohjelmoinnin perusteet Y (Python) (5 op)

Suoritusvaatimukset



Osasuoritukset ja arvosana 

Kurssilla on kaksi pakollista osasuoritusta, harjoitustehtävät ja tentti. Molemmat osasuoritukset arvostellaan asteikolla 0-5. Jos vähintään toisen osasuorituksen arvosana on 0, kurssin kokonaisarvosanaksi tulee 0 (hylätty). Muussa tapauksessa kurssin kokonaisarvosanaksi tulee harjoitustehtäväarvosanan ja tenttiarvosanan keskiarvo. Keskiarvon mahdolliset puolet numerot pyöristetään ylöspäin.

 

Tentistä ja tenttivaatimuksista

Muista ilmoittautua tenttiin viimeistään viikko ennen tenttiä! Tämä on välttämätöntä, jotta tenttijöille osattaisiin varata tilaa tarpeellinen määrä. Tenttiin ilmoittaudutaan WebOodissa. Kesätentin ilmoittautumisaika päättyy jo aikaisemmin, todennäköisesti noin 11 päivää ennen tenttiä!

 

Tenttitehtävät ovat pääosin ohjelmointitehtäviä, joissa pitää joko koodata ohjelmia (käsin paperille) tai selittää valmiiksi annetuista ohjelmista, miten  ne toimivat tai mitä ne tulostavat. Jos tentissä on essee-tyyppisiä tehtäviä tai muita ohjelmakoodiin suoraan liittymättömiä selitystehtäviä (esimerkiksi käsitteiden selitystä), niiden osuus tentin maksimipistemäärästä on korkeintaan 20 %. Läheskään kaikissa tenteissä ei ole lainkaan tällaisia essee- tai selitystehtäviä.

 

Kaikki opetusmonisteessa kerrotut asiat kuuluvat tenttivaatimuksiin, paitsi seuraavat asiat:

  • Tulostuksen muotoilu (tenttitehtävissä tulostusta ei tarvitse muotoilla).
  • Monikko
  • Sanakirja
  • Listoja käsittelevistä funktioista ja metodeista seuraavia ei tarvitse osata ulkoa (jos niitä tarvitaan, ne on annettu tehtävänannossa): index, insert, remove, sort ja reverse. Myöskään sellaisia Pythonin valmiita listoja käsitteleviä funktioita ja metodeita ei tarvitse osata, joita ei ole esitelty lainkaan opetusmonisteessa.
  • Merkkijonoja käsittelevistä funktioista ja metodeista seuraavia ei tarvitse osata ulkoa (jos niitä tarvitaan, ne on annettu tehtävänannossa): index, lower, upper ja strip. Myöskään sellaisia Pythonin valmiita merkkijonoja käsitteleviä funktioita ja metodeita ei tarvitse osata, joita ei ole esitelty lainkaan opetusmonisteessa. 

 

Kevään ja kesän 2010 kurssilaisten on syytä perehtyä kevään 2010 kurssin Noppa-sivulla esitettyihin tenttivaatimuksiin. (Ks. muu materiaali -sivulla arkoistoidut vuoden 2010 kurssin Noppa-sivut.)

 

Tentissä on yksi olio-ohjelmointitehtävä, joka vastaa vaativuustasoltaan yhteensä harjoitustehtäväkierroksen 9 tehtäviä 2 ja 3. (Kirjoita yksinkertainen luokka ja pääohjelma, joka luo luokan olioita ja kutsuu niille luokan metodeita.) Tämän tehtävän pistemäärä on 25 prosenttia tentin maksimipistemäärästä. Käytännössä se tarkoitttaa sitä, että tentistä voi päästä läpi, mutta on vaikea saada arvosanaa 3 tai parempaa, jos ei saa lainkaan pisteitä olio-ohjelmointitehtävästä. Olio-ohjelmoinnilla tarkoitetaan tässä opetusmonisteen luvussa 7 esitettyjä asioita. Varsinaisen olio-ohjelmointitehtävän lisäksi tentissä voi olla myös tehtäviä, joissa joutuu käyttämään esimerkiksi metodeita listojen, merkkijonojen ja tiedostojen käsittelyyn.

 

Koodin ymmärtämistä testaavat tehtävät voivat olla esimerkiksi seuraavan tyyppisiä:

  • Mitä tehtävänannossa annettu ohjelma tulostaa?
  • Mikä arvo annetussa ohjelmassa käytetyllä muuttujalla/muuttujilla on oltava, jotta ohjelma tulostaisi halutun rivin?
  • Mitä annettu ohjelma tai funktio tekee?
  • Mitä virheitä annetussa ohjelmassa on? 


Koodin kirjoittamista vaativissa tehtävissä voidaan pyytää esimerkiksi

  • Kirjoita ohjelma, joka tekee vaaditun asian.
  • Kirjoita funktio, joka saa parametrit tehtävänannon mukaisesti ja palauttaa vaaditun arvon.
  • Olkoon valmiina funktio X, jonka parametrit ja paluuarvo on kerrottu tehtävässä (itse funktion koodia ei ole välttämättä annettu). Kirjoita ohjelma, joka tekee vaaditun asian käyttämällä hyväksi funktiota X.

Näiden tehtävien ratkaisuja kirjoittaessa voi tarvita esimerkiksi seuraavia asioita:

  • If-käsky
  • Toistokäsky
  • Listojen tai merkkijonojen käsittely
  • Funktion kirjoittaminen (sisältää parametrien ja paluuarvojen käytön)
  • Tiedostosta lukeminen tai tiedostoon kirjoittaminen
  • Poikkeusten käsittely try-except-rakenteen avulla.


Lisäksi tentissä on aina yksi olio-ohjelmointitehtävä, josta on kerrottu tarkemmin ylempänä.

 

Koska sisennyksillä on Python-koodissa tärkeä merkitys, tenttivastauksissa kirjoitettu koodi on sisennettävä selvästi ja tarkasti. Jos sisennyksessä on virheitä tai epäselvyyksiä, niin se vähentää ratkaisusta saatavia pisteitä. Käytä kahden ruudun levyisiä sisennyksiä! 

Harjoitustehtävät 

Kurssin harjoitustehtävät on jaettu kierroksiin. Jokaisella kierroksella on oma viimeinen palautusaikansa. Kierroksia on yhteensä 9, joista 8 ensimmäistä on pakollisia. Pakollisuus tarkoittaa sitä, että jokaisesta kierroksesta on saatava vähintään kierrokselle määritelty minimipistemäärä, jotta voisi saada hyväksytyn harjoitustehtäväarvosanan. Jos saa jokaisesta pakollisesta kierroksesta minimipistemäärän, saa harjoitustehtävistä arvosanan 1. Keräämällä enemmän pisteitä harjoitustehtävistä voi saada paremman harjoitustehtäväarvosanan. Lisäksi voi saada lisäpisteitä täyttämällä toukokuussa julkaistavan kurssin palautekyselyn.

 

Jos opiskelija haluaa harjoitustehtävistä arvosanan 3, 4 tai 5, hänen on saatava minimipistemäärä myös vapaaehtoiselta kierrokselta 9. (Kierrosten minimipistemäärät yhteensä eivät riitä arvosanaan 3, mutta arvosanaa 3 tai parempaa ei voi saada ilman kierroksen 9 minimipisteitä.)

 

Opiskelijalta, joka on osallistunut tehtäväkierroksen aihetta käsitelleille luennoille mutta jolla ei ennen kurssin alkua kokemusta ohjelmoinnista, oletetaan kuluvan yhden kierroksen tehtävien tekemiseen keskimäärin 8-9 tuntia. Yhden kierroksen maksimipistemäärä on 500-700 pistettä. Kierroksen minimipistemäärä on yleensä vähän yli puolet kierroksen tehtävien maksimipistemäärästä.

 

Harjoitustehtävät palautetaan automaattiselle tarkastajalle, Goblinille, joka tarkistaa ja antaa pisteet ratkaisusta. Kurssihenkilökunta käy kuitenkin osan palautetuista ratkaisuista käsin läpi myöhemmin. Tällöin Goblinin antamaa pistemäärää voidaan laskea, jos palautettu ohjelma on kirjoitettu huonolla ohjelmointityylillä tai esimerkiksi ohjelma ei ratkaise tehtävää tehtävänannossa pyydetyllä tavalla.

 

Harjoitutustehtäväarvosanojen pisterajat

 

Harjoitustehtäväarvosana määräytyy harjoitustehtävistä yhteensä saatujen pisteiden perusteella alla olevan taulukon mukaisesti. Lisäksi arvosanaan 1 vaaditaan, että jokaiselta pakolliselta kierrokselta 1-8 on vähintään minimipisteet, ja arvosanoihin 3-5 vaaditaan lisäksi minimipisteet kierroksen 9 tehtävistä. Rästitehtävistä saatuja pisteitä ei lasketaan suoraan yhteen muiden pisteiden kanssa (katso rästitehtävien pisteistä tarkemmin kohdasta rästitehtävät).

 

Arvosana  pisteet
0 - 2649
2650 - 3249
3250 - 3849
3850 - 4549
4550 - 5299
5300 

 

 

Toukokuussa avattavan palautekyselyn palauttamisesta voi lisäksi saada 200 harjoitustehtäväpistettä, jotka otetaan huomioon harjoitustehtäväarvosanaa määrättäessä.

Rästitehtävät

Jos opiskelija ei ole saanut tarpeeksi pisteitä pakollisilta kierroksilta, hän voi korvata korkeintaan kolmen kierroksen harjoitustehtävät tekemällä rästikierroksen tehtäviä. Rästikierroksen tehtävät julkaistaan 31.3.2011. Jotta opiskelija saisi pakollisen kierroksen suoritettua, hänen on tehtävä tätä kierrosta vastaava rästitehtävä ja saatava siitä tarpeeksi pisteitä. 

 

Rästitehtävillä ei voi parantaa hyväksyttyä arvosanaa, vaan sillä voi vain saada minimipistemäärän kierrokselta (poikkeus: rästitehtävällä voi myös saavuttaa vapaaehtoisen kierroksen 9 minimipistemäärän). Jos opiskelija korvaa jonkun pakollisen kierroksen rästitehtävällä, ei kierrokselta alunperin saatuja pisteitä ja rästitehtävästä saatuja pisteitä lasketa yhteen, vaan opiskelija saa kierroksesta ko. kierroksen minimipistemäärän. (Edellytyksenä kuitenkin on siis se, että rästitehtävästä on saatu tarpeeksi pisteitä.)

 

Osasuoritusten voimassaoloaika

Keväällä 2011 hyväksytysti tehdyt harjoitustustehtävät ovat voimassa vielä ensimmäisessä kevätlukukaudella 2012 järjestettävässä kurssin tentissä. Kesällä 2011 hyväksytysti tehdyt harjoitustehtävät ovat voimassa vielä molemmissa kevätlukukaudella 2012 järjestettävissä kurssin tenteissä. Tarkat tenttiajat on ilmoitettu kurssin Noppa-sivulla (etusivulla). 

 

Vuonna 2010 tai aikaisemmin hyväksytysti tehdyt harjoitustehtävät eivät ole enää voimassa.

 

Tämän kurssin osasuorituksia ei voi korvata TKK:n tai Aalto-yliopiston muiden ohjelmointikurssien osasuorituksilla. 

 

Yhteistyö ja prujaaminen

Harjoitustehtävien ratkaisujen kopiointi ei ole sallitua, kuten ei myöskään pisteiden hankkiminen yrittämällä harhauttaa automaattista tarkastusjärjestelmää hyväksymään tehtävänantoa täyttämätön ohjelma. Opiskelijoiden palauttamaia ohjelmia tutkitaan myös vilpin kannalta.

 

Harjoitustehtävien ratkaisuista saa keskustella muiden opiskelijoiden kanssa, mutta jokaisen on kirjoitettava oma ohjelmakoodinsa itsenäisesti. Luvattomasta pari- tai ryhmätyöskentelystä voi seurata koko  harjoitustehtäväsuorituksen hylkääminen, jolloin kaikki harjoitustehtävät on tehtävä uudelleen seuraavalla kurssikerralla. Lisäksi vilpistä seuraa tyypillisesti kirjallinen tiedote opiskelijan oman tutkinto-ohjelman kansliaan (tiedotetta säilytetään kansliassa opiskelijan tietojen yhteydessä opiskelijan valmistumiseen asti).


Pitkäaikaiset sairaudet, kertausharjoitukset ym.

Yleensä harjoitustehtäväkierrosten viimeiset palautusajat ovat ehdottomia. Luennoija voi kuitenkin myöntää poikkeuksia palautusaikoihin tai korvaavia tehtäviä painavista syistä. Tällaisia syitä ovat  esimerkiksi pitkäaikainen sairaus (parin päivän flunssaa ei vielä lasketa pitkäaikaiseksi), perheenjäsenen kuolema, äitiysloma, vaihto-opiskelu ulkomailla tai yli viikon kestävät kertausharjoitukset kurssin aikana. Tällaisista painavista syistä voidaan myös myöntää poikkeuksia esimerkiksi kurssin osasuoritusten voimassaoloaikoihin. Näissä tapauksissa on aina syytä kääntyä luennoijan puoleen, ja yleensä painavasta syystä on oltava kirjallinen todiste (esim. lääkärin kirjoittama sairauslomatodistus).

 

Tämän kurssin korvaaminen toisen yliopiston kurssilla

 Jos olet suorittanut vähintään 5 pisteen tai 3 opintoviikon ohjelmoinnin peruskurssin toisessa yliopistossa ja haluat korvata sillä tämän kurssin, menettele seuraavasti:

  • Hae korvaavuushakemuslomake oman tutkinto-ohjelmasi kansliasta.
  • Ota korvaavuushakemuslomake, mahdollisimman paljon tietoa suorittamasi kurssin sisällöstä sekä alkuperäinen todistus kurssin suorittamisesta (esimerkiksi virallinen Oodi-ote) ja tule niiden kanssa luennoijan vastaanotolle.
  • Luennoija tutustuu tuomaasi materiaaliin ja päättää niiden perusteella, suositteleeko hän kurssikorvaavuutta.
  • Jos luennoija päättää puolta korvaavuutta, palauta luennoijan allekirjoittama korvaavuushakemuslomake oman tutkinto-ohjelmasi kansliaan. Lopullinen päätös korvaavuudesta tehdään omassa tutkinto-ohjelmassasi, mutta useimmiten hakemus on hyväksytty, jos korvattavan kurssin opettaja puoltaa sitä.

Huomaa siis, että toisessa yliopistossa suoritettu kurssi ei korvaa automaattisesti tätä kurssia (vaikka kurssin opintopistemäärä olisi riittävä), vaan luennoija päättää tapauskohtaisesti, vastaako toisen kurssin vaatimustaso ja sisältö tarpeeksi hyvin tätä kurssia.

 

Useamman peruskurssin korvaaminen

Jos haluat korvata useamman ohjelmoinnin peruskurssin paketin (yhteensä esim. 10-20 op:tä) toisessa korkeakoulussa tai yliopistossa suoritetuilla opinnoilla, niin käy keskustelemassa asiasta ohjelmoinnin perusopetuksesta vastaavan professori Lauri Malmin vastaanotolla.