T-110.4100 Tietokoneverkot (4 op)

Harjoitustyöt


Harjoitustyön ohjeet ovat alla. Koska kyseessä on pitkä ja vaikeasti hahmotettava pätkä tekstiä, on aivan sivun alaosaan koottu tärkeimmät aikataulut ja osoitteet.

 

1. Yleistä harjoitustyöstä

Kurssiin kuuluu pakollisena osasuorituksena harjoitustyö, jossa opiskelija pääsee harjoittelemaan socket-ohjelmointia koodaamalla joko yhtä tai kahta protokollaa osaavan asiakasohjelman. Harjoitustyön suorittamiseen sisältyy kolme pakollista osaa. Ensimmäisessä osassa opiskelija tekee suunnitelman harjoitustyön toteuttamisesta ja palauttaa suunnitelmadokumentin määräaikaan mennessä. Toisessa osassa opiskelija koodaa asiakasohjelman ja dokumentoi työn. Koodi ja loppudokumentti palautetaan omaan määräaikaansa mennessä. Lopuksi opiskelija vielä esittelee työtään assistentille demotilaisuudessa.

Harjoitustyö tehdään itsenäisesti. Keskimääräiseltä opiskelijalta, joka toteuttaa molemmat protokollat, työtunteja kulunee noin 50. Hyväksyttyjä ohjelmointikieliä ovat Java, C ja C++. Muista vaihtoehdoista voi ja kannattaa neuvotella kurssin assistentin kanssa. Scheme, Python ja varmasti moni muukin ohjelmointikieli kelpaa, mikäli tarvittavat kääntäjät tai tulkit ovat valmiina asennettuna Niksulassa.
 
Huomaa! Harjoitustyön eräs tarkoitus on opetella socket-ohjelmointia, joten harjoitustyössä ei saa käyttää luokkia tai kirjastoja, jotka peittävät socket-rajapinnan. Myöskään esimerkiksi Dijkstran algoritmin valmiita toteutuksia ei saa käyttää. Jos olet aikeissa käyttää jotain kirjastoa tai vastaavaa etkä ole varma, onko se sallittu, tarkista asia kurssihenkilökunnalta kurssin uutisryhmässä.
 
Huomaa! Harjoitustyö demotaan Niksulan Paniikki-luokassa (luokka C106). Jos sinulla ei ole käyttöoikeutta Niksulaan (koneisiin, joiden nimet ovat muotoa *.cs.hut.fi), sinun täytyy hakea tunnusta. Hakemuslomakkeita saa Niksulan ylläpidon huoneesta TA217 (lisää tietoa Niksulan sivuilta http://www.niksula.hut.fi/faq/index.html).
 
Harjoitustyön aikataulu on Nopan Harjoitustyöt-sivulla. Mikäli tunnet tarvetta poiketa aikataulusta suuntaan tai toiseen, ota yhteyttä kurssihenkilökuntaan joko nyysseitse, irkitse (assistentti seuraa irkkiä aktiivisesti, erityinen irc-päivystysaika on tiistaisin klo 16-18) tai mikäli syyt ovat henkilökohtaisia, sähköpostitse.

2. Harjoitustyön kuvaus

Harjoitustyössä opiskelija toteuttaa asiakasohjelman, joka simuloi reitittimen toimintaa kiinteässä verkossa. Käytännössä harjoitus tehdään siten, että opiskelijat toteuttavat yhtä reititintä simuloivan asiakasohjelman, joka saa kurssin tarjoamalta palvelimelta kuvitteellisen reititysprotokollan mukaisia viestejä. Näiden viestien perusteella opiskelijan reititinsimulaattori muodostaa oman reititystaulunsa. Simulaattorin käyttämillä protokollilla on todellisessa käytössä olevat esikuvat (RIP ja OSPF), mutta tehtävää varten niitä on jonkin verran yksinkertaistettu.

Palvelin lähettää kahden eri protokollan mukaisia viestejä. Toinen on etäisyysvektoriprotokolla ja toinen linkkitilaprotokolla. Opiskelijan on toteutettava omaan asiakasohjelmaansa tuki ainakin toiselle näistä protokollista läpäistäkseen harjoitustyön. Hyvään arvosanaan (5) vaaditaan molemmat protokollat. Tarkemmat tiedot arvosanan määräytymisestä ovat arvosteluperusteissa.

  

3. Harjoitustyön palautuksista

Palautuksiin ja ohjelman testaamiseen käytetään oppimisympäristö Moodlea, joka vastaa osoitteessa http://hiljainen.cs.hut.fi/moodle. Moodleen on luotu opiskelijoille käyttäjätunnus (päivitetty 5.10.). Käyttäjätunnus on opiskelijan opiskelijanumero. Salasanan voi tilata Moodlen etusivulta sähköpostiinsa (Oodissa ilmoitettuun osoitteeseen). Joillain henkilöillä oli jo etukäteen tunnukset Moodleen, tällöin voi käyttää joko vanhaa tai mahdollista uutta tunnusta.

  
Moodlessa on kohdat suunnitelman ja loppudokumentin ja lähdekoodin palautusta varten. Lisäksi Moodle toimii käyttöliittymänä reititinsimulaattoriin. Simulaattoria voi pyytää luomaan erilaisia harjoitustopologioita. Moodlen kautta voi myös tarkistaa simulaattorin antaman palautteen, joskin saman palautteen saa myös suoraan TCP:n välityksellä. Myös suunnitelmasta mahdollisesti määrätty bumerangi palautetaan Moodleen.
 
Suunnitelman, loppuraportin ja yleensäkin kaiken saa palauttaa Moodleen niin monta kertaa kuin lystää, kuitenkin ennen määräaikaa. Myöhästyjiä katsotaan pahalla silmällä, mikä myös helposti näkyy arvosanassa.
 
Huomatkaa, että yhteyttä Moodleen ei oletusarvoisesti ole SSL-suojattu. Jos näet aiheesta painajaisia, voit ottaa suojatun yhteyden vaihtamalla protokollaksi https. Palvelimen varmennetta ei kuitenkaan ole allekirjoittanut mikään tunnettu varmentaja, joten joudut todennäköisesti säätämään selaintasi. Varmentamattoman varmenteen arvo on myös jossain määrin kyseenalainen.
 

4. Protokollat
 
Palvelin vastaa osoitteessa hiljainen.cs.hut.fi. Käytettävät portit ovat: etäisyysvektoriprotokolla 11041 (UDP), linkkitilaprotokolla 11042 (TCP), reititystaulun palautus 11043 (TCP).
 
Harjoitustyössä käytettävät protokollat ovat etäisyysvektori- ja linkkitilatyyppisiä. Näistä kerrotaan lisää kurssin lisämateriaalina annetussa "Routing in Fixed Internet Protocol Networks" (Lindqvist 2006). Alla kerrotaan enemmän harjoitustyössä käytettävien protokollien viestiformaateista. Ohjeessa esimerkkiviestit on selkeyden vuoksi ympäröity lainausmerkein, mutta ne eivät kuulu itse viestiin. Harjoituksessa reititinpalvelimella olevissa topologioissa reititin numero 1 tarkoittaa opiskelijan simuloimaa reititintä.
 
Etäisyysvektoriprotokolla
 
Viestintä palvelimen ja asiakasohjelman välillä perustuu UDP-protokollaan. Kaikki viestit ovat ASCII-koodattuja merkkijonoja. Käytetty protokolla on yksinkertainen etäisyysvektoriprotokolla. Tiedonsiirron luotettavuutta on parannettu käyttämällä stop-and-wait ARQ:a. Koska Niksulan verkko toimii yleensä luotettavasti, simuloi palvelin verkon epävarmuutta hukkaamalla osan saapuvista ja lähtevistä viesteistä. Kannattaa siis kiinnittää huomiota ARQ:n toteutukseen.
 
Viestintä palvelimen kanssa aloitetaan tunnistautumisviestillä. Tunnistautumisviesti on opiskelijanumero (esimerkiksi "10545A"). Palvelin vastaa tähän viestillä AUTH_OK s, missä s on arvottu sekvenssinumero väliltä [1..2^30]. Kaikissa palvelimen lähettämissä viesteissä on sekvenssinumero ja asiakasohjelman tulee vastata jokaiseen palvelimen lähettämään viestiin ACK s+1 -kuittauksella. Asiakasohjelma siis kertoo palvelimelle, mikä on seuraavan viestin numero. Esimerkki:
 
Asiakas lähettää tunnistautumisviestin:
 
12345A
 
Palvelin vastaa:
 
AUTH_OK 673947722
 
Asiakas kuittaa:
 
ACK 673947723
 
Tämän jälkeen palvelin aloittaa reititysdatan lähettämisen. Viestin muoto on (ilman lainausmerkkejä) "[i, n, d, s]", missä i on verkkoliitännän numero, n on reitittimen "nimi", d on etäisyys reitittimeen n ja s edelleen sekvenssinumero. Kaikki nämä ovat kokonaislukuja ASCII-koodattuina merkkijonoina. Kukin nelikko saapuu omana UDP-pakettinaan. Sekvenssinumeroa kasvatetaan yhdellä jokaisen paketin lähetyksen jälkeen.
 
Palvelin ei lähetä uutta pakettia, ennen kuin asiakas on kuitannut edellisen vastaanotetuksi. Mikäli palvelin ei saa kuittausta riittävän nopeasti, se lähettää paketin uudelleen. Mikäli asiakas vastaanottaa vanhan paketin (eli jo kertaalleen vastaanotetun paketin), tulee asiakkaan vastata ACK s -viestillä, missä s on asiakkaan odottama sekvenssinumero, riippumatta vastaanotetun paketin sekvenssinumerosta.
 
Palvelin uudelleenlähettää viestin sekunnin välein, mikäli se ei saa asiakasohjelmalta kuittausta. Viestien lähettäminen lopetetaan 15 sekuntia viimeisen asiakkaalta tulleen kuittauksen jälkeen.
 
Etäisyysvektoriprotokollaa käytettäessä oletetaan, että yksi reitittimien välinen linkki vastaa etäisyyttä yksi. Jos siis johonkin noodiin päästäkseen on kuljettava yhden muun noodin (reitittimen) kautta, on etäisyys kaksi. Jos kohteeseen on useampia yhtä hyviä reittejä, tarvitsee muodostettuun reititystauluun kirjata vain yksi niistä. Reititystaulun laskemiseen saa apua kurssin opetusmonisteesta (Lindqvist: "Routing in Fixed Internet Protocol Networks").
 
Kannattaa huomata, että palvelin lähettää viestejä paljon enemmän, kuin reititystaulun muodostaminen edellyttää. Kaikkia viestejä ei ole pakko vastaanottaa. Valmis reititystaulu lähetetään palvelimelle jäljempänä kuvattua palautusprotokollaa käyttäen.
 
Linkkitilaprotokolla
 
Linkkitilaprotokollaa käytettäessä palvelimen kanssa viestitään TCP-protokollalla. Erottimena eri viestien välissä käytetään rivinvaihtoa.
 
Ensimmäisenä täytyy palvelimelle tässäkin tapauksessa lähettää tunnistautumisviesti. Se on samaa muotoa kuin etäisyysvektoriprotokollan tapauksessa eli opiskelijanumero. Jos tunnistautuminen onnistuu, palvelin vastaa tähän viestillä "AUTH_OK".
 
Ensimmäinen varsinaiseen protokollaan liittyvä viesti on HELLO, jonka avulla selvitetään reitittimen naapurit. Oikean reititysprotokollan ollessa kyseessä tämä HELLO-viesti lähetettäisiin kaikkien liitäntöjen kautta naapureille. Tässä tapauksessa lähetetään viesti ainoastaan kurssin palvelimelle. Viesti on yksinkertaisesti muotoa "HELLO". Palvelin simuloi kaikkia naapureita ja lähettää näiden vastausviestit, jotka ovat muotoa "HELLO, n, i", jossa n on vastauksen lähettäneen naapurireitittimen nimi, ja i on sen verkkoliitännän numero, jonka kautta viesti saapui. Kuten etäisyysvektoriprotokollassa, myös linkkitilaprotokollassa reitittimien nimet ovat kokonaislukuja ja opiskelijan simuloiman reitittimen numero on 1. Esimerkki palvelimen vastausviestistä: "HELLO, 3, 2". Kun kaikkien naapureiden tiedot on lähetetty, palvelin lähettää vielä lopetusviestin "NOMORENEIGHBORS, 0".
 
Tämän jälkeen selvitetään etäisyys HELLO-viestien avulla tunnistettuihin naapureihin ECHO-viestillä (merkkijono "ECHO"). Vastausviestit ovat muotoa "ECHOREPLY, n, d", jossa n ja d ovat kokonaislukuja. N tarkoittaa naapurin nimeä ja d etäisyyttä kyseiseen naapuriin. Esimerkki palvelimen vastausviestistä: "ECHOREPLY, 3, 2". Viestejä tulee yhtä monta kuin on naapureitakin. Periaatteessa ECHO-viesti lähetettäisiin kullekin naapurille, mutta nyt vain simulaatiopalvelimelle.
 
Naapureiden selvityksen jälkeen kootaan reititystaulu. Linkkitilaprotokollassa reitittimet välittävät tietoa linkeistään INFORM-viestien avulla. Ne ovat muotoa "INFORM, nr, nn, d", jossa nr on tietoa lähettävän reitittimen nimi, ja nn tämän naapurin nimi. d on näiden kahden välinen etäisyys. Palvelin vastaa sille lähetettyyn INFORM-viestiin (Palvelimelle lähetettäessä pelkkä "INFORM" riittää) lähettämällä joukon INFORM-viestejä takaisin asiakasohjelmalle. Esimerkki palvelimen vastausviestistä: "INFORM, 3, 5, 2". Näiden viestien perusteella asiakasohjelma muodostaa reititystaulun käyttäen Dijkstran algoritmia. Lähetettyään kaiken datan palvelin sulkee yhteyden.
 
Muista lisätä jokaisen viestin perään rivinvaihtomerkki. Jos palvelin vastaanottaa tuntemattoman tai väärinmuodostetun viestin, se vastaa lähettämällä ERROR-viestin (merkkijono "ERROR"). Mikäli palvelin ei saa mitään palautetta minuuttiin, se sulkee yhteyden. Jos johonkin kohteeseen on useampia yhtä hyviä reittejä eri verkkoliitäntöjen kautta, täytyy kaikki vaihtoehdot kirjata reititystauluun. Huomaa, että vaatimus poikkeaa etäisyysvektoriprotokollasta.
 
Reititystaulua voi päivittää jokaisen INFORM-viestin jälkeen ja esittää päivittyminen käyttöliittymässä virheiden etsinnän helpottamiseksi.

Reititystaulun lähettäminen palvelimelle

 
Kun reititystaulu on saatu muodostettua, se lähetetään palvelimelle arvosteltavaksi (katso alempaa testausohjeita). Asiakas ottaa TCP-yhteyden palvelimelle ja lähettää ensin tutun tunnistautumisviestin eli opiskelijanumeron (Päivitys 20.11.: kuten linkkitilaprotokollan tapauksessa, erottimena viestin välillä toimii rivinvaihto). Palvelin vastaa "AUTH_OK". Tämän jälkeen asiakas lähettää reititystaulun seuraavassa muodossa:
 
n,d,i;n,d,i;...;n,d,i;
 
n on kohteen nimi (numero), d on etäisyys ja i sen verkkoliitännän numero, jonka kautta reitti kohteeseen kulkee. Reititystaulun "rivit" päätetään puolipisteeseen (;). Taulussa ei saa olla välilyöntejä, sarkaimia, rivinvaihtoja tai muitakaan ylimääräisiä merkkejä. Kun taulu on lähetetty, palvelin vastaa joko "SUBMISSION OK, palaute" tai "SUBMISSION FAILED, syy". Tämän jälkeen palvelin katkaisee yhteyden. Huomaa, että "SUBMISSION OK" viittaa vain palautuksen muotoon. Vasta palaute kertoo, oliko reititystaulu oikea.

 

5. Ensimmäinen palautettava kokonaisuus: Suunnitelma

Aluksi harjoitustyöstä tehdään suunnitelma, jossa opiskelija selvittää, kuinka ohjelmointityö käytännössä toteutetaan. Suunnitelman tulisi kattaa jäljempänä olevassa listassa luetellut asiat. On suotavaa käyttää samaa ryhmittelyä myös dokumentissa. Yleisiä ohjeita raporttien kirjoittamiseen on yleisissä ohjeissa (Nopassa Muu materiaali -sivulla). Suunnitelman ja loppuraportin voi kirjoittaa suomeksi, ruotsiksi tai englanniksi.

 
Jos et ole vielä tutustunut Latexin käyttöön, nyt on hyvä tilaisuus harjoitella sen käyttöä. Hyvä tapa aloittaa on tutustua vaikkapa Latexin lyhyeen esittelyyn (saatavilla myös englanniksi). Tarjolla on myös valmis Latex-pohja (sivun alaosassa viimeisenä "deadlinena"), jota voi käyttää suunnitelman ja raportin pohjana. Tarjotun pohjan tai Latexin käyttäminen ei ole pakollista, mutta suositeltavaa.

 
Dokumentin ensimmäisellä sivulla on oltava opiskelijan nimi, opiskelijanumero, sähköpostiosoite, kurssin nimi ja koodi, päivämäärä ja dokumentin otsikko "Harjoitustyön suunnitelma". 

  1. Johdanto: Mitä ollaan tekemässä ja miksi? Mikä on työn tarkoitus? 
  2. Yleiskuva: Yleistason kuvaus toteutettavista ominaisuuksista. Valitut työkalut ja työtavat (huomioi sallitut ohjelmointikielet) sekä perustelut valinnoille.
  3. Resurssit: Viikoittainen suunnitelma käytettävissä olevista työtunneista: Kuinka paljon aikaa kului ensimmäiseen osaan ja kuinka paljon aikaa suunnittelet käyttäväsi toisen osan aikana. Arvioi myös työtuntien jakautuminen erilaisten tehtävien kesken (esimerkiksi aiheen opiskelu, suunnittelu, koodaus, debuggaus, testaus, dokumentointi). Muista, että kurssilla oletetaan harjoitustyöhön käytettävän noin 50 tuntia. Suunnittele hyvin, sillä se on opettavaista.
  4. Toiminnallisuus ja arkkitehtuurin kuvaus: Yleiskuvaus ohjelman rakenteesta. Sanallinen kuvaus ohjelman rakenteesta ja toiminnasta riittää. Voit halutessasi lisätä esimerkiksi luokkakaavion tai vastaavan. Palvelimen ja asiakasohjelman viestinvaihto on sanallisen selityksen lisäksi hyvä kuvata esimerkiksi kaaviolla tai piirroksella. Selitä myös tärkeimmät algoritmit ja käytettävät luokat, kirjastot, funktiot ja vastaavat. Hyvin suunniteltu modulaarinen rakenne helpottaa sekä omaa toteutustyötäsi että työn tarkistamista.
  5. Viitteet: Lista käytetyistä lähteistä, esimerkiksi ohjelmointioppaista. Lue ohjeet ulkopuolisiin lähteisiin viittaamisesta yleisistä ohjeista (Nopassa Muu materiaali -sivulla).

Suunnitelmasta tulisi käydä ilmi, että opiskelija on tutustunut aiheeseen ja on muodostanut itselleen kuvan ongelmasta ja sen ratkaisemisesta. Suunnitelman ei kuitenkaan tarvitse olla identtinen lopullisen toteutuksen kanssa. Muutokset on dokumentoitava loppuraporttiin.

 

Viimeinen mahdollinen ajankohta suunnitelman palautukselle on 15.10.2009 klo 12 keskipäivällä. Suunnitelma palautetaan Moodleen PDF-muodossa. Kurssin assistentti antaa suunnitelmista palautetta.


6. Toinen palautettava kokonaisuus: Toteutus


Toisessa osassa toteutetaan tehtävä määritelmän ja suunnitelman mukaisesti. Työ dokumentoidaan loppuraportissa, joka palautetaan tarkistettavaksi. Raportti perustuu suunnitelmaan ja siinä on käsiteltävä samat asiat kuin suunnitelmadokumentissa. Lisäksi loppuraportissa on mainittava suunnitelmaan tehdyt muutokset perusteluineen ja annettava palautetta harjoitustyöstä. Palautteen tarkempi muoto kerrotaan alla. Tuntikirjanpito on päivitettävä vastaamaan todellisia käytettyjä tunteja. Dokumentista tulee myös olla ohjeet ohjelman kääntämiseen ja ajamiseen Niksulan perusympäristössä eli ilman opiskelijakohtaisia ympäristövirityksiä tai riippuvuuksia esimerkiksi Eclipseen.

Anna loppuraportissa palautetta harjoitustyöhön vastaamalla erillisessä osiossa seuraaviin, numeroituihin kohtiin:

 

1. Harjoitustyön arviointi arvosanoin:

Arvioi seuraavia asioita asteikolla 1 "Erittäin huono" - 5 "Erittäin hyvä".Arvosana 3 on neutraali, "ei hyvä eikä huono".

 
a. Yleisarvosana harjoitustyöstä

b. Harjoitustyön ohjeet

c. Moodle (toimivuus, soveltuvuus käyttötarkoitukseen, käyttömukavuus ja niin edelleen)

d. Simulaatiopalvelin (vakaus, toimivuus, palautteen hyödyllisyys jne.)


2. Harjoitustyön arviointi arvosanoin, osa II:

Arvioi seuraavia asioita asteikolla 1 "Täysin eri mieltä" - 5 "Täysin samaa mieltä". Arvosana 3 vastaa mielipidettä "En osaa sanoa".

a. Harjoitustyö oli hyödyllinen

b. Harjoitustyön vaikeustaso oli sopiva

c. Harjoitustyön työmäärä vastasi odotettua (molempien protokollien toteutus noin 50 tuntia)


3. Miten harjoitustyön käytännön järjestelyt toimivat? Mikä oli hyvää, mikä huonoa? Perustele vastauksesi.


4. Miten kehittäisit harjoitustyötä?


5. Vapaa sana:

Tässä voit antaa yleistä palautetta kaikesta siitä, mitä ei edellä käsitelty. Voit myös tässä tarkentaa numeerisia vastauksiasi aiempiin kysymyksiin, mikäli et ole varma mitä kysymyksellä tarkoitetaan tai mikäli tarjotut vaihtoehdot eivät olleet mielestäsi riittävät.

 

Huomaathan, että tämä palaute on tarkoitettu harjoitustyön kehittämistä varten; varsinainen kurssipalaute kerätään erikseen!


Voit käyttää samaa Latex-pohjaa kuin suunnitelman teossa, mutta muista muuttaa otsikko muotoon "Harjoitustyön loppuraportti".
 
Harjoitustyön lähdekoodi on dokumentoitava kunnolla. Tämä tarkoittaa sitä, että ulkopuolisenkin on pystyttävä lukemaan ja ymmärtämään koodia ilman arvailuja. Jokaisen tiedoston alussa on oltava tekijän nimi. Ideoita ja pieniä osia koodista on sallittua lainata muualta, mutta tämä täytyy mainita sekä koodissa että loppuraportissa (oikeat viittauskäytännöt!). Liian laaja lainatun materiaalin käyttö tai sen dokumentoimatta jättäminen voi johtaa harjoitustyön hylkäämiseen ja vilppiepäilyyn.
 
Toteutusvaihetta varten kurssi tarjoaa testipalvelimen, joka simuloi opiskelijan luoman reitittimen verkkoyhteyksiä. Palvelin välittää verkkotopologiaa kuvaavaa dataa opiskelijan Moodlessa tekemiä valintoja noudattaen. Harjoitustyötä palautettaessa ja demottaessa käytetään Moodlessa generoituja satunnaisia topologioita.

 

7. Palautuskäytännöt
 
Osien 1 ja 2 palautuksien takarajat on mainittu sivun lopussa olevassa aikataulussa.
 
Osa 1:
 
Harjoitustyön suunnitelma palautetaan PDF-muodossa Moodleen. Moodlessa on tätä varten oma kohtansa. Anna tiedostolle nimeksi opiskelijanumerosi, alaviiva ja sana suunnitelma, esimerkiksi 10545A_suunnitelma.pdf.
 
Osa 2:
 
Toisessa osassa ohjelma testataan ja arvostellaan automaattisesti Moodlen avulla. Moodleen palautetaan myös lähdekoodit ja loppuraportti, näistä jälkimmäinen PDF-muodossa. Työn toiminta myös esitellään demotilaisuudessa assistentille.
 
Moodleen palautetaan yksi tar.gz-tiedosto, joka sisältää harjoitustyön lähdekoodin ja loppuraportin. Nimeä tiedosto opiskelijanumerosi mukaan (esimerkiksi 10545A.tar.gz). Tiedoston tulee purkautua komennolla tar xzvf <tiedoston nimi> hakemistoon, jonka nimi on opiskelijanumerosi. Esimerkiksi:
 
tar xzvf 10545A.tar.gz
 
Raportin pitää olla pdf-muodossa ja sen nimen tulee olla opiskelijanumerosi, alaviiva ja sana raportti (esimerkiksi 10545A_raportti.pdf).
 
Palautuspaketin tekeminen onnistuu esimerkiksi seuraavasti:
 

  • Luo palautushakemisto, joka on nimetty opiskelijanumerosi mukaan (esimerkiksi 10545A)
  • Siirrä kaikki mitä haluat palauttaa (lähdekoodi, loppuraportti, ASCII-lehmät) palautushakemistoon
  • Varmista, että palautushakemisto sisältää kaiken, mitä pitääkin
  • Varmista, että olet samassa hakemistossa, kuin palautushakemisto (ei siis kuitenkaan palautushakemistossa)
  • Komenna

 
      tar cvzf <opiskelijanumerosi>.tar.gz <opiskelijanumerosi>
 
      missä opiskelijanumeron paikalle kirjoitat oman opiskelijanumerosi, esimerkiksi
 
      tar cvzf 10545A.tar.gz 10545A
 
HUOM! Jos pelkkä "tar" ei tue gzip-pakkausta ("z"-optio), kokeile käyttää GNUn tar-ohjelmaa komennolla "gtar" tai pudota komennosta z-parametri pois ja käytä gzip-ohjelmaa syntyvän .tar-tiedoston pakkaamiseen.
 
Demotilaisuuteen varataan aika myöhemmin ilmoitettavalla tavalla. Muista varata aika, jotta pääset esittelemään työsi! Huomaa kuitenkin, että hyväksytty automaattiarvostelu Moodlessa ja esittely demotilaisuudessa ei vielä tarkoita välttämättä harjoitustyön hyväksymistä tai parasta arvosanaa. Harjoitustyö ja loppuraportti käydään läpi vielä demotilaisuuden jälkeen.
 
Demotilaisuudessa opiskelija saa käyttöönsä Niksulan kaksoiseläin-koneen ja palauttamansa tar.gz-paketin. Opiskelija purkaa paketin ja kääntää ohjelmansa. Tämän jälkeen opiskelija ajaa ohjelmansa assistentin antamaa opiskelijanumeroa käyttäen. Lopuksi opiskelija esittelee ohjelmansa arkkitehtuuria pääpiirteissään ja vastaa assistentin kysymyksiin. 

 

8. Harjoitustyön testaaminen ja vaatimukset tiivistetysti
 
Harjoitustyön testaamiseen tarvitaan Moodlea. Kun koodisi on mielestäsi testikunnossa, klikkaa kurssin Moodle-sivulta harjoitusta nimeltä Ohjelmointiharjoitus. Avautuvalta sivulta voit valita joko harjoittelun (Practice) tai arvostelun (Submit For Grading).
 
Harjoittelumoodissa voit pyytää palvelinta luomaan haluamasikaltaisen testitopologian. Kun olet tyytyväinen tarjottuun topologiaan, voit ajaa ohjelmasi normaalisti. Palvelin osaa nyt vastata viesteihin. Ajon loputtua pääset tarkastelemaan tulosta klikkaamalla Show Result -nappia. Samalla tulos tallentuu Moodlen tietokantaan.
 
Työn arvostelu sujuu samaan tapaan, mutta mahdollisuutta topologian vaihtamiseen ei anneta. Arvostelussa käytetään todennäköisesti 55 noodin ja kolmen naapurin topologiaa (tätä voidaan muuttaa kurssin kuluessa).
 
Vaatimukset
 
Ohjelman täytyy täyttää seuraavat vaatimukset:
 

  • Toteuttaa jompikumpi (arvosana korkeintaan kolme) tai molemmat (arvosana korkeintaan viisi) reititysprotokollat toimivasti
  • Kyetä lähettämään reititystaulu palvelimelle palautusprotokollan mukaisesti
  • Näyttää reititystaulu helppolukuisessa muodossa ennen lähettämistä

 
Harjoitustyön arvostelun helpottamiseksi:
 

  • Opiskelijanumero täytyy voida antaa ohjelmalle ensimmäisenä komentoriviparametrina

 
Huomaa myös:
 

  • Reititystaulussa tulee olla reitti myös reitittimeen itseensä
  • Etäisyysvektoriprotokollaa käytettäessä mikä tahansa paketti, myös ensimmäinen, voi hukkua
  • Linkkitilaprotokollaa käytettäessä vaaditaan kaikki eri verkkoliitäntöjen kautta kulkevat saman pituiset reitit
  • Dijkstran algoritmin perustoteutus antaa vain yhden reitin kuhunkin reitittimeen
  • Suunnitelmadokumentin ja loppuraportin ohjeistus omissa tiedostoissaan

 

9. Arvostelu
 
Osa 1:
 
Ensimmäinen osa arvostellaan asteikolla hyväksytty - hylätty. Joissain tapauksissa assistentit voivat myös antaa muutaman päivän aikaa korjata muuten hylätyksi tulevaa suunnitelmaa. Korjausmahdollisuuden voivat saada suunnitelmat, joissa on selkeästi yritystä, mutta jokin oleellinen asia on ymmärretty väärin. Huomio! Harjoitustyön (ja kurssin) läpäisemiseksi ensimmäinen osa on läpäistävä hyväksytysti. Tämän takia on tärkeää panostaa harjoitustyöhön riittävän aikaisin.
 
Osa 2:
 
Toisen osa arvostellaan asteikolla 0-5. Nolla tarkoittaa hylättyä. Kolmosen saa toteuttamalla toisen protokollista, viitosen toteuttamalla molemmat. Jos dokumentoinnissa tai koodissa on puutteita, voidaan arvosanaa pudottaa tai jopa hylätä työ.
 
Toisessa osassa ei ole mahdollista saada korjausaikaa kuten suunnitelmaosassa, mutta periaatteessa demotilaisuuden aikana voi korjata pieniä bugeja. Moodlen automaattiarvosteluun täytyy kuitenkin palauttaa toimiva versio määräaikaan mennessä (= saada 3 tai 5 pistettä Moodlen arvostelussa). Demo kestää maksimissaan 10 minuuttia.
 
Harjoitustyö voidaan hylätä jo demotilaisuudessa, jos sen kohdalla pätee jokin seuraavista:
 

  • Ohjelma ei toimi demotilaisuudessa
  • Ohjelma ei täytä vaatimuksia
  • Loppuraportissa on vakavia puutteita

 
Huomaa, että hyväksytty palautus Moodleen ja hyvin sujunut demo ei vielä takaa koko harjoitustyön hyväksymistä. Demon jälkeen palautus tarkistetaan ja arvostellaan.

 


 

 

Harjoitustyön aikataulu: (päivitetty vuoden 2009 tiedot)

  • Luento 1.10.2009 klo 9:15 - 10:00
  • Osa 1: Suunnitelma - määräaika to 15.10.2009 klo 12:00 (keskipäivä) 
  • Osa 2: Toteutus - määräaika to 26.11.2009 klo 12:00 (keskipäivä)
  • Demot: Noin 30.11.-4.12.2009

 

Harjoitustyön ohjeet on nyt (30.9.) julkaistu

Päivitys 5.10.: Moodle-tunnukset luotu kurssille ilmoittautuneille.

Päivitys 17.11.: Harjoitustyöstä annettavaa palautetta täsmennetty.

 

Mikäli sinulle jäi kysyttävää harjoitustyöstä ohjeet luettuasi, älä epäröi ottaa kurssihenkilökuntaan yhteyttä (kts. sivu Yhteydenotot ja keskustelut).

 

Moodle-palvelimen sijainti:

http://hiljainen.cs.hut.fi/moodle.

Päivitys 15.10.: Simulaatiopalvelin pyöri nyt osoitteessa hiljainen.cs.hut.fi ja käytettävät portit ovat:

  • etäisyysvektoriprotokollalle 11041 (UDP)
  • linkkitilaprotokollalle 11042 (TCP)
  • reititystaulun palautukselle 11043 (TCP)

 


DL
Otsikko
15.10.2009 klo 12.00 Harjoitustyön suunnitelma
Suunnitelman määräaika (huom! keskipäivä). Tarkemmat tiedot myöhemmin.
26.11.2009 klo 12.00 Harjoitustyön palautus
Harjoitustyön palautuksen määräaika (huom. keskipäivä!). Lisätietoja myöhemmin
31.12.2009 klo 12 Latex-pohja suunnitelmaa ja dokumentointia varten
Oheisessa zip-paketissa on harjoitustyön ohjeet useaan tekstitiedostoon jaoteltuna. Tiedostot on numeroitu suositellussa tutustumisjärjestyksessä. Paketin saa purettua Niksulan ja ATK-keskuksen unix-koneilla unzip-komennolla ja Windows-koneilla suoraan ilman erillisiä ohjelmia. Ohjeita päivitetty 13.10.2008. Lisätty suunnitelman pohja.
Päivitetty 30.11.2009 klo 01.12