581332 Rinnakkaisohjelmointi (4 op, 2 ov)
581332 Jämlöpande programmering (4 sp, 2 sv)
581332 Concurrent Programming (4 cr, 2 cu)
Asema opetuksessa
Tietojenkäsittelytieteen aineopintojen pakollinen kurssi. Kurssi vastaa 2001-2004 luennoitua kurssia Rinnakkaisohjelmistot (2 ov). Kurssi vastaa ennen 2001 luennoidun kurssin Rinnakkaisohjelmistot (4 ov) jälkimmäistä osaa, eikä näitä kahta kurssia voi sisällyttää samaan tutkintoon
Tavoitteet
Kurssin tavoitteena on ymmärtää rinnakkaisten ja hajautettujen järjestelmien ohjelmoinnin peruskäsitteet, tuntea keskeinen ongelmanasettelu sekä osata soveltaa tavallisimpia ratkaisumenetelmiä. Oppimistavoitteet on tarkemmin kuvattu omassa dokumentissaan.
Esitieto- ja lisätietokurssit
Esitietoina edellytetään kurssin Tietokoneen toiminta (4 op) sisällön hallinta
Tämän kurssin jälkeen sopii suoritettavaksi esimerkiksi kurssit Verkkosovellusten toteuttaminen (7 op) sekä Hajautetut järjestelmät (6 op).
Suoritustavat
Kurssin voi suorittaa luentokurssilla tai osallistumalla erilliskokeeseen.
Kurssi luennoidaan joka vuosi syyslukukaudella. Luentokurssiin sisältyy
- luentoja 24 tuntia (4h/vko)
- harjoituksia 6 * 2 tuntia
- opintopiirityöskentelyä ja ryhmätyö
- kurssikuulustelu 2.5 tuntia.
Erilliskokeita on lukuvuoden aikana 4: kaksi kevätlukukaudella (tammikuu ja maaliskuu), yksi kesällä (elokuu) sekä yksi syyslukukaudella (syys/lokakuun vaihde). Erilliskokeen perusteella arvosanaa määrättäessä ei huomioida luentokurssin yhteydessä saatuja harjoitus- tai projektipisteitä.
Ilmoittautuminen
Luentokurssille ilmoittaudutaan Tietojenkäsittelytieteen ILMO-järjestelmän avulla kirjoittautumalla johonkin kurssin harjoitusryhmään. Kurssikuulusteluun ei tarvitse erikseen ilmoittautua. TKTL:n pakolllisten aineopintotason kurssien suoritusta saa yrittää luentokurssina harjoituspaikan varaamalla vain kahdesti. Yrityskerraksi tulkitaan ilmoittautuminen, jota ei ole peruttu määräaikaan mennessä, yleensä ensimmäisen harjoitusviikon loppuun mennessä. Ennen syksyä 2002 tehtyjä yrityksiä ei lasketa sääntöä sovellettaessa.
Erilliskokeeseen tulee ilmoittautua ILMO-järjestelmän avulla viimeistään koetta edeltävän viikon maanantaina. Erilliskokeilla suorittamiseen ei liity rajoituksia.
Kurssimateriaali
Kurssi perustuu lähinnä lukuihin 1-10 oppikirjassa M. Ben-Ari, Principles of Concurrent and Distributed Programming (2nd Ed.); Addison-Wesley 2006. Lukkiutumista ja etäproseduureja käsittelevät osat löytyvät esimerkiksi kirjan William Stallings, Operating Systems - Internals and Design Principles 5th ed.; Prentice Hall 2005, luvuista 5, 6.1-6.6 ja 14.1-14.3.
Ainakin Ben-Arin kirjan hankkimista suositellaan.
Kurssin kotisivu ja luentokurssien aikataulusivut löytyvät kurssin kantasivulta http://www.cs.helsinki.fi/kurssit/aine/581332-8/.
Sisältö (2006)
Sisältö jakaantuu karkeasti ottaen kolmeen osaan:
- Johdanto: Rinnakkaisuus ja samanaikaisuus
- Laitteistoarkkitehtuureja
- Esimerkkejä rinnakkaisohjelmointiparadigmoista
- Samanaikaisuuden ohjelmoinnissa käytettävä notaatio
- Samanaikaisuutta sisältävien ohjelmien oikeaksi todistaminen
- Samanaikaisuuden hallinta ja kommunikointi yhteisen muistin avulla
- Prosessien kommunikointitavat
- Semaforien käyttö samanaikaisuuden hallinnassa
- Lukkiutuminen
- Monitorit
- Samanaikaisuuden hallinta ja kommunikointi ilman yhteistä muistia
- Sanomanvälitys
- Etäproseduurit
- Lukkiutuminen
- Rendezvous
Luentokalvot ja laskuharjoitukset muodostavat tarkimman määrittelyn luentokurssin alueesta. Huomattakoon kuitenkin, että kalvokopiot eivät ole oppikirja vaan paremminkin luentojen laajennettu sisällysluettelo.
Teemu Kerola 21.08.2007 10:58