Topic outline

    • 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.

      Tentti ja siihen ilmoittautuminen

      Muista ilmoittautua tenttiin! Tentti-ilmoittautuminen on ehdottoman pakollista eikä tenttisaliin välttämättä pääse, jos ei ole ilmoittautunut ajoissa tenttiin. Ilmoittautumisaika päättyy viikko ennen tenttiä. Jos olet kuitenkin ilmoittautunut kesäkurssille 2019, niin olet samalla ilmoittautunut automaattisesti 12.8.2019 pidettävään tenttiin. Kaikkiin sen jälkeen tuleviin rästitentteihin pitää kuitenkin ilmoittautua erikseen.

      Elokuun tentin jälkeen kurssista järjestetään lukuvuoden 2019-2020 aikana neljä rästitenttiä, joissa kesällä 2019 hyväksytysti suoritetut harjoitustehtävät ovat voimassa. Tenttien tarkat ajat löytyvät esim. siten, että painat ensin tällä sivulla painiketta "Kurssiesite" ja sen jälkeen avautuvalla sivulla painiketta "Tulevat tentit" (jahka tenttijärjestys on julkaistu).

      Tenttivaatimuksista

      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.

      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ä materiaalit-sivulla olevan opetusmonisteen luvussa 7 eli A+-kierroksella 9 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ä! 

      Kurssin vanhoja tenttejä löytyy tenttiarkisto.fi:stä.

      Harjoitustehtävät

      Kurssin harjoitustehtävät on jaettu kierroksiin. Jokaisella kierroksella on oma viimeinen palautusaikansa. Kierroksia on yhteensä 9, joista 8 ensimmäistä tehtäväkierrosta 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 (katso tarkennus alempana). 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 kurssin lopussa julkaistavaan kurssipalautekyselyyn vastaamisesta saa 100 harjoitustehtäväpistettä.

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

      Harjoitustehtäväarvosana määräytyy harjoitustehtävistä saadun yhteispistemäärän perusteella seuraavan taulukon mukaisesti, jos yllä kerrotut minimipistevaatimukset lisäksi täyttyvät. 

      Harjoitustehtäväarvosana
      Pisteet
      0
      0 - 2689
      12690 - 3449
      23450 - 4199
      34200 - 4999
      45000 - 5799
      55800 -


      Testitehtäviä lukuunottamatta tehtävät ovat ohjelmointitehtäviä, joissa opiskelija kirjoittaa itse pieniä Python-ohjelmia, jotka hän lähettää A+-järjestelmän arvosteltaviksi.

      Opiskelijalta, joka on opiskellut itsenäisesti tehtäväkierroksen aihepiiriä esimerkiksi opetusmonisteesta mutta jolla ei ennen kurssin alkua kokemusta ohjelmoinnista, oletetaan kuluvan yhden kierroksen tehtävien tekemiseen keskimäärin 7-8 tuntia. Kierroksen minimipistemäärä on yleensä vähän yli puolet harjoituskierroksen tehtävien maksimipistemäärästä.

      Jotta opiskelija saisi pakollisen harjoitustehtäväkierroksen hyväksytyksi, hänen on kerättävä kierroksen tehtävistä vähintään kierroksen minimipistemäärä.

      Kesäkurssilla EI ole tarjolla rästikierrosta, jolla varsinaisia tehtäväkierroksia voisi korvata.


      Osasuoritusten voimassaoloaika

      Kesällä 2019 hyväksytysti tehdyt harjoitustehtävät (harjoitustehtäväarvosana vähintään 1) ovat voimassa vielä syyslukukaudella 2019 ja kevätlukukaudella 2020 järjestettävissä tenteissä, mutta eivät enää sen jälkeen. Yksittäisen tehtävänkierroksen pisteet eivät ole voimassa enää kesäkurssin jälkeen.

      Tämän kurssin osasuorituksia ei voi korvata 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 palauttamia 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. Vilppiepäilyt tutkii Perustieteiden korkeakoulun opintoasiain päällikkö. Harjoitustehtävien ratkaisuja ei saa myöskään lähettää Internetin eri palveluihin, joista ne ovat kaikkien nähtävissä. Sallitun ja kielletyn yhteistyön rajoja on selvitetty tarkemmin alasivulla Sallittu ja kielletty yhteistyö.

      Pitkäaikaiset sairaudet, kertausharjoitukset ym.

      Yleensä harjoitustehtäväkierrosten viimeiset palautusajat ovat ehdottomia. Kurssin opettaja 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 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ä kurssin opettajan 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 opintopisteen tai 3 opintoviikon ohjelmoinnin peruskurssin toisessa yliopistossa ja haluat korvata sillä tämän kurssin, menettele seuraavasti:

      • Hae korvaavuushakemuslomake oman koulusi opiskelijapalveluista. 
      • Ota korvaavuushakemuslomake, mahdollisimman paljon tietoa suorittamasi kurssin sisällöstä sekä alkuperäinen todistus kurssin suorittamisesta (esimerkiksi virallinen opintorekisteriote) ja tule niiden kanssa kurssin opettajan vastaanotolle. 
      • Opettaja tutustuu tuomaasi materiaaliin ja päättää niiden perusteella, suositteleeko hän kurssikorvaavuutta. 
      • Jos opettaja päättää puolta korvaavuutta, palauta opettajan allekirjoittama korvaavuushakemuslomake oman koulusi opiskelijapalveluihin. Lopullinen päätös korvaavuudesta tehdään omassa tutkinto-ohjelmassasi, mutta useimmiten hakemus on hyväksytty, jos korvattavan kurssin opettaja puoltaa sitä.
      • Joissakin kouluissa koulun opiskelijapalvelut lähettävät kurssikorvaavuushakemuslomakkeen suoraan kurssin vastuuopettajalle eikä käyntiä opettajan vastaanotolla tarvita.

      Huomaa siis, että toisessa yliopistossa suoritettu kurssi ei korvaa automaattisesti tätä kurssia (vaikka kurssin opintopistemäärä olisi riittävä), vaan opettaja 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.