Harjoitustehtävät, viikko 8

Demotilaisuus tiistaina 2.11.2010 kello 12 (Ag Beeta)

Demohyvitys: 50 % tehty korottaa arvosanaa yhdellä, 80 % tehty korottaa kahdella. Mikäli 25 % tehty, tentaattori valitsee tenttiä tai esseetä arvostellessaan kahden arvolauseen välillä epäröidessään automaattisesti sen korkeamman. Demoprosentti lasketaan siten, että bonustehtävät otetaan huomioon tehtyjen tehtävien määrää laskettaessa mutta ei tehtävien kokonaismäärää laskettaessa. Näin bonustehtäviä tekemällä on mahdollista saavuttaa yli 100 % tulos. Oman demoprosenttitilanteen voi tarkistaa Korpista.

Mikäli sinulla on hyväksyttävä este olla pois demotilaisuudesta, sovi vaihtoehtoisesta palautustavasta hyvissä ajoin etukäteen. Yllättävän ylivoimaisen esteen (force majeure) sattuessa voidaan sopia jälkikäteen (viipymättä esteen poistuttua) muusta tavasta korvata demokerta.

Artikkelitehtävässä lue artikkeli ja valmistaudu keskustelemaan siitä demotilaisuudessa. Varaudu ainakin vastaamaan annettuihin kysymyksiin. Huomaa, että useimmat artikkelilinkit toimivat vain yliopiston verkossa tahi yliopiston proxyn tai VPN:n kautta.

  1. Olisiko a) monikko tai b) variantti hyödyllinen lisä oliokieliin? Perustele.
  2. Tarkastellaan yksinkertaisesti tyypitettyä lambda-kieltä laajennettuna aritmetiikalla ja osoittimilla (PDF, LaTeX). Ovatko seuraavat lausekkeet hyvin tyypitettyjä? Jos ovat, laske niiden arvo.
    1. (λ x : Num* · x := *x+1;x) (new 1)
    2. (λ x : Num* · x := x+1;x) (new 1)
    3. (λ x : Num* · x := (*x+1;x);x) (new 1)
    4. (λ x : Num* · x := (*x+1;*x);x) (new 1)
  3. Kirjoita yksinkertaisesti tyypitetyssä lambda kielessä, jota on laajennettu aritmetiikalla, tietueilla, varianteilla, letrec-lauseilla ja μ-tyypeillä luentomonisteissa esitetyllä tavalla, seuraavat funktiot:
    1. Funktio, joka laskee lukulistan (NumList) alkioiden tulon.
    2. Funktio, joka palauttaa lukulistan (NumList) pituuden.
    3. Funktio, joka palauttaa lukulistan (NumList) viimeisen alkion.
    4. Funktio, joka luo parametrina annetun pituisen Fibonacci-lukujen listan (NumList).
  4. Recursive data structures:
    1. Mikä on artikkelin pääväite?
    2. Mitä rekursiivisten tietorakenteiden käsittelyvälineitä artikkeli esittelee?
    3. Näkyvätkö, ja pitäisikö näkyä, artikkelin ajatukset nykykielissä?

Lisäksi bonustehtäviä:

  1. Links: Web programming without tiers:
    1. Mikä web-ohjelmoinnin vakava ongelma Links-kielellä pyritään ratkaisemaan?
    2. Onko Links-kielen tapa sisällyttää XML:ää osaksi kieltä mielestäsi onnistunut? (Vertaa esim. PHP:hen.)
    3. Miten web-ohjelmoinnin istunto-ongelma (web-sivun sisältö ei normaalisti riipu siitä, miltä sivulta käyttäjä on sivulle tullut) on ratkaistu Links-kielessä?
    4. Kuinka hyvin Links mielestäsi ratkaisee ensimmäisessä kysymyksessä tarkoitetun ongelman?
  2. Advanced exception handling mechanisms:
    1. Minkälaisia kysymyksiä joudutaan pohtimaan poikkeustenkäsittelyominaisuuksia suunniteltaessa?
    2. Miten artikkelin ajatukset näkyvät tuntemissasi kielissä?
  3. Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs:
    1. Mikä on artikkelin pääväite?
    2. Minkälaista ohjelmointityyliä kirjoittaja suosittelee?
    3. Näkyvätkö, ja pitäisikö näkyä, artikkelin ajatukset nykykielissä?

2010-10-26 Antti-Juhani Kaijanaho <antti-juhani.kaijanaho@mit.jyu.fi>

Valid XHTML 1.0!