Harjoitustehtävät, viikko 7

Demotilaisuus tiistaina 26.10.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.

Ohjelmointitehtävässä saat, ellei muuta ole tehtävässä sanottu, käyttää haluamaasi ohjelmointikieltä, kunhan ohjelman testaaminen demoluokassa onnistuu (joko siten, että ohjelman tulkki tai kääntäjä löytyy Jyunetin mikroista, demoamalla oman läppärin avulla taikka sopimalla erityisjärjestelystä).

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. Pitäisikö samastus ottaa käyttöön (valinnaisena) parametrinvälityskeinona myös tavaonmaisissa kielissä? Perustele.
  2. Onko seuraavilla termijoukoilla samastin, ja jos on, mikä on niiden yleisin samastin? Jos samastinta ei ole, miksi ei?
    1. f(a,b,g(X)) ja f(a,b,Y)
    2. f(a,b,g(X)) ja g(a,b,f(X))
    3. f(a,b,g(X)) ja f(a,b,X)
    4. f(g(a),b,g(X)) ja f(X, b, g(3))
    5. f(g(a)) ja f(g(X)) ja f(Y)
    6. f(g(a),b,g(X)) ja f(X, b, g(g(a)))
  3. Ovatko seuraavat aritmetiikalla laajennetun yksinkertaisesti tyypitetyn lambda-kielen termit hyvin tyypitettyjä? Niistä, jotka ovat, selvitä kunkin tyyppi. Piirrä kustakin päättelypuu.
    1. λx : Num · x
    2. λx : Num · xx
    3. λx : Num → Num · x - x
    4. (λx : Num · λy : Num · x * y) 2
  4. An experiment about static and dynamic type systems: doubts about the positive impact of static type systems on development time:
    1. Minkälaista tutkimusta artikkelissa raportoidaan?
    2. Onko tutkimus mielestäsi siten laadittu, että se tuottaa luotettavia vastauksia?
    3. Mikä oli artikkelin johtopäätös? Onko se mielestäsi uskottava?
    4. Pitäisikö artikkelin tuloksella olla vaikutusta jatkossa ohjelmointikielen suunnitteluun, ja jos pitäisi, mikälaista?

Lisäksi bonustehtäviä:

  1. Tee vuoden 2002 Prolog-tehtävälapun tehtävät 1–11.
  2. Kirjoita tyyppitarkastin yksinkertaisesti tyypitetylle lambda-kielelle, jota on laajennettu aritmetiikalla.
  3. Laajenna edellisen tehtävän vastauksesi tulkiksi.

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

Valid XHTML 1.0!