Projektityön kuvaus on julkaistu 17.10.

Perustiedot opintojaksosta Algoritmit ja tietorakenteet, päivitetty 9.12.2005 (Hannu Laine)


Algoritmit ja tietorakenteet T0027 (TP03S1, eli päiväopiskelu)

Ilmoittautuminen opintojaksolle tapahtuu Winha-järjestelmän kautta. Opintojakson  koodi on T0027 ja toteutuksen koodi on TP03S1.

Opintojakson tärkein tavoite on oppia ymmärtämään abstraktion, yleisyyden ja ohjelmistokomponenttien merkitys ohjelmoinnissa ja oppia käyttämään niitä hyväksi. Opintojaksolla opitaan käyttämään ja rakentamaan ohjelmistokomponentteja. Opintojaksolla tutustutaan yleisten uudelleenkäytettävien ohjelmistokomponenttien problematiikkaan. Komponentteja rakennetaan sekä C-kielellä, jolloin käytetään ns. abstraktien tietotyyppien mallia ja C++ -kielellä, jolloin käytetään luokkamallia. Tarkoituksena on nähdä, miten C-kielellä voidaan toteuttaa yleisiä uudelleen käytettäviä komponentteja.  Näiden välineiden puutteet havaitaan konkreettisesti ja omakohtaisesti. Näin opitaan perusteellisesti ymmärtämään mitä etuja olioperustainen lähestymistapa antaa perinteiseen ohjelmointikieleen nähden. C ja  C++ kieliä siis verrataan toisiinsa niiden abstraktioon ja yleisyyteen tarjoamien välineiden osalta. Opintojaksolla käsitellään myös yleiseen käyttöön tarkoitetut  ohjelmistokomponentit  kuten listat, pinot, jonot ja puut. Algoritmien osalta käsitellään rekursio perusteellisesti. Opitaan, miten rekursiota käytetään määrittelyissä, ongelman ratkaisussa ja ohjelmointitekniikkana. Tutustutaan myös siihen, millä tavalla prosessori suorittaa rekursiivista aliohjelmaa. Opintojaksolla tutustutaan erilaisiin järjestämis- ja etsintämenetelmiin käyttäen lähestymistapana algoritmien analyysia. Myös näiden kohdalla on yhtenä tarkastelukulmana algoritmien yleisyys. Opintojaksolla käsitellään myös puurakenteet. Yllämainittuihin asioihin liittyen esiin tulevat lisäksi mm: template luokat, säiliöluokat, iteraattorit yms.



[ Yleistiedot  |   Pääkohdat   |   Toteutumat  |   Kurssimateriaali Harjoitukset  |  Ryhmätyöharjoitus  | Tentti]

o Yleistiedot


oSisällön pääkohdat


oKäsitellyt asiat


 oKurssimateriaali

Moniste 2 ( Lista )
(Esimerkki 1 : "Järjestämätön lista",  Esimerkki 2 : "Järjestetty lista",  Ylimääräisiä esimerkkejä:  Listan toteutus luokkana , Listan toteutus template luokkana: )
Moniste 3 ( Pino ja jono )
Esimerkki 1 (pinon toteutus taulukolla ja pinon käyttöesimerkki),
Moniste 4 ( Dynaamiset tietorakenteet )
Moniste 5 ( Muita linkattuja rakenteita)
Moniste 6 (Funktio-osoittimet)
Esimerkki 1  (Pinon sisäinen iteraattori sisiter.c )

Moniste 7 (Rekursio )

o Harjoitukset

Harjoitus 1  

Harjoitus 2  

Harjoitus 3  

Harjoitus 4  

Harjoitus 5    (tiedosto list3_version_2.c)

Harjoitus 6     (tiedostot intstack.h  and intstack.obj) and intstack_DevCpp.obj)

Harjoitus 7L  (Lisätehtävä, ei pakollinen)  (tiedosto kiinteäkokoisen jonon toteutus )

Harjoitus 8  

Harjoitus 9  

Harjoitus 10

Harjoitus 11

Harjoitus 12

Harjoitus 13    (tiedosto blobbase.c )

Harjoitus 14L  (Lisätehtävä, ei pakollinen)



 oRyhmätyöharjoitus

Opintojaksoon kuuluu ryhmätyöharjoitus, jonka aihe löytyy tästä. Ryhmätyö tehdään pääsääntöisesti kolmen hengen ryhmissä. Tärkeänä tavoitteena on tehdä sovellus ryhmätyönä ja projektimuotoisesti, jolloin tehtävä jaetaan mahdollisimman vähän toisistaan riippuviin osiin ja koko projektista tehdään riittävän tarkka suunnitelma, jonka mukaan edetään. Yleisluonteisia ohjeita projektityöstä löytyy tästä linkistä: ohjeita ohjelmistoprojektin läpivientiin..

 o Tentti