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

Tietojenkäsittelytieteen laitos

Suomeksi In English Projekti

Rinnakkaisohjelmointi, S2009, 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 (siis joko projektit A ja B, tai projektit A ja C).

Molemmilla tehdyillä osilla on sama 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.

    Ensimmäinen kertaustehtävä (pr 1Ai) palautetaan noin kurssin puolessa välissä ja toinen kurssin lopussa. Kertaustehtävien täytyy toimia myös klikattavina versioina verkossa. Projekti palautetaan pääasiassa ohjeen mukaisesti, mutta lyhyempi versio riittää tässä vaiheessa: tekijöiden nimet, lupa käyttää ja tekijöiden osallistumisaste (40-140% per tekijä).
     
  2. Suunnitelkaa ja toteuttakaa pieni rinnakkainen ohjelma Javalla. Ongelmaksi valitaan yksi oppikirjan tehtävistä (ks. Liite C [BenA 06], projekti 1, 2, 3, 4, 5, 6, 7, 10, 11, 14, 19, 25 tai 26) tai oman ehdotuksen mukainen tehtävä (jonka spesifikaatio on hyväksytty etukäteen). Kutakin tehtävää voi tehdä korkeintaan 5 opintopiiriä. Konsultoikaa kurssin vetäjän kanssa valitsemastanne tehtävästä. Java-ohjelmien kehityksessä voi käyttää ohjeistuksena osaprojekti C'n lähtökohtina olevia aikaisempia projektien tuottamia ohjeita. Ohjelmat voi ajaa laitoksen vera-palvelimella (vera.cs.helsinki.fi). Verassa on 4 suoritinta, joissa kussakin on kaksi hyper-thread -suoritinta, joten käyttöjärjestelmä näkee 8 suoritinta. Suoritettavat ohjelmat voi tallettaa levypalvelimelle (fs) ja ohjelmat voi sitten suorittaa esimerkiksi ssh-ikkunassa.

  3. 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 lyhyt perustelu sen oikeellisuudesta
    4. Selvitys rinnakkaisratkaisussa saavutetuista eduista verrattuna saman ongelman ei-rinnakkaiseen ratkaisuun (esim. hyödynnä linux-komentoa time)
    5. Ongelman ratkaisevan ohjelman lähdekielinen ratkaisu
    6. Suoritettava ohjelma liitteenä, riittävillä käyttö- ja suoritusohjeilla varustettuna.

    Projekti palautetaan ohjeen mukaisesti.

  4. Kehittäkää RIO-opiskelijoille sopiva uusi ja selkeämpi ohjeistus jollekin seuraavista samanaikaisuuden hallintaa liittyvistä menetelmistä
    1. Javan säikeet ja kriittisen vaiheen kontrollointi niiden käytön yhteydessä
      • esitelkää erityisesti kriittisen vaiheen suojaus huolella
    2. Javan semaforit
      • huomioikaa erilaiset semaforityypit (yksit. semafori, viestikapula, busy-wait, ...)
    3. Javan monitorit
      • huomioikaa erityisesti monitorin ehtomuuttujien käyttö ja erilaiset signalointisemantiikat
    4. Javan RMI
    5. Java Message Service
      • lähtökohtaa ei ole ennestään, vähän haastavampi työ
    6. BACI

Kutakin menetelmää voi tehdä korkeintaan 4 opintopiiriä. Konsultoikaa kurssin vetäjän kanssa valitsemastanne menetelmästä. Tätä projektia (C) ei voi tehdä, ellei allaolevaa lupaa ohjeen opetus- ja jatkokehittelyyn anneta projektin palautuksen yhteydessä.

Opintopiiri ottaa itsenäisesti selvää, miten kyseinen menetelmä toimii, miten sitä käytetään ja mihin se soveltuu. Lähtökohtana annettua materiaalia voi hyödyntää halutulla tavalla. Menetelmästä annetaan uusille RIO-opiskelijoille sopiva (lyhyt) ohjeistus, jossa on ainakin seuraavat osat:

  1. Lupa käyttää materiaaliaa yliopistolla opetustarkoituksiin ja jatkokehittelyyn. Lupa laitetaan näkyville siis myös tähän ohjeeseen.
  2. Menetelmän perusidea ja yhteneväisyydet/eroavaisuudet/rajoitukset kurssilla esitettyyn perustapaukseen verrattuna (lyhyesti).
  3. Ainakin kaksi kuvaavaa käyttöesimerkkiä menetelmästä. Käyttöesimerkkien tulisi olla hyvin yksinkertaisia, mutta silti riittävän opettavaisia. Käyttöesimerkkien tulee olla hyvin dokumentoitu. Käyttöesimerkkien tulisi olla sellaisia, että ne ovat helposti opiskelijoiden sisäistettävissä kurssin siinä vaiheessa, kun kyseinen menetelmä esitellään kurssilla.
  4. 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 käyttää projektin tulosta oppimateriaalina (ks. aikaisemmat projektityöt) myöhemmillä kursseilla.

Ohjeen voi tuottaa itsenäisenä pdf-dokumenttina (ei henkilötunnuksia, opiskelijanumeroita tai osoitteita) millä tahansa halutulla järjestelmällä. Ohjeessa voi olla liitteitä (esim. java- ja baci-ohjelmia).

Hyvässä ohjeessa on ainakin seuraavia piirteitä:

  • kieliasu on erinomainen
  • kohdeyleisö (tämän kurssin oppilaat) ymmärtää ja sisäistää sen helposti
  • siinä ei jaaritella turhia, mutta se on silti helppolukuinen
  • esimerkit ovat lyhyitä, mutta valaisevia ja helppokäyttöisiä
  • esimerkit on kommentoitu riittävästi, mutta ei liikaa
  • esimerkit ovat kattavia, joten menetelmän erityispiirteet ovat niissä mukana

Ohjeen lisäksi tulee palauttaa erillinen lyhyt selvitys (1/2 sivua?) siitä, miksi tämä uusi ohje on parempi kuin aikaisemmat.

Projekti palautetaan ohjeen mukaisesti. Palauttakaa siis projektin C-osalta raportissanne ainakin:

  • Ohje itsenäisenä pdf-dokumenttina
    • tekijöiden nimet, mutta ei opiskelijanumeroita tai muita henkilötietoja
    • mukana lausunto "Yliopisto saa käyttää projektin tuloksia opetuskäyttöön ja jatkokehittelyyn"
  • Mahdolliset liitteet (esim. valmiiksi suoritettavat ohjelmaesimerkit)
  • Selvitys, miksi tämä ohje on parempi kuin aikaisemmat
    • oma dokumentti, ei osana ohjetta

Osaprojektin A kertaustehtävien aihealueet valitaan satunnaisesti kurssin vetäjän toimesta, perustuen lähinnä opintopiirin muodostamisilmoituksen saapumisaikaan kurssin 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.

Opintopiiri voi halutessaan luoda itselleen oman wikin yliopiston Confluence Wikissä:

  • Vain yksi opintopiirin jäsen tekee tämän (opintopiirin space administrator), ja hän antaa sitten myöhemmin muille käyttöoikeudet.
  • Avaa wikin etusivu http://wiki.helsinki.fi/, lue käyttösäännöt ja ohjeet ja lopulta klikkaa työkalu alueiden luomiseen.
  • Opintopiirin wikin space administrator antaa oman hy-domainin käyttäjätunnuksensa ja salasanansa
  • Wiki Space Creator käynnistyy.
    • Anna wikin nimeksi ("Space name") TKTLrioS08opNimi, jossa opNimi on opintopiirin nimen lyhenne. Huomaa, että tässä yhteydessä nimessä ei voi olla blankkoja.
      • Anna wikin kuvauskentässä ("Space description") opintopiirisi koko nimi.
      • Anna wikin aloitusajaksi nykyhetki. Jätä lopettamispäivä avoimeksi.
      • Laita wikin käyttäjiksi
        • kaikki opintopiirin jäsenet (hy-domainin tunnukset)
        • Rio-kurssin vastuuhenkilö (kerola) ja ohjaajat(...)
      • Lue käytön ohjeet ja ruksaa kyseinen kohta
      • Klikkaa "Create Space With Members" ja wikisi on valmis.
  • Wikin space administrator voi editoida wikin käyttäjien oikeuksia avaamalla wiki, klikkaamalla Browse Space, sitten Space Admin ja lopulta Edit Permissions:
    • Opintopiirin jäsenille kaikille samat oikeudet
    • Rio-kurssin vastuuhenkilölle vähintään View, Comments Create ja Space Export&Admin -oikeudet (jatkoa varten)
    • Rio-kurssin ohjaajille vähintään View ja Comments Create oikeudet
    • Älä anna muille tässä vaiheessa mitään oikeuksia
  • Jos haluat vaihtaa wikisi nimen blankkoja sisältäväksi, noudata tätä ohjetta.
  • Jos tässä ohjeistuksessa on puutteita, kerro niistä pikapuoliin kurssin vastuuhenkilölle (kiitos!).

 


Teemu Kerola 12.11.2009 18:44