Vielä Pythonia
Muutama materiaali unohtui edellisesta artikkelista. Purampa siis ne pois mielen päältä:
Avointa Python-oppimateriaalia
Olen itse kirjoittanut oppituntien oheen Python-ohjelmointia nivaskan, jonka perusteella opean omille oppilaillenki Python-ohjelmointia. Materiaali on tietenkin ihan ok, koska se on itse tekemääni. Jotain uutta sinne pitäisi kirjoitella.
Muiden tekemiä materiaaleja:
- Perusmatematiikkaa ohjelmoimalla
- Avoin data opetuksessa
- Tietorakenteet ja algoritmit
- Ohjelmointia matematiikan opetukseen
- Ohjelmoinnillisen ajattelun työkalut yläkoulussa
Ja tietenkin
PDF-tiedostoja Pythonilla
Jostain syystä PDF-tiedostot ja niiden luominen ohjelmallisesti on kiehtovaa. Luultavasti sillä on jotain tekemistä grafiikan luomisen helppouden kanssa. Nuorena kloppina ohjelmoin C64-konetta Basicilla, mutta perusbasicilla grafiikan tekeminen oli haastavaa. Yläasteella oli Compaqit, joilla grafiikkaa pystyi tekemään Logo-ohjelmointikielellä. Osittain Pythonin kilpikonnagrafiikkaa kohtaan suuntautunut vastenmielisyys tulee siitä, että 40 vuotta sitten se oli parasta, mutta eikö todellakaan ole tullut mitään parempaa? (Scratch)
Mutta se PDF… Siihenkin on olemassa oma lisäosa, PyPDF. Alkuun pääsee esim. Towardsdatasciencen ohjeen avulla. Lisäksi löytyy lisäosia, jotka hanskaavat PDF-tiedostojen luonnin ja lomakekenttien luomisen. Siihen ei siis tarvita maksullisia Adoben ohjelmia.
Uridium
Joskun lapsuudessa pelasin Commodore 64:llä Uridium-peliä:
Tai oikeastaan yritin pelata. Peli oli todella haastava ja värimaailman takia mustavalkotelevisiossa jotkut vastustajat eivät näkyneet, joten peli oli mahdoton. Jossain muussa Youtube-videossa törmäsin kuitenkin tähän peliin ja kokeilin uudestaan sitä. Se löytyy Abandonwarena ja sitä voi kokeilla pelata vaikka selain-versionakin.
Lisäksi fanit ovat laittaneet Youtubeen mielenkiintoisia kehitysversioita pelistä. Alkuperäinen versio ”hiukan” paremmalla grafiikalla:
Onpa joku jopa tehnyt pelistä oikean 3D-versionkin:
Ja ilmeisesti joku toinenkin on tehnyt paljon valmiimman 3D-version:
Salakirjoitus
Eräs yliopiston kurssi, mitä voi käyttää yläkoululaistenkin kanssa, oli salakirjoitus-kurssi. Kurssin yksinkertaisimmat salakirjoitustavat soveltuvat jopa alakoululaistenkin kanssa tehtäväksi. Itse kokeilin ensimmäistä kertaa tänä lukukautena matematiikan valinnaisten kanssa Summanmutikan salakirjoitusmateriaalin kanssa. Ensimmäinen tunti meni salakirjoituskiekon tekemiseen (tuli tehtyä hieman turhankin ”raskaalla” tavalla niittaamisen takia) ja toisella tunnilla purimme ja salakoodasimme viestejä. Käyttämällä salakirjotuskiekkoa saa kivan johdatuksen Enigma-koneeseen (käyttämällä salauskiekkoa usemaman kerran peräkkäin) ja sen ohjelmointiin. Materiaalissa esitellään hyvin myös muita salakirjoitustapoja. Solmu-lehdessä on esitelty nykyaikaisempia salausmenetelmiä, joita voi esitellä oppilaille.
Suoraan kirjaimeksi salakirjoitus Pythonille:
kirjaimet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "å", "ä", "ö"]
salattava = input("Anna salattava teksti:")
salattu = []
for kirjain in salattava:
salattu.append(str(kirjaimet.index(kirjain)+1))
print ("-".join(salattu))
Caesar-salakirjoitus Pythonille:
kirjaimet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "å", "ä", "ö"]
salattava = input("Anna salattava teksti:")
siirto = 3
for kirjain in salattava.lower():
if kirjain.isalpha():
print (kirjaimet[(kirjaimet.index(kirjain)+siirto) % len(kirjaimet)], end="")
else:
print (kirjain, end="")
Salakirjoitukset voidaan myös purkaa näppärästi ohjelmilla, mutta ne saat kirjoittaa itse. Salakirjoitusta voidaan myös murtaa ohjelmilla, mm. laskemalla kirjainten esiintymistiheyksiä ja arvaamalla sen perusteella salausavain tai ihan vaan kokeilemalla kaikki salausavaimet läpi.
Leslie Lamport
Kuinka paljon Leslie Lamport on vaikuttanut elämääni? Ainakin hän on kehittänyt LaTeXin, jota käytin opiskelujeni loppupuolella paljon ja myös työuran alkupuolella. Ja varmaan hänen ansiostaan nykyiset webbipalvelutkin toimivat, kuten toimivat. Quantamagazine on tehnyt pienen jutun hänestä. Videoista enemmän tykkäävät voivat katsoa hänen selittämänään muuttumattomien muuttujien ideaa…
Miksi ohjelmoijana kehittyminen on vaikeata
Chrome suositteli Codeacademyn artikkelia, josta tunnistin monia piirteitä itsestäni. Ohjelmoin mielelläni ja tahtoisin edetä siinä pidemmälle. Joskus muinoin tein jopa isoja ohjelmointikokonaisuuksia yhdistellen PHP:tä, HTML:ää, MySQL:ää ja Javascriptiäkin. Nyt tuollaisten isojen kokonaisuuksien tekeminen on jäänyt vähemmälle artikkelissa mainituista syistä. Tärkein on ajanpuute. Täysi päivätyö koulussa oppilaiden kanssa syö aika tehokkaasti tunnit päivästä ja illalla olisi kiva tehdä muutakin kuin istua koneella. Lisäksi ohjelmat, joita olen tottunut monta vuotta sitten käyttämään, ovat nyt aika tavalla pois käytöstä. Pitäisi opiskella Reactia, ohjelmointia ilman tietokantoja ja muuttumattomia muuttujia. Tahto oppia nuo on isoja, muta aikapula… Ja kun tietää, mitä pitäisi oppia, niin kynnys aloittaa on iso. Ja jos saa jotain aikaan, niin tulee tuo huijarisyndrooma: tämähän on vain Stackoverflown apuna käyttäen tehty. Ja näin vanhemmiten ei enää ohjelmointikikat jää muistiin niin hyvin kuin nuorena: Helsingin yliopiston johdatus ohjelmoinnin jatkokurssin tenttitehtävään käytin yhden rivin koodinpätkän sijaan kymmenrivistä koodia. Olisi pitänyt muistaa Lambdan käyttö! Ja kun töissä puhutaan opettamisesta, niin vertaistuki ohjelmointiin on vähissä: mistä aloittaa opettelemaan tekemään uudella tekniikalla esim. vuorovaikutteisia webbisivuja…
Teurastus
Pudotusvalikko Googlen Docsissa
Pudotusvalikko kesken tekstin? Mitä ihmettä ja miksi? Kurkkaa video, niin tiedät.