Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (periodi IV)

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ö
2013 kevät 18.03-26.04. 4-4 Suomi Tomi Pasanen

Harjoitusryhmät

Group: 1
Aika Huone Ohjaaja Päivämäärä Huomioitavaa
To 14-16 C221 Kristiina Paloheimo 18.03.2013—26.04.2013
Ti 10-12 C221 Kristiina Paloheimo 18.03.2013—26.04.2013

Ilmoittautuminen tälle kurssille alkaa tiistaina 19.2. klo 9.00.

Registration for this course starts on Tuesday 19th of February at 9.00.

Information for international students

If you want to take this course in english, please contact the teachers at tiralabra ( at ) gmail.com. Teachers on this course are Mika Huttunen and Kristiina Paloheimo.

Yleistä

Varaa aika alkutapaamiseen täältä: http://tiralabra.simplybook.me/index/about

 

Ohjaajat: Mika Huttunen, Kristiina Paloheimo

Ohjaajien yhteystiedot: tiralabra ( at ) gmail.com

Irc-kanava: #tiralabra, Kristiinan nic: TeaShark 

 

Kurssin aikataulu:

1. viikko - 6.5.-8.5.: Alkutapaaminen ohjaajan kanssa joko Skypen tai IRC:n kautta. Ohjaus

2. viikko - 18.-22.3: Ohjaus verkossa ja pajaohjaus laitoksella

3. viikko -  25.-27.3. (huom, vain ma-ke!): Ohjaus verkossa ja pajaohjaus laitoksella

4. viikko - 4.-5.4.: Ohjaus verkossa ja pajaohjaus laitoksella

5. viikko - 8.-12.4.: Ohjaus verkossa ja pajaohjaus laitoksella

6. viiikko - 15.-19.4.: Ohjaus verkossa ja pajaohjaus laitoksella

7. viikko - 22.-28.4.: Ohjaus verkossa ja pajaohjaus laitoksella, LOPULLINEN PALAUTUS SUNNUNTAINA

Kurssin suorittaminen

Kurssin työmäärä on opintopisteiden perusteella n. 104 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 loppudemo, joka pidetään torstaina 25.4.2013. Mahdollisuus ohjaukseen laitoksella on kurssin viikoilla 2-7, erikseen ilmoitettavina pajaohjausaikoina. Kurssin alkutapaaminen ja aiheen sopiminen tehdään verkon kautta, joko Skypepalaverina, irc-keskusteluna tai sähköpostilla jos kumpikaan ylläoleva ei onnistu. Tästä enemmän aloitusmeilissä joka lähetetään kaikile osallistujille.

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.