Yliopiston etusivulle Suomeksi På svenska In English
Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Suomeksi In English Projekti

Rinnakkaisohjelmointi, S2006, Projekti 1 (16 pp)

Ryhmätyöprojektissa on kolme erillistä osaa (A, B ja C). Niistä tehdään kaksi kappaletta. Kaikki tekevät osan A ja jomman kumman osista B tai C.

Molemmilla tehdyilla osilla on painoarvo (8 pp).

Oman oppimisenne kannalta on fiksua, että osallistutte täysipainoisesti kaikkien osaprojektien tekemiseen. Tottakai töitä voi projektissa jakaa, mutta tarkoitus on kuitenkin, että kaikki oppivat samat asiat tämän projektin avustuksella. Vastuu on teillä itsellänne!

Raportin sisältö on määritelty opintopiirityöskentelyn kuvauksessa ja sen viimeinen palautusajankohta on kerrottu kurssin aikataulusivulla. Projektin voi palauttaa myös myöhästyneenä, mutta siitä seuraa myöhästymissakkoa 12.5% projektin maksimi pp'stä per myöhästymispäivä. Esimerkiksi projektin myöhästyessä 30 tuntia jokaiselta vähennetään 4 pp (25% 16 pp:stä) lopullisista projektin yhteispisteistä. Aloittakaa projekti pian, tehkää töitä sen eteen koko ajan ja koettakaa saada se valmiiksi etuajassa!

Osaprojektit

  1. Suunnitelkaa ja toteuttakaa kaksi (2) kertaustehtävää, yksi kummastakin teille valituista aihepiiristä. Huomatkaa, että vaikka tehtävä on aika helppo käytännössä toteuttaa, niin kunnollisen kertaustehtävän keksiminen ei ole sitä. Käyttäkää siis kohtuullisesti aikaa suunnitteluun, ennen kuin ryntäätte toteutukseen.

  2.  
  3. Suunnitelkaa ja toteuttakaa pieni rinnakkainen ohjelma. Ohjelmointiin voi käyttää BACI'n C-- ja BACI Pascal -kieliä. Ongelmaksi valitaan yksi oppikirjan tehtävistä (ks. Liite C [BenA 06]): 4, 5, 7, 10, 11, 19 tai 25. Kutakin tehtävää voi tehdä korkeintaan 4 opintopiiriä. Konsultoikaa kurssin vetäjän kanssa valitsemastanne tehtävästä.
  4. Hyväksyttävässä ohjelmassa (sen raportissa) on ainakin seuraavat osat
    1. Ongelman kuvaus
    2. Ongelman rinnakkaisratkaisun periaatteiden ja samanaikaisuuden raekoon (granularity) perustelut
    3. Algoritmina esitetty ratkaisu ja perustelu sen oikeellisuudesta
    4. Ongelman ratkaisevan ohjelman lähdekielinen ratkaisu
    5. Suoritettava ohjelma liitteenä, riittävillä käyttöohjeilla varustettuna. Ohjelman tulee olla hyvin helposti suoritettavissa.
       
  5. Opetelkaa käyttämään jotain seuraavista Javalle tarkoitetuista samanaikaisuuden hallintaa liittyvistä menetelmistä:
    1. Säikeet ja kriittisen vaiheen kontrollointi niiden käytön yhteydessä
    2. Semaforit
    3. Monitorit
    4. RMI
    5. JavaSpaces
    6. Java Message Service

Kutakin menetelmää voi tehdä korkeintaan 4 opintopiiriä. Konsultoikaa kurssin vetäjän kanssa valitsemastanne menetelmästä.

Opintopiiri ottaa itsenäisesti selvää, miten kyseinen menetelmä toimii, miten sitä käytetään ja mihin se soveltuu. Menetelmästä annetaan muille opiskelijoille sopiva raportti, jossa on ainakin seuraavat osat

  1. Menetelmän käyttötarkoitus ja sovellusalue
  2. Menetelmän perusidea
  3. Menetelmän yhteneväisyydet/eroavaisuudet kurssilla esitettyyn perustapaukseen verrattuna
  4. Ainakin kaksi kuvaavaa käyttöesimerkkiä menetelmästä (Aterioivat filosofit, nukkuva parturi, etc). Käyttöesimerkit on perusteellisesti dokumentoitu.
  5. Menetelmän käyttöohje "rautalangasta väännettynä" eli niin yksityiskohtaisesti, että kuka tahansa Java-ohjelmointi -kurssin suorittanut voi sen avulla toteuttaa ja suorittaa edellämainitut esimerkit. Tarkoituksena on mahdolliesti käyttää projektin tulosta oppimateriaalina myöhemmillä kursseilla.

Osaprojektin A kertaustehtävien aihealueet valitaan satunnaisesti kurssin vetäjän toimesta, perustuen lähinnä opintopiirin muodostamisilmoituksen saapumisaikaan vetäjälle. Valitkaa itse osaprojektien B tai C aihealueet ja lähettäkää tieto niistä kurssin vetäjälle. Jos johonkin osaprojektin B tehtävään tai osaprojektin C menetelmään tulee liian monta halukasta opintopiiriä, niin etusija on kyseisen tehtävän tai menetelmän ensiksi varanneilla.



Teemu Kerola 17.11.2006 13:31