Make me a sandwitch

Tapaus 2:n perusteella syntyi oppimistavoitteena tehdä voileiväteko-ohjeet aivottomalle ohjelmalle (=pikkuveljelle?). Tässä tulos:

 

Esitietovaatimukset:
– Tietää mikä on:
keittiö, jääkaappi, leipä, levite, leikkele, juusto, vihannes, veitsi
– Osaa:
kävellä, tunnistaa asioita, etsiä, leikata, levittää, syödä

Ohje:

1. Mene keittiöön (Tunnistaa keittiön, osaa kulkea sinne)
2. Avaa astiakaappi

– Ota lautanen (Tunnistaa lautasen)

– Ota veitsi ja juustohöylä

– Vie lautanen, veitsi ja juustohöylä pöydälle (Tietää mikä on pöytä, osaa kulkea, laskea lautasen)

3. Leipähylly
IF leipää on

  a) – Leivän valikointi (Tietää mikä on leipä, laadulla ei väliä)

        – laske pöydälle
ELSE leipää ei ole

   b)   –  odota aikamäärä x, palaa kohtaan yksi

4. jääkaappi
IF tuotteita on

a) – levitteen, leikkeleiden, juuston, kurkun valikointi

    – laske pöydälle
ELSE tuotteita ei ole

b)  – älä syö, odota aikamäärä x, palaa kohtaan yksi

5. levitteen levitys
– ota levitepaketti
– avaa levitepaketti
– ota veitsi
– ota veitsellä levitettä
– levitä veitsellä levitettä koko leipäpalan päälle n. 2mm kerros
6. kinkku
– ota kinkkupaketti
– avaa paketti
– ota yksi kappale leikkelettä
– aseta leivälle
7. juusto
– ota juustopaketti
– avaa paketti
IF juusto viipaleina

a) – ota yksi kappale juustoviipaleita

        – aseta leivälle
ELSE juusto palana

b) ota juusto ulos paketista

– ota juustohöylä

        – höylää juustohöylällä viipale
– aseta leivän päälle
8. kurkku
– ota kurkku
– ota veitsi
– leikkaa veitsellä palasia
– aseta palaset leivän päälle
9. istuminen pöydän ääreen tuolille
– ota leipä
– siirrä lautaselle

– istu tuolille pöydän viereen

10. syönti
– ota leipä lautaselta
– laita osittain suuhusi
– puraise pala irti
– pureskele
– niele
– toista

Mainokset

Tapaus 2 purkaminen

Edellisellä kerralla olimme määritelleet jokaiselle parille suunniteltavan ”ohjelman”. Suunnitteluun käytetty runsas aika toi tulosta ja ohjelmat olivat toimivia ja esitietovaatimukset ainakin osittain pitäviä.

Turtles-ohjelmasta totesimme seuraavaa: epäonnistumisen mahdollisuus huomioitu (jos lipastossa ei olekaan turtles-paitaa) ja lipasto tyhjennetään loogisesti läpikäyden lattialle (totesimme sen vastaavan hyvin ihmisten käytöstä lukuunottamatta Vesaa joka pitää vaatteitaan jo valmiiksi läjässä).

Teen keittäminen pseudokoodia noudattaen todettiin mahdolliseksi, vaikkakin vaatii paljon koodia.

Hipasta oli tarjolla kaksi eri koodia, joista yksinkertaisempi oli suunnilleen muotoa ”jahtaa tai pakene” ja poliisia ja rosvoa simuloiva versio olikin jo haasteellisempi. Onnistuimme listimään yhden bugin vaatimalla esitietoihin osallistujamäärän, jotta poliisit eivät jää jahtaamaan tyhjyyttä.

Yhteenlasku oli tylsän matemaattinen ja esitietoja tarvittiin lisää se että ohjelma ymmärtää lukujen ”pituuden”.

Voileivän tekeminen onnistuu, mutta jäi epäselväksi tiskautuuko astiat, kun ne laitetaan takaisin siihen kaappiin mistä ne otettiin. Paljon koodia arkisesta asiasta.

Viimeisin ohjelma ei ollut mitään pseudokoodia vaan aivan toimiva HSL-simulaattori. Koko ryhmä oli Olowi-luukku auki kun Vesan pikkuveli osasi nousta 102, maksaa (tai palata hakemaan rahaa), mennä istumaan ja jaksoi odottaa ennen tätä noin 15 kpl 510-busseja.

Lopputulemana: kaikille saattoi syntyä alitajuinen kuva ohjelman suunnittelusta, vaikka ei tätä olisi tajunnutkaan.

Tapaus 2: Toiminnan määrittely

Tiistain tapauksen käsittely alkoi selkeällä tavoitteen asetuksella: syömään on lähdettävä viimeistään kello 11:45. Tämän jälkeen päästiinkin ripeästi asiaan.

Seitsemän askeleen menetelmä oli iskostunut hyvin kaikkien mieleen edellisestä sessiosta. Tehtävänanto esimerkkeineen oli kuitenkin jokseenkin erilainen kuin ensimmäisessä tapauksessa. Tällä viikolla esimerkkinä oli pikkuveljelle annettavat ohjeet bussiin menoa varten. Esimerkki sai ryhmän hymähtelemään, mutta muistutti myös ryhmän koodaustaustaisten mukaan koodia.

Tutustuttuamme esimerkkiin siirryimme tehtävien silmäilyyn, työotsakkeen määrittelyyn ja yhteiseen stormaukseen. Otsake muotoitui hyvän keskustelun jälkeen, ja koska se ei heti miellyttänyt kaikkia, sovittiin, että sitä voidaan pohtia uudelleen vielä stormauksen jälkeen.

Ajatuksia heiteltiin taululle melko samalla metodilla kuin edellisellä viikolla. Lappuja kirjoiteltiin omalla paikalla ja ojennettiin sihteerille, joka luki laput ääneen. Tämän jälkeen taululla olevista lapuista käytiin keskustelua, jonka avulla niistä pyrittiin hahmottamaan jäsennelty kokonaisuus.

Taululle muodostui suuri kokonaisuus otsakkeella ”Vaaditaan”, jonka alaotsikkoina olivat ”Kaikenkattavuus”, ”toteutustapa”, vaihtoehtoisuus” ja ”esitiedot”. Näillä kaikilla viitattiin näkökulmiin, jotka ohjelmoidessa on ryhmän mukaan otettava huomioon. ”Vaaditaan”-pilven lisäksi syntyi kaksi muuta otsaketta: ”Vinkkejä” ja ”FAIL”. ”Vinkkejä” sisälsi vinkkejä ohjelmointiin, ja ”FAIL” näkökulmia ohjelmoinnin epäonnistumiseen ja sen välttämiseen.

Lopuksi jaettiin oppimistavoitteet. Tällä kertaa tehtävänannot jakautuivat kaikille selkeinä, kun päätettiin pareittain tehdään ohjeet kuhunkin eri tehtävänantoon ja pohditaan oman tehtävänannon ongelmia. Lisäksi sovittiin, että Vesa koodaa itse esimerkin eli pikkuveljen menon bussipysäkille.

Alla vielä oppimistavoitteet:

Vesa: koodaa bussipysäkille menon
Jaakko ja Pauli: Turtles-paidan etsiminen
Kaisa ja Hanna: voileipien tekeminen
Annukka ja Miikka: teen keittäminen
Emmi ja Justus: hipan leikkiminen
Aarne: yhteenlasku allekkain