-TML logo-

T-110.6120 Unix sovellusohjelmointi 6 op

Opinnot > T-110.6120: UNSO >

Changelog

26.4. 15:15Kurssin vika uusintatentti on vajaan kuukauden päästä, 16.5. klo 13-16 sali T2. Ilmoittautuminen Topin kautta, auki on.
3.2. 15:40Miika pitää vastaanoton harkkatöistä pe 9.2. klo 16-17. Tuolloin voi kysellä omasta harkkatyöstään - Miika käsittelee mahdolliset huomautukset arvosteluista tuolloin, ei sähköpostitse. Salina on A106.
1.2. 23:41Kurssin tulokset on alla mainitun linkin takana. Harkkatöistä Miika järjestää palautetilaisuuden, ajan ilmoitan tällä sivulla. Kaikista harkkatöistä on Miika kirjannut lyhyen arvostelun. Sen saa minulta sähköpostitse.
31.1. 10:11Harkkatöiden arvostelun pitäisi valmistua tänään. Pistän lopputulokset sitten heti verkkoon. Tulokset tulee tänne.
1.1. 20:30Kurssin seuraavat uusinnat ovat: pe 12.1., 13-16, T1 ja ti 6.3., 9-12, T1. Kannattaa katsoa vielä tuolta mahdolliset muutokset.
20.12. 22:38Kun joululomat pukkaavat päälle, omaan tenttivastaukseen ja sen arvosteluun voi tulla tutustumaan huoneeseeni A104 keskiviikkona 3.1. Olen paikalla todennäköisesti väh. klo 10-17. Jos tuo on vaikea päivä, ilmoittele, niin katsotaan toinen aika.
20.12. 22:38Uusintatentti tarvittaneen piakkoin, sillä osa kurssilaisista ei päässyt tähän tilaisuuteen. Koitan saada uusinnan esim. ke 10.1.
20.12. 22:36Tentit on korjattu ja tulokset tuolla. Tentissä oli 19 paikalla, ketään ei hylätty.
14.12. 11:15Tarkennuksena harkkatöiden arvosteluun, Miika arvostelee lopullisesti kaikki työt kerralla. Kun toisen harkan deadline on vuoden loppu, tarkempi arvostelu ja palaute tulee tammikuussa. Tentin korjaan mahd. pian, ennen joulua.
13.12. 20:56Kurssipalautteet on siis tuolla
13.12. 20:44Muistakaa kurssipalaute. Pidin kurssin ekaa kertaa ja olisi hyvä tietää, esim. oliko homma turhaa, vai olisiko tälle tarvetta toistekin (joko samanlaisena tai jotenkin muutettuna, miten?)
13.12. 20:40Miika on katsonut ekat harkkatyöt läpi. Jos haluat tarkan palautteen, ota yhteyttä Miikaan. Yleisiä kommenteja: testausta saisi parantaa, esim. morsetusohjelmat sekoilivat "haastavilla" lähdemateriaaleilla, lokifilen käsittely (esim. yksi ohjelmisto oletti, että lokifile oli jo olemassa eikä käynnistynyt muuten), kirjoittakaa selkeästi, mikä ohjelma on kyseessä ja miten sitä käytetään, muutamilla oli miltei olemattomat oppimispäiväkirjat (tulee pahasti miinusta).
7.12. 17:29Lopulliset osan 2 kalvot on ladattu.
7.12. 17:29Latasin uudet korjatut luentojen osan 2 esimerkit. Noissa on jonkinverrran korjauksia ja parannuksia alkuperäisiin verrattuna.
30.10. 13:26Toisen periodin luennot aiheet menevät seuraavasti: 2.11. Prosessien välinen kommunikointi, 16.11. Inter-process communication (IPC) eli semaforit/jaettu muisti/viestijonot, 23.11. Säikeet ja lopulta 7.12. Muuta sekalaista ja mielenkiintoista.
23.10. 22:48On tullut kyselyjä harkkatöiden aiheiden valitsemisesta ja ilmoittamisesta. Kukin opiskelija valitsee itse itseään kiinnostavan aiheen. Kuulemme mielellään etukäteen, mitä kukin valitsi, mutta ilmoittaminen ei ole ehdoton vaatimus.
19.10. 20:23Kalvot on päivitetty, samoin esimerkkikoodit.
28.9. 13:30Hyvä artikkeli tyypillisistä koodausvirheistä. Kannattaa lukea.
28.9. 10:26Luentojen aiheista: tällä viikolla käyn läpi pääosin tiedostojen käsittelyn, ensi viikolle saattaa jäädä vielä hieman tiedostojen käsittelyä, mutta pääaihe on signaalit. Viides luento on sitten prosessien hallintaa ja kuudennelle luennolle jää sitten siirräntä.
28.9. 10:13Tuo mun kirjasto+Makefile esimerkki autotools-työkalujen kanssa on korjattu. Eilisessä versiossa oli pieni kauneusvirhe, joka kyllä tuotti ihan oikean ohjelman, mutta hieman hassusti. Pienenä tarkennuksena tuohon Miikan ohjeeseen, Miikan ohjeet aina tuohon autogen.sh-skriptin ajamiseen tarvitsee tehdä vain kerran, kun projekti on pääosin kasassa. Jatkossa riittää vain ajaa "./configure", joka tarkastaa käännösympäristön ja luo Makefile-tiedoston, ja lopuksi vain "Make", joka kääntää lopullisen ohjelman.
27.9. 18:19Kurssin tentti on 15.12. klo 13-16 T1:ssä
27.9. 18:19Sain hyvää palautetta kurssin ensimmäisen osan kalvoista. Uudet kalvot lisätty. Kiitos Miikalle, Hannu Peltolalle ja erityiskiitos Heikki Kallasjoelle.
27.9. 18:18Kurssin kirjasto- ja Makefile esimerkistä on tehty uusi versio, jossa on käytetty Miikan alla mainittua ohjetta.
27.9. 18:15Lisäsin koodiesimerkkeihin luennolla mainitsemani projektin, jossa on esimerkki Makefilesta ja kirjaston tekemisestä.
25.9. 18:10Miika Komu teki ohjeen autoconf-työkalujen käyttämiseen.
25.9. 18:10comp.lang.c Frequently Asked Questions sivustolla on hyvä lista kysymyksiä ja vastauksia C-kielen ominaisuuksiin. Kannattaa tutustua.
2.9. 17:05Kurssille on perustettu uusi uutisryhmä "opinnot.tik.unix" ja palvelinhan on otax.tky.hut.fi
30.8. 17:19Kurssille on nyt luotu toteutus webtopiin. Ilmoittautuminen alkaa 1.9. klo 09:00.
30.8. 13:03Ensimmäisen periodin kalvot on lisätty, samoin harjoitustyön ohje ja aiheita sekä esimerkkikoodeja luentoihin. Tenttipäivää en vielä tiedä, mutta se on toisen periodin päätteeksi. TOPI ilmoittautuminen avautuu, kunhan saan TOPIn toimimaan...;)
23.8. 16:52Pääosa päivämääristä pitäisi olla kohdallaan. Luentoja on siis 10 x 3h. Tentin päivämäärä ja paikka pitää lisätä kun saan tiedon.
9.8. 14:10Sivu luotu, pääosa sisällöstä on kirjattu (lisää infoa tulee myöhemmin). Päivämäärät ja materiaalit ovat vielä päivittämättä.

Kurssi

Opettaja: Professori Jukka Manner

Assistentti: Miika Komu (päävastuu harjoitustöiden ohjaus ja tarkastus, email miika ät iki.fi)

Luennot: Torstaisin 14.9. - 19.10. ja 2.11. - 7.12, kello 14-17 sali T2
(Luentoa ei ole torstaina 9.11. eikä näillä näkymin torstaina 30.11.)

Yleisesittely

Kurssillä opiskellaan ja harjoitellaan monimutkaisempien ja edistyneempien C-kielisten ohjelmistojen tekoa. Läpi käytäviä palveluja ovat mm. prosessin ympäristön hallinta, tiedostojen- ja hakemistojen käsittely, prosessien ja säikeiden luonti ja hallinta, ja prosessien välinen kommunikointi eri muodoissaan. Käytännössä kyse on yleisesti hyväksytyistä C-kielisistä funktiokutsuista ja niiden oikeaoppisesta käytöstä. Mitä nämä funktiokutsut sitten ovat?

The Single UNIX Specification, Version 3 (UNIX03) on rajapintamäärittely, jolla pyritään yhtenäistämään käyttöjärjestelmän palveluiden käyttö erilaisissa ohjelmissa. UNIX03 muodostaa määrittelyn, jonka tarkoitus on antaa tarkka muoto UNIX-nimiselle käyttöjärjestelmälle. UNIX03 on laaja määrittely ja tällä kurssilla keskitytään lähinnä osaan "System Interfaces" ja yhden koneen sisällä tapahtuviin temppuihin.

Kurssilla perehdytään UNIX03-määrittelyn alaisiin funktiokutsuihin ja opiskellaan niiden käyttöä omissa ohjelmissa. Linux-käyttöjärjestelmä toteuttaa UNIX03-määrittelyn lähes täysin. UNIX03 on jatkoa ns. X/Open- ja POSIX-standardeille.

Kurssille otetaan korkeintaan 50 opiskelijaa. Ilmoittautuminen TOPIn kautta.

Tavoitteet

Kurssin jälkeen opiskelijoiden pitäisi kyetä luomaan monipuolisia C-kielisiä ohjelmia Linux-ympäristössä. Opittuja toimintoja ovat ohjelman ympäristön hallinta, tiedostojen käsittely, signaalien käsittely, prosessien luonti ja hallinta, prosessien välinen kommunointi eri muodoissa sekä säikeiden luonti ja käsittely.

Esitietovaatimukset

Koska kurssilla pyritään keskittymään UNIX03-määrittelyn mukaisiin funktiokutsuihin ja niiden käyttöön, pitää opiskelijoiden hallita entuudestaan käyttöjärjestelmien toiminta ja C-ohjelmoinnin perusteet. Opiskelijalla pitää siis olla taustaosaaminen seuraavilta kolmelta alueelta:

Kursseja näistä aiheista ovat mm. T-106.430, T-106.4150 ja T-106.3100.

Sisältö

Kurssi on jaettu kahteen osaan:

Osa I (luennot 14.9. - 19.10):

Osa II (luennot 2.11. - 7.12.):

Kurssin suoritus

Kurssi muodostuu luennoista ja harjoituksista, sekä kurssikokeesta. Kurssilla ei ole tavallisia laskuharjoituksia.

Kurssi on jaettu kahteen osaan. Ensimmäinen osa sisältää kuusi luentokertaa ja toinen neljäa tai viisi. Kummankin osan jälkeen tehdään pienimuotoinen harjoitustyö. Harjoitustyönä palautetaan C-kielinen lähdekoodi sekä oppimispäiväkirja.

Kurssin maksimipisteet ovat 60 pistettä, joista 40 voi saada tentistä ja 20 pistettä harjoitustöistä (10 kummastakin harjoitustyöstä). Molemmat harjoitustyöt pitää suorittaa hyväksytysti, ts. vaikka saisi täydet pisteet tentistä, ei kurssia läpäise tekemättä molempia harjoitustöitä.

Kurssitentti on pe 15.12.2006 klo 13-16 salissa T1. Tarkista mahdolliset viime hetken muutokset vielä täältä.

Kurssia ei voi suorittaa pelkällä tentillä.

Harjoitukset

Harjoitus on C-kielinen ohjelma, jossa käytetään luennoilla esiteltyjä funktiokutsuja. Tarkoitus on harjoitella luentojen asioita omakohtaisesti. Harjoitukset tehdään yksin.

Harjoituksena tuotetun ohjelman pitää sisältää tietty määrä luennoiduista menetelmistä. Ohjelman ei varsinaisesti tarvitse tehdä mitään kovin järkevää, kunhan työssä on selvästi harjoiteltu luennoitujen funktoiden käyttöä (lue: "sika makee" ja monipuolinen ns. Hello World-sovellus kelpaa mainiosti).

Aiheita annetaan pääosin kurssin vetäjien toimesta. On myös mahdollista (ja itse asiassa kovin toivottavaa) toteuttaa oma aihe, kunhan siitä erikseen sovitaan, ja syntynyt ohjelma käyttää riittävässä määrin luennoituja menetelmiä.

Erikseen on myös mahdollista palauttaa aikaisemmin tehty ohjelma, joka täyttää edellämainitut kriteerit. Tällöin opiskelijan on osoitettava, että työ on hänen itsensä tekemä. Mukaan pitää kuitenkin kirjoittaa oppimispäiväkirja työstä.

Kustakin harjoitustyöstä palautetaan C-kielinen lähdekoodi sekä oppimispäiväkirja.

Arvostelu tapahtuu pääosin seuraavien periaatteiden mukaan:

Aikataulu

Luennot pidetään T-talon salissa T2 torstaisin 14-17.

Tarkkoja aiheita joka luennolle en halua veikata - katsotaan miten edistymme.

Harjoitustyöt pitää palauttaa seuraavasti:

  1. 1. harjoitustyö 12.11. mennessä
  2. 2. harjoitustyö 31.12. mennessä

Palautus sähköpostitse Jukalle ja Miikalle.

Luentojen materiaalia

Osa 1 (handouts)

Osa 1 ruudulla katsomista varten, ei tulostettavaksi

Osa 2 (handouts)

Osa 2 ruudulla katsomista varten, ei tulostettavaksi

Koodiesimerkit

Harjoitustyön ohje (v.1.0)

HT aiheita 1. ja 2. työhön (v.1.0)

Kirjallisuus

Kurssi kattaa laajan alueen ja yhtä kattavaa teosta ei liene olemassa. Mitään yksittäisiä kirjoja ei käydä läpi, mutta asioiden syvällisempään opiskeluun ja muutenkin hyväksi taustamateriaaliksi, sekä "omaa käsikirjastoa" ajatellen seuraavat teokset ovat hyviä valintoja.

W. Richard Stevens, Stephen A. Rago, Advanced Programming in the UNIX® Environment, 2nd Edition, Addison-Wesley, 2005.

Marc J. Rochkind, Advanced Unix Programming, Second Edition, Addison-Wesley, 2004.

Ensin mainittu on todellisen klassikon uusi painos. Ensimmäinen painos on vuodelta 1992 ja tänä vuonna on vihdoin kirja päivitetty, tosin ilman alkuperäistä kirjoittajaa, sillä Richard Stevens jätti tämän maailman muutama vuosi sitten. Jälkimmäinen kirja oli viime vuoden X/Open-sovellusohjelmointi kurssin oppikirjana ja sitä löytyy Kumpulan kirjastosta useampi kappale. Ne, jotka eivät missään nimessä halua ostaa kirjaa, käyttänevät kirjaston palveluja. Ne, joita aihe kiinnostaa ja, jotka uskovat tarvitsevansa tietoa jatkossa, suosittelen Stevensin kirjan hankkimista (nimim. "itsekin Stevensin kirjan hankin opiskeluaikoina").

Jokin kirja on hyvä olla, sillä kirjoista saa aina paremman kuvan siitä, miten funktioita oikeasti käytetään. Linuxin manuaalisivuista löytää kaikki funktiot ja niiden parametrit, mutta esimerkkejä koodista, jossa funktiota käytetään ei yleensä ole. Googlettamalla ei myös välttämättä löydä yhtä hyviä ja selkeitä esimerkkejä kuin kirjoista löytyy.

Alla on lueteltu muita mielenkiintoisia ja hyviä kirjoja hieman kurssia laajemmalta alueelta.

-Contact- -TML home 
page- -Search- -Suomeksi- -HUT home page-

Valid XHTML 1.0!

The responsible author of this page is Webmaster, <webmaster(at)tml.hut.fi>.
Page last updated on Fri, 16 Sep 2005 10:13:58 +0300.
URL: http://www.tml.tkk.fi/Opinnot/T-110.6120/2006/unso/