Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1
CSE-A1111
7.9.2015
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
1 / 24
Esittelyluento: luennon jälkeen
I
Tiedät, miten tämä kurssi on järjestetty ja mitä sinun pitää tehdä,
jotta saisit kurssin suoritetuksi.
I
Tiedät, mitä tarkoitetaan ohjelmoinnilla.
I
Osaat kirjoittaa yksinkertaisen tietokoneohjelman.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
2 / 24
Mihin teekkari / diplomi-insinööri tarvitsee ohjelmointia?
I
Pienten laskentasovellusten kirjoittaminen.
I
Mittauslaitteen tms. ohjaaminen.
I
Ohjelmointitaidosta on apua myös matriisilaskenta- ja
taulukkolaskentaohjelmia käytettäessä.
I
Pienikin ohjelmointitaito auttaa valmiiden ohjelmien toiminnan
opettelussa ja ymmärtämisessä.
I
Työelämässä paljon tehtäviä niille, joilla on sekä jonkin insinöörialan
tuntemus että hyvä ohjelmointitaito.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
3 / 24
Esimerkki harjoitustyöstä, jossa tarvitaan ohjelmointia
I
I
I
Kurssi: ENE-58.129 Rakennusten energiatalous (aikaisemmalta
vuodelta)
Annettu: Tiedot rakennuksen koosta, rakenteesta, sijainnista,
lämmitysjärjestelmästä, eri asioiden kustannuksista jne.
Tehtävä (osa harjoitustyöstä): Hae optimaalinen yhdistelmä
seuraaville viidelle parametrille
1.
2.
3.
4.
5.
seinien eristyspaksuus
yläpohjan eristyspaksuus
ikkunoiden U-arvo
lämpöpumpun kompressorin nimellisteho
höyrystymislämpötila
siten, että seinämien lämpöeristysten, ikkunoiden ja
lämmöntuottojärjestelmän muodostaman investoinnin sekä
rakennuksen lämmityskustannusten yhteensä muodostamat
elinkaarikustannukset saavat minimiarvon tarkasteluaikana ja
rakennus on energiatehokkuusluokassa A.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
4 / 24
Tämä kurssi
I
Tavoitteena on oppia ohjelmoinnin perusasiat. Aikaisempi
ohjelmointitaito ei ole tarpeen.
I
Ohjelmointikielenä käytetään Pythonia.
I
Kurssi keskittyy perusasioihin.
Kurssin jälkeen voi jatkaa jollekin seuraavista kursseista:
I
I
I
I
I
CSE-A1121 Ohjelmoinnin peruskurssi Y2
CSE-A1130 Tietotekniikka sovelluksissa
CSE-A1141 Tietorakenteet ja algoritmit Y
ELEC-A7100 C-ohjelmoinnin peruskurssi
tai vaikka suorittaa ne kaikki.
I
Halukkaat voivat tämän kurssin jälkeen suorittaa tietotekniikan
sivuaineopinnot, johon kurssit CSE-A1121 ja CSE-A1141 kuuluvat.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
5 / 24
Yleistä
I
Henkilökunta
I
I
I
Tiedotus
I
I
I
Luennoija Kerttu Pollari-Malmi, vastaanotot keskiviikkoisin klo
12:00–13:00 tietotekniikan talon huoneessa B209.
17 tuntiopettajaa.
Kurssin kotisivu MyCourses-järjestelmässä (Huom! valitse syksyn
kurssin sivu)
Keskusteluryhmä Piazzassa
https://piazza.com/aalto.fi/fall2015/csea1111/home.
Mahdollisuus antaa palautetta luennoista ja harjoitustehtävistä
Goblinissa.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
6 / 24
Ilmoittatuminen
I
Ilmoittaudu kurssille WebOodilla.
I
Ilmoittautuminen luennolle tai kurssille, ei harjoitusryhmiin.
I
Kurssille ei voi ilmoittautua sähköpostitse.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
7 / 24
Opetusmuodot
I
Luennot
I
I
I
I
Harjoitukset, joissa opiskelijat ratkaisevat harjoitustehtäviä
tietokoneella ja assistentit kiertävät neuvomassa.
I
I
I
ma 12-14 ja ke 14-16 aluksi Aalto (A) -salissa, myöhemmin B-salissa.
Ei luentoja 19.–21.10.
Viimeinen luento 11.11.
17 ryhmää viikossa Tietotekniikan talon salissa T7, ajat kurssin
MyCourses-sivulla.
Osanotto ei ole pakollista eikä siitä saa lisäpisteitä. Tehtävät ovat
pakollisia, mutta niitä voi palauttaa myös netin kautta.
Oppimateriaali
I
I
I
Opetusmoniste (MyCourses-sivulla)
Perusteellisempaa materiaalia haluaville suositellaan Gaddis: Starting
Out with Python, 2nd Ed tai 3rd Ed., Pearson.
Lisäksi käytettävissä kalvot perusasioista.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
8 / 24
Pakolliset osasuoritukset
I
Tentti
I
I
I
I
Harjoitustehtävät
I
I
I
I
9 kierrosta, joista 8 ensimmäistä pakollista.
Palautetaan netin kautta automaattisille tarkastajalle (Goblin).
Jos haluaa harjoitustehtävistä vähintään arvosanan 3, on myös
viimeisestä kierroksesta saatava minimipisteet.
Vapaaehtoiset lisätehtävät (Mastery Grids – MG)
I
I
I
Perustuu opetusmonisteeseen ja harjoitustehtäviin.
Ensimmäinen mahdollisuus ti 1.12. klo 17:00–20:00.
TENTTIIN ILMOITTAUTUMINEN ON PAKOLLISTA.
Ilmoittautumisaika päättyy viikko ennen tenttiä.
Näiden avulla voit harjoitella lisää kurssin asioita.
Jos tekee vähintään 15 MG-tehtävää, saa 200 lisäpistettä
harjoitustehtäviin (vastaa noin yhden tavallisen ohjelmointitehtävän
pisteitä).
Kurssiarvosana on tenttiarvosanan ja harjoitusarvosanan keskiarvo, jos
molemmat osasuoritukset on hyväksytty.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
9 / 24
Pakolliset osasuoritukset, jatkuu
I
Millaisia harjoitustehtäviä kurssilla on?
I
I
I
I
Pikkutehtäviä, joissa rakennetaan tehdään ohjelmaa valmiiksi
annetuista osista tai katsotaan, mitä ohjelmaa ajettaessa tietokoneen
sisällä tapahtuu.
Varsinaisia ohjelmointitehtäviä
Vapaaehtoiset tehtävät muistuttavat pikkutehtäviä, ja sisältävät lisäksi
visailuja.
Paikkausmahdollisuudet
I
I
Rästitentit.
Harjoitustehtävien rästikierros.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
10 / 24
Tarvittavat ATK-tunnukset
I
Gobliniin kirjautumiseen tarvitaan Aalto-yliopiston Weblogin-tunnus.
Jos et voi jostain syystä saada vielä tunnusta (esim. jatko-opiskelija,
jonka jatko-opintohakemusta ei ole virallisesti vielä hyväksytty),
lähetä sähköpostia luennoijalle Goblin-tunnuksen saamiseksi.
I
Ensimmäisellä kerralla kannattaa luoda itselleen oma tunnus ja
salasana Gobliniin. Näin Gobliniin pääsee myös silloin, jos
Aalto-tunnuksella kirjautuminen ei onnistu.
I
Kurssin keskusteluryhmään luodaan tunnus Aalto-sähköpostiosoitteen
avulla. Jos et voi saada Aalto-sähköpostiosoitetta, lähetä sähköpostia
luennoijalle, joka voi liittää sinut keskusteluryhmään jollain toisella
sähköpostiosoitteella.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
11 / 24
Yhteistyö harjoitustehtävissä
I
Tehtävien ratkaisuista saa keskustella muiden opiskelijoiden kanssa,
mutta jokainen kirjoittaa oman koodinsa itse.
I
Kaveria saa neuvoa, mutta valmista tai lähes valmista ratkaisua ei saa
luovuttaa kaverille.
I
Keskustelu tai neuvonta ei saa olla niin yksityiskohtaista, että
molemmilla ohjelmissa täsmälleen samat käskyt samassa
järjestyksessä.
I
Opetusmonisteessa, luennoilla ja oppikirjassa esitettyä koodia saa
käyttää apuna.
I
Epäilyt harjoitustehtävien kopioinnista tai muusta vilpistä lähetetään
Perustieteiden korkeakoulun opintoasian päällikön ja opintoasioista
vastaavan varadekaanin tutkivattaksi.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
12 / 24
Arvio kurssin työmäärästä
I
Kurssin laajuus on 5 op, joka vastaa noin 133 tuntia työtä. Sen on
arvioitu jakautuvan seuraavasti:
I
I
I
Luennot 36 tuntia (tai vastaava aika itseopiskeluun).
Harjoitustehtävät 8–9 tuntia / krs.
Tentti 20 tuntia (valmistautuminen ja osallistuminen).
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
13 / 24
Tutkimus
I
Kurssilla kerätään harjoitustehtävien tekemisestä tietoa, jota
käytetään tutkimustyöhön, jonka tavoitteena on kehittää entistä
parempia työkaluja ja verkko-oppimisympäristöjä ohjelmoinnin
opetukseen.
I
Osa tutkimuksesta tehdään yhteistyössä University of Pittsburghin
kanssa.
I
Mitään opiskelijoiden henkilötietoja (ei myöskään esim. nimiä tai
opiskelijanumeroita) ei välitetä Aalto-yliopiston ulkopuolelle.
Jotta tutkimuksessa pystytään erottamaan, mikä on kurssilla opittua
ja minkä opiskelija on osannut jo ennen kurssille tuloa, tehdään
ensimmäisellä harjoitustehtäväkierroksella esitesti.
I
I
I
Testin tekemisestä saa harjoitustehtäväpisteitä, joihin ei vaikuta
mitenkään se, onko vastannut kysymyksiin oikein vai väärin.
Älä säikähdä, vaikka et osaisi vastata testin kysymyksiin. Tarkoituksena
on vain saada selville, kuinka paljon kurssilla opetettavia asioita kukin
opiskelija tietää jo ennen kurssille tuloa.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
14 / 24
Tietokoneen perusosat
I
Prosessori eli suoritin
I
Keskusmuisti
I
Syöttölaitteet
I
Tulostuslaitteet
I
Lisäksi ulkoista muistia, joka voi toimia sekä syöttö- että
tulostuslaitteena.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
15 / 24
Mikä on tietokoneohjelma?
Keittokirjan resepti
1. Vatkaa munat ja sokeri vaahdoksi.
2. Lisää jauhot ja sekoita.
3. Kaada vuokaan ja paista 20 minuuttia.
Tietokoneohjelma
1. Pyydä rahasumma markkoina ja lue se.
2. Jaa luettu rahasumma 5.94573:lla.
3. Tulosta jakolaskun tulos kuvaruudulle.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
16 / 24
Erilaisia tapoja esittää ohjelma tietokoneelle
I
Käskyt esitetään konekielellä (bittijonoina).
I
Symbolinen konekieli
I
Lausekieli, esim. Python, Java, C, C++, Scala, Pascal jne.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
17 / 24
Kääntäjä ja tulkki
I
Tietokoneen prosessori ymmärtää vain konekielellä annettuja käskyjä.
Jos tietokoneohjelma annetaan jossain muussa muodossa, pitää se
muuttaa konekielelle.
I
Muuttaminen voidaan tehdä toisella tietokoneohjelmalla, kääntäjällä
tai tulkilla.
I
Kääntäjä ottaa koko ohjelman, kääntää sen konekielelle ja tallentaa
konekielisen ohjelman tiedostoon. Ohjelma voidaan ajaa tästä
tiedostosta halutun määrän kertoja, eikä ohjelmaa tarvitse kääntää
uudelleen.
I
Tulkki ottaa käskyn kerrallaan, muuttaa sen konekielelle ja suorittaa
käskyn heti. Sen jälkeen se siirtyy ohjelman seuraavaan käskyyn. Jos
ohjelma halutaan suorittaa uudelleen, se pitää tulkata joka kerta
uudelleen.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
18 / 24
Kolme eri tapaa kirjoittaa ja ajaa Python-ohjelmia
I
Käynnistä Python-tulkki ja anna sille käsky kerrallaan.
I
Kirjoita ohjelma tiedostoon ja aja se komentotulkissa käskyllä
python3 tiedosto.py
I
Käytä työkalua, jolla voi sekä kirjoittaa että ajaa Python-ohjelmia,
tällä kurssilla Eclipse.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
19 / 24
Ensimmäinen Python-ohjelma
print("Hyvaa paivaa")
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
20 / 24
Muuttujat
I
Muuttujia käytetään ohjelman käsittelemien arvojen tallentamiseen ja
käsittelyyn.
I
Muuttujalle voi antaa arvon sijoituskäskyllä, jota merkitään =:lla.
nimi = "Matti"
print("Hei,", nimi)
print("Tervetuloa Python-kurssille!")
Esimerkkiajo
Hei, Matti
Tervetuloa Python-kurssille!
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
21 / 24
Arvon pyytäminen käyttäjältä
I
Käyttäjän antaman arvon voi lukea input-käskyllä.
I
Käskyn sulkujen sisään kirjoitetaan käyttäjälle annettava kehote.
I
Luetun arvon voi antaa arvoksi muuttujalle sijoituskäskyllä.
nimi = input("Kerro nimesi: ")
print("Hei,", nimi)
print("Tervetuloa Python-kurssille!")
Ajoesimerkki
Kerro nimesi: Minna
Hei, Minna
Tervetuloa Python-kurssille!
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
22 / 24
Lukuarvon lukeminen käyttäjältä
I
Lukuarvojen lukeminen on vähän monimutkaisempaa, sillä input
antaa aina luetun arvon tekstinä, merkkijonona.
I
Jotta luettua arvoa voitaisiin käsitellä lukuna, se pitää ensin muuttaa
kokonais- tai desimaaliluvuksi.
I
Jos luettu merkkijono on muuttujan rivi arvona, saadaan sitä
vastaava kokonaisluku muuttujan luku1 kokonaislukutyyppiseksi
arvoksi seuraavasti:
luku1 = int(rivi)
I
Jos luettu merkkijono on muuttujan rivi arvona, saadaan sitä
vastaava desimaaliluku muuttujan luku2 float-tyyppiseksi arvoksi
seuraavasti:
luku2 = float(rivi)
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
23 / 24
Esimerkki: eurolaskuri
print("Muutan markat euroiksi.")
rivi = input("Anna rahasumma markkoina: ")
markat = float(rivi)
eurot = markat / 5.94573
print("Se on", eurot, "euroa.")
Esimerkkiajo
Muutan markat euroiksi.
Anna rahasumma markkoina: 543.50
Se on 91.4101380318 euroa.
CSE-A1111
Ohjelmoinnin peruskurssi Y1
7.9.2015
24 / 24