Tietorakenteiden harjoitustyö (loppukesä)
Vuosi | Lukukausi | Päivämäärä | Periodi | Kieli | Vastuuhenkilö |
---|---|---|---|---|---|
2012 | kesä | 30.07-31.08. | 6-6 | Suomi | Tomi Pasanen |
Harjoitusryhmät
Aika | Huone | Ohjaaja | Päivämäärä | Huomioitavaa |
---|---|---|---|---|
To 13-16 | C221 | Kristiina Paloheimo | 30.07.2012—31.08.2012 | |
Ti 13-16 | C221 | Kristiina Paloheimo | 30.07.2012—31.08.2012 | |
Ma 10-14 | C221 | Kristiina Paloheimo | 30.07.2012—31.08.2012 |
Information for international students
Please contant the teacher, email mkpalohe[at]cs.helsinki.fi, if you wish to take this course English.
Yleistä
Kurssin aloitusinfot ovat maanantaina 30.7. 10.00, 12.30, 15.00 ja 17.30 luokassa C221. Jos et pääse tuolloin paikalle, sovi aika ohjaajan kanssa. Aloitusinfossa kerrotaan kurssin yleisiä asioita ja käytäntöjä. Jokaisen opiskelijan kanssa sovitaaan aihe.
Loppudemon ajanvaraus: www.doodle.com/ysx998cuff2e9cyy
Ohjaajan yhteystiedot: mkpalohe [ at ] cs.helsinki.fi
Irc-kanava: #TiraKesa
Ohjausajat
Viikot 2-3: 6.8.-12.8. ja 13.8-19.8.
Ma: 10.00-12.00, 12.30-14.00 sekä 17.00-19.00
Ti: 13.00-16.00
To: 13.00-16.00 sekä 17.00-19.00
Viikko 4: 20.8-26.8.
Ma: 10.00-12.00, 12.30-14.00 sekä 17.00-19.00
Ti: 13.00-16.00 sekä 17.00-19.00
Ke: 10.00-12.00, 12.30-14.00
Viikko 5: 27.8.-31.8.
Ti: 13.00-16.00 sekä 17.00-19.00
Ke: 10.00-12.00, 12.30-14.00 sekä 17.00-19.00
To: Demotilaisuudet 10.00, 12.30 sekä 17.30
Su: Palautus .zip-tiedostona 23.59
Kurssin suorittaminen
Kurssi on pajamuotoinen, kaikki ohjaus/tapaamisajat ovat tarkoitettu ohjaukseen. Paikalla ei ole pakko olla kuin kerran viikossa, toki saa tulla paikan päälle tekemään työtä vaikka jokaiselle ohjauskerralle. Kerran viikossa on tultava juttelemaan ohjelman edistymisestä ja siitä, mitä on tekemässä tulevalla viikolla. Yhteensä pakollisia tapaamisia on siis 5 kpl. Ensimmäinen on aloituskerta (30.7.), jossa sovitaan projektin aihe. Viimeinen on projektin demo-tilaisuus (30.8.).
Kurssin työmäärä on opintopisteiden perusteella n. 104 tuntia. Varaudu siis käyttämään työhön 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.
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. tapaamisella.