Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä)

58161
3-5
Algoritmit ja koneoppiminen
Aineopinnot
Opintojaksossa opiskelijat harjoittelevat vaikeahkojen tietorakenteiden ja algoritmien toteuttamista, sekä erilaisten ratkaisujen vertailemista käytännössä. Työn arvioinnissa keskeistä on ohjelmakoodin oikeellisuus, selkeys ja tehokkuus, sekä vertailuissa saatujen tulosten esittäminen ja arviointi. Työn tekeminen edellyttää jossain määrin tieteellisen kirjallisuuteen perehtymistä. Esitiedot: Tietorakenteet ja algoritmit sekä Aineopintojen harjoitustyö: Ohjelmointi.
Vuosi Lukukausi Päivämäärä Periodi Kieli Vastuuhenkilö
2015 kesä 11.05-19.06. 5-5 Suomi Tomi Pasanen

Harjoitusryhmät

Group: 1
Aika Huone Ohjaaja Päivämäärä Huomioitavaa
Ma 12-14 B221 Mika Huttunen 11.05.2015—11.05.2015 Aloitustilaisuus MA 11.5. 12-14 B221 on kaikille pakollinen!

Information for international students

 

It is possible to participate to course in english. Please come to the starting lecture at 11.5. B221 12-14

Yleistä

Kurssin ohjaajina toimivat Mika Huttunen (mika.huttunen@helsinki.fi) ja Henri Korpela (henri.korpela@helsinki.fi).

Kurssin suorittaminen

Kurssi kestää 6 viikkoa, ja työmäärä on opintopisteiden perusteella n. 104 tuntia (jos teet 4op laajuisena). Varaudu siis käyttämään työhön vähintään 15 tuntia viikossa jokaisella viikolla. Kurssilla on palautukset joka viikolla sunnuntaina 23:59.
 
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 palautukset tapahtuvat verkon kautta. Ainoat pakolliset tapaamiset ovat henkilökohtainen alkutapaaminen ja loppudemot, jotka (vain toiseen tarvitsee osallistua) järjestetään kurssin viimeisellä viikolla 15.-21.6. Tarkempi aika sovitaan aloitusluennolla.
 
Ohjelma toteutetaan Java-kielellä, sen ohjelmointikäytänteitä noudattaen. Myös muiden kielten käyttö on mahdollista, perustelluista syistä. 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. Javan muita apuvälineitä, kuten tiedostonkäsittelyluokkia, saa tietenkin käyttää. Javan valmiita tietorakenteita (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 valitsemasi ohjelmointikielen 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.
 
Ohjaus
Kurssilla on ohjausta kaksi kertaa viikossa. Ohjauksia on alustavasti maanantaisin klo 16-18 loukassa BK107 ja perjantaina klo 12-14 luokassa BK107. Ajoista sovitaan vielä tarkemmin aloitusluennolla. Jos vaikuttaa siltä että ohjauksia ei tarvita niin niitä ei pidetä.
 
Poikkeuksellisesti maanantaina 11.5 ohjaus pidetään 14-16 siis heti aloitusluennon jälkeen!