Kemiantekniikan ohjelmointikurssi CHEM-A2600 (5 op) Antti Karttunen Kurssin aloitusluento 30.10.2017 Aloita avaamalla web-sivu: presemo.aalto.fi/a2600
Osa 1 Kurssin kuvaus 2
Kurssin yhteenveto Kurssi kestää kuusi viikkoa (periodi II) Yksi viikko = yksi kierros Jokaisella kierroksella on omat aiheensa ja niihin liittyviä ohjelmointitehtäviä Kurssin arviointi perustuu ohjelmointitehtäviin Ohjelmointitehtävät on toteutettu MyCoursesin Quiz-toiminnolla CodeRunner-niminen ohjelmisto tarkistaa tehtävät automaattisesti Kolme ohjattua harjoitusryhmää viikossa (yleensä ti, ke, to klo 13.00-15.00) Ilmoittautuminen harjoitusryhmiin MyCoursesissa Harjoitukset eivät ole pakollisia, mutta suositeltavia! Harjoitusten aikana kurssista ja tehtävistä voi keskustella opettajien kanssa Koska ohjelmointitehtävät voi tehdä millä tahansa tietokoneella ja tehtävien tarkastus on automatisoitu, kurssin voi halutessaan suorittaa etäopiskeluna Tarvittavien ohjelmointityökalujen asennus on ohjeistettu alla (Anaconda) 3
Kurssikalenteri Kierros Viikko Teema 1 44 Kurssin aloitusluento maanantaina 30.10. klo 13.15 (Ke2 / A304) 2 45 Funktiot, moduulit Ohjelmoinnin peruskäsitteitä ja Pythonin perusteet (tulkki, IDE). Tulostaminen, syötteen lukeminen Muuttujat, operaattorit ja kontrollirakenteet: if-elif-else, while, for 3 46 Tietorakenteet (listat, monikot, sanakirjat) 4 47 Numpy, Matplotlib, Polynomit 5 48 Tiedostojen käsittely, virheenkäsittely 6 49 Sovellukset, Scipy (+ olio-ohjelmointi lisämateriaalina) Kurssin yhteenvetoluento tiistaina 5.12. klo 10.15 (Ke2 / A304) 4
Ohjatut harjoitukset Kaikki harjoitukset järjestetään CHEM-rakennuksen tietokoneluokassa 3 (R018) Luokassa 16 tietokonetta. Oman läppärin käyttäminen myös sallittua! Ilmoittautuminen MyCoursesissa (voit varata paikan yhdestä ryhmästä viikossa) Jos tavoittelemasi harjoitusryhmä on täynnä, voit vielä yrittää mahtua mukaan luokkaan oman läppärin kanssa Ilmoittautuminen MyCoursesissa Jos ryhmällä on poikkeava aika, annan lisätietoja kuvauksessa Muista tallentaa valintasi 5
Arvostelu Kurssin arvostelu perustuu ohjelmointitehtäviin Uusi kierros alkaa aina maanantaisin ja tehtävät ovat avoinna viikon ajan Kannattaa tutustua tehtäviin jo ennen harjoituksia Jokainen kierros sisältää kahdentyyppisiä tehtäviä: A- ja B-tehtävät A-tehtävät ovat perustason tehtäviä B-tehtävät ovat hieman laajempia tehtäviä Kurssin arvosana muodostuu (suurin piirtein) seuraavasti: 1: vähintään 50% A-tehtävien pisteistä 3: vähintään 80% A-tehtävien pisteistä ja noin 50% B-tehtävien pisteistä 5: vähintään 90% A-tehtävien pisteistä ja noin 90% B-tehtävien pisteistä Koska kurssi on syksyllä 2017 kehitysvaiheessa, pisterajat saattavat joustaa alaspäin (ei ylöspäin) Jos suoritat tietotekniikan sivuaineen (20-25 op) ja haluat korvata tällä kurssilla Ohjelmoinnin peruskurssin Y1 (CSE-A1111), arvosanan tulee olla vähintään 3 Korvaavuusasioissa ole yhteydessä Anttiin niin sovitaan asia CSE-A1111-kurssin vastuuopettajan Kerttu Pollari-Malmin kanssa 6
Ajankäytöstä 5 op = 5 x 27 h = 135 h Kontaktiopetus (22 h): Aloitus- ja lopetusluento (2 x 2 h) 18 h ohjattuja tietokoneharjoituksia (6 x 3 h) Kurssin voi suorittaa myös verkko-opintoina ilman osallistumista kontaktiopetukseen Oma työskentely (113 h): Viikoittaiset harjoitustehtävät 60 h (6 x 10 h) Kurssin verkkomateriaaleihin perustuva omatoiminen opiskelu 53 h Kurssin läpäiseminen vaatii aktiivista omatoimista työskentelyä Ohjelmoimaan oppii vain ohjelmoimalla! Aloita ohjelmointitehtävien tekeminen aina ajoissa Ohjelmointitehtävien vaativuus ja kurssin vaatima ajankäyttö kasvaa loppua kohti Jos vauhti on liian kova (tai liian hidas), kertokaa toki minulle! Uuden kurssin vaativuustason kalibrointi vaatii pari läpivetoa 7
Ohjelmointitehtävistä Ohjelmointitehtävät palautetaan yksilösuorituksina Tehtävistä on mahdollista keskustella opettajien kanssa harjoitusryhmissä Jos tarvetta ilmenee, saatan perustaa jonkun keskustelualueen kurssia varten Tehtävistä saa keskustella myös kaverin kanssa Valmiita ratkaisuja ei saa jakaa (miksi veisit kaverilta oivaltamisen ilon?) CodeRunner-ohjelma tarkistaa ja pisteyttää ohjelmointitehtävien palautukset automaattisesti Kaikki palautukset tallentuvat tietokantaan Palautusten samankaltaisuuksia vertaillaan sekä automaattisesti että manuaalisesti jokaisella kierroksella Yksinkertaisissa tehtävissä ratkaisut ovat luonnollisesti usein samanlaisia Monimutkaisemmissa tehtävissä samankaltaisuuksia ei pitäisi esiintyä 8
Osa 2 Yleistä asiaa ohjelmoinnista ja kurssilla käytettävät työkalut 9
Ohjelmointitaitojen merkitys Tyypillinen uutinen 2017: yhä useammat työtehtävät tullaan automatisoimaan Ohjelmointitaito yhä tärkeämpää, mutta mediassa myös liioittelua Tekoäly 10
Ohjelmointi ja kemian tekniikka Kemian tekniikassa ohjelmoinnilla on merkittävä rooli. Esimerkkejä: Kemian teollisuuden prosessien ohjaus Prosessien simulointi (mallinnus): kemiallinen prosessi mallinnetaan ensin tietokoneella ja siirrytään vasta sitten kalliimpaan kokeelliseen työhön Erilaisten kemiallisten tietokantojen tehokas käyttö vaatii ohjelmointia: materiaali- ja kemikaalitietokannat, rakenne-ominaisuustietokannat Mittausdatan edistynyt käsittely vaatii usein ohjelmointia (tai ainakin se on huomattavasti tehokkaampaa ohjelmoimalla kuin käsityönä Excelillä) Keksitkö lisää esimerkkejä? Kemiallisissa tieteissä ohjelmoinnilla keskeinen rooli monilla osa-alueilla Laskennallinen kemia, mittausdatan käsittely, spektroskopia, tiedonlouhinta (data mining), koneoppiminen (machine learning), 11
Mitä ohjelmointi on? Ohjelmoinnissa luodaan tarkka toimintaohje, eli ohjelma Ohjelman käskyjen avulla tietokone suorittaa tarvittavan tehtävän Ohjelma täytyy kirjoittaa ohjelmointikielellä, joita on satoja Alkuaikoina ohjelmat kirjoitettiin keskusprosessorin konekielellä (esim. bittijonoina 011001 ) Nykyisin käytetään pääasiassa korkeamman tason lausekieliä (kuten Python, Java, C) Minkä ohjelmointikielen opettelen? Mikä tahansa moderni lausekieli on hyvä valinta Tärkeintä on oppia ohjelmoinnissa tarvittava ajattelutapa. Kuva: AJK/wordclouds.com Ajattelutavan opittuasi uusien ohjelmointikielten oppiminen on varsin helppoa 12
Python-ohjelmointikieli Tällä kurssilla käytetään Python-ohjelmointikieltä. Sen etuja ovat: Selkeä kielioppi (syntax). Pythonilla kirjoitettu ohjelma, koodi, on siis varsin luettavaa, ainakin jos hyviä ohjelmointikäytäntöjä on noudatettu Erittäin matala aloituskynnys. Aloittelijakin saa heti aikaan näkyviä tuloksia Python-tulkki itsessään on vapaa (free) ohjelmisto, eli sen lähdekoodi on kaikkien saatavilla. Tämän seurauksena sen voi hankkia ilmaiseksi ja kuka tahansa voi ehdottaa siihen parannuksia. Pythonille on saatavissa valtava määrä vapaita kirjastoja (library) joita voi hyödyntää omissa ohjelmissa Erittäin vahva ja aktiivinen yhteisö kehittää Pythonia koko ajan Python soveltuu sekä pieniin että suuriin ohjelmointiprojekteihin Pythonilla voi toteuttaa myös suurta laskentatehoa vaativia tieteellisiä ohjelmistoja, mutta tällöin raskas laskenta on parasta hoitaa erillisten tieteellisten kirjastojen avulla (NumPy / SciPy, hyödynnetään myös tällä kurssilla!) Python on ns. tulkattu kieli, eli tulkki (interpreter) muuntaa lausekielisen ohjelman ajon aikana konekielelle. Tulkatun kielen vastakohta on käännetty kieli (kuten C) 13
Anaconda Kurssilla hyödynnämme Anaconda-nimistä Python-jakelupakettia (distribution) Paketti on asennettuna kaikkiin CHEM-rakennuksen mikroluokkiin Jakelupaketti sisältää Python-tulkin ohjelmien ajamista varten Valtavan määrän kirjastoja joita voi hyödyntää omissa ohjelmissa Erityisen kattavan kirjastokokoelman tieteellistä ohjelmointia varten Graafisen Spyder-ohjelmointiympäristön, joka helpottaa ohjelmien luomista Anacondan perusversio on ilmainen: https://www.anaconda.com/download/ Saatavilla Windows-, Linux-, OSX-versiot. Paketin voi asentaa helposti omalle tietokoneelle Tällä kurssilla käytetään Pythonin versiota 3.6. Myös vanhempaa 2.X sarjaa käytetään paljon. 3.X- ja 2.X-versiot eivät ole täysin yhteensopivia Kannattaa ottaa 64-bittinen versio 14
Spyder-ohjelmointiympäristö (IDE) Aja ohjelma tästä (tai paina F5) Help: paina editorissa Ctrl+I funktion nimen päällä ja Spyder näyttää ohjeen Ohjelma kirjoitetaan editorissa Ohjelma pyörii konsolissa Voit myös kirjoittaa komentoja suoraan konsoliin Huom! Spyder käynnistyy aika hitaasti, joten odottele rauhassa (jopa minuutti) Kun ajat ohjelman, Spyder tallentaa sen ennen ajamista (nimi.py) Kannattaa tehdä kurssia varten hakemisto omalle verkkolevylle Kokoa jokaisen harjoituskerran materiaalit omaan alihakemistoonsa 15
Oppimateriaali MyCourses-sivulta löytyy kurssin Python-oppimateriaali Toteutettu MyCourses-kirjana (ks. kuva alla) Sisältää kaikki kurssilla käsiteltävät asiat Linkkejä lisämateriaaliin löytyy tämän esityksen lopusta Tämän kautta kirjan voi myös tallentaa PDF-muodossa (interaktiiviset tehtävät eivät tallennu) 16
Coderunner-tehtävät MyCourses Vastattuasi kaikkiin Quiz-sivun tehtäviin klikkaa alalaidasta Kopioi Spyderissä kirjoittamasi ja testaamasi koodi tähän ja klikkaa Check 1. kierroksen tehtävissä virheellisistä palautuksista ei tule miinusta. Tämä voi muuttua myöhemmin. 17
Tärkeitä Python-resursseja https://docs.python.org/3/ Pythonin virallinen dokumentaatio https://docs.python.org/3/tutorial/index.html (tutorial) https://docs.python.org/3/reference/index.html ( kielioppi ) https://www.tutorialspoint.com/python3/ Varsin selkeä tutoriaali Google Valtavan käyttäjämäärän ansiosta netti on täynnä koodikysymyksiä ja vastauksia niihin (esim. http://stackoverflow.com/) MUISTA! 1) Kommentoi aina kirjoittamasi koodi hyvin 2) Älä käytä muuttujien nimissä ääkkösiä (ä, ö, å) 18