Skip to content
Kaltsoon edited this page Dec 4, 2014 · 5 revisions

Tietorakenteiden harjoitustyö syksy 2014, periodi 2

Demotilaisuus maanantaina 8.12 klo 16-18 luokassa A218

Huom! Harjoitustyösi ei tarvitse olla demotilaisuuten mennessä valmis, kunhan sinulla on jotain näytetettävää muille, esim. pienimuotoinen visualisointi algoritmisi toiminnasta tai tietorakenteiden suorituskykyvertailu. Aloita demo kertomalla kuka olet ja mitä olet tehnyt. Voit näyttää lyhyesti dokumentaatiota ja yleiskuvan sovelluksesi rakenteesta, mutta kooditasolle asti ei ole tarvetta mennä, lyhyt visuaalinen esitys työstä on tärkeämpi. Pystytä sovellus laitoksen koneelle jo hyvissä ajoin etukäteen, jos vain mahdollista.

Muistathan, että demotilaisuus on pakollinen!

Aloitusluento tiistaina 28.10 klo 16:00 - 18:00, luokassa B119.

Sisältö:

Ohjaajan sähköpostiosoite

  • kalle.ilves(at)helsinki.fi

IRC

Kurssin IRC-kanava on #tiralabra2014syksy @IRCnet. Tunnistat ohjaajan @-merkeistä.

Kurssin suorittaminen

Kurssin työmäärä on opintopisteiden (4) perusteella n. 107 tuntia. Varaudu siis käyttämään työhön 15-20 tuntia viikossa jokaisella viikolla.

Kursilla opiskelija toteuttaa ohjelman, joka ratkaisee jonkin ohjelmointiongelman. Ongelmanratkaisuun käytetään sopivia algoritmeja sekä tietorakenteita. Oppimismatriisin tiedoista poiketen, opiskelja valitsee ratkaistavan ongelman yhdessä ohjaajan kanssa. Suoritus ei edellytä oman algoritmin kehittämistä. Tämäkin on mahdollista, mikäli opiskelija haluaa haastavamman aiheen. Keskeistä työssä on, että ohjelma on toimiva ja tehokas. Sen tulee kaikissa tapauksissa antaa nopeasti oikea vastaus. Työn aiheesta riippuu, miten suuria tapauksia ohjelman tulee pystyä käsittelemään. Tämä sovitaan ohjaajan kanssa.

Kurssi pidetään osittain verkkokurssina, kaikki viikoittaiset palautukset tapahtuvat verkon kautta. Ainoa pakollinen tapaaminen laitoksella on aloitusluento sekä loppudemot.

Mahdollisuus ohjaukseen laitoksella on olemassa, käytännöistä tarkemmin aloitusluennolla.

Ohjelma toteutetaan ohjaajan hyväksymällä kielellä (esim. Java, Python, jne.), sen ohjelmointikäytänteitä noudattaen.

Kurssin yksi tavoite on oppia toteuttamaan itse tietorakenteita, ei käyttämään muiden toteuttamia. Tästä syystä tarvittavat algoritmit ja tietorakenteet tulee toteuttaa itse. Nyrkkisääntönä vain perustietotyyppejä, taulukoita ja merkkijonoja saa käyttää, muu on tehtävä itse, erityisesti Tietorakenteet-kurssilla opetellut rakenteet. Muita apuvälineitä, kuten tiedostonkäsittelyluokkia, saa tietenkin käyttää. Valmiita tietorakenteita (esim. Javassa: ArrayList, HashMap...) tai algoritmeja (esim. Collections.sort) ei saa käyttää lopullisessa työssä. Jos olet epävarma jonkin luokan käyttämisestä, kysy ohjaajalta.

Hyväksi koettu tapa tehdä työ vaiheittain on laittaa ensin kuntoon algoritmin ydin käyttäen kielen standardikirjastojen valmista kalustoa (jonot, keot, järjestämisalgoritmit). Kannattaa siis pyrkiä toteuttamaan algoritmin ydin nopeasti ja sen jälkeen korvata käytetty kalusto omilla toteutuksilla. Eli toteuttaa rajapintojen takana olevat rakenteet ja/tai algoritmit itse. Tätä tapaa käytetään osapalautusten pohjana algoritmin/tietorakenteiden kehityksen osalta. Mikäli toteutat työn erilaisella lähestymistavalla, sovi työn edistymisen "Milestone":t jo 1. viikon aikana ohjaajan kanssa.

5 Opintopisteen arvoinen suoritus

Opiskelija, joka haluaa suorittaa kurssin viiden opintopisteen arvoisesti keskustelee asiasta ohjaajan kanssa kurssin alussa. Esimerkki lisäopintopisteeseen oikeuttavasta tekijästä: huomattavasti yksityiskohtaisempi kirjallinen selonteko ohjelman toiminnasta ja pienten optimointien vertailu:

  • Minkälaisilla syötteillä ohjelma toimii hyvin? Miksi?
  • Minkälaisilla syötteillä ohjelma toimii huonosti? Miksi?
  • Pseudokoodin ja todellisen koodin väliset ongelmat (esim. kuinka usein algoritmi joutuu muokkaamaan listaa muualta kuin alusta tai lopusta). Miten nämä voidaan parhaiten ottaa huomioon tietorakenteissa ja ohjelman yleisessä toiminnallisuudessa?
  • Testaa ja raportoi muutaman optimoinnin/muutoksen tuoma vaihtelu ohjelman suorituskykyyn.
  • Voiko algoritmin aikavaativuutta parantaa lisäämällä tilavaativuutta? Miten?

Arvosteluperusteet

  • Ohjelma: 30 p

    • Toimivuus 10 p
    • Testaus 10 p
    • Dokumentoiva koodi (JavaDoc sekä itsedokumentoiva) 5 p
    • Ohjelmakoodin selkeys 5 p
  • Dokumentaatio 10 p

    • Aiheen määrittely 2 p
    • Ongelman toteutus 3 p
    • Testaus 3 p
    • Käyttöohje 2 p
  • Vertaisarvioinnit 2 * 3p = 6 p

  • Viikkopalautukset 7 * 2p = 14 p

(Yhteensä 60 p)

Kurssin hyväksytysti suorittaminen vaatii ohjelmalta itsetoteutettuja tietorakenteita sekä toiminnallisuutta. Kukin työ arvioidaan omana kokonaisuutenaan, alla viitteelliset pisterajat.

  • 5: 50 p
  • 4: 45 p
  • 3: 40 p
  • 2: 35 p
  • 1: 30 p