Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (vuodenvaihde)

58161
3-5
Algorithms and machine learning
Intermediate studies
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.
Year Semester Date Period Language In charge
2014 autumn 15.12-18.01. 2-2 Finnish Tomi Pasanen

Exercise groups

Group: 1
Time Room Instructor Date Observe
Mon 13-15 C221 Toni Annala 15.12.2014—15.12.2014 Aloitustilaisuus MA 15.12. 13-15 C221!

General

Ohjaus Viikolla 3:

​​​​​Ma 29.12. 12-14 Ohjausta tarjolla - C221

Ti 30.12. 11.30-13.30 Ohjausta tarjolla -  C221

Ke 31.12. 12-14 Ohjausta tarjolla tarpeen mukaan (ilmoittaudu sähköpostilla viimeistään tiistaina illalla!) C221

 

Ohjaus Viikolla 4:

Ma 5.1. 12-14 Ohjausta tarjolla - C221

Ke-To Ohjausta tarjolla - ajankohta tarkentuu piakkoin

Pe 9.1. Demotilaisuus: 12-15 (Kaikille pakollinen) C221

 

Ohjaus Viiikolla 5: Ajankohdat tarkentuvat kevään kurssi-aikataulujen ilmestyttyä

 

Completing the course

 

Kurssin työmäärä on opintopisteiden perusteella n. 104 tuntia ja kurssi on vain 4 viikon pituinen (eikä jouluna ole ohjausta). Varaudu siis käyttämään työhön useita tunteja 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. Ainoat pakolliset tapaamiset ovat alkutapaaminen 16.12. ja loppudemo joka järjestetään 9.1.2014 tai 10.1.2014.
 
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 Javan 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.