Ohjelmoinnin peruskurssi Y1 Huom: Istukaa joka paikalle – sali tulee t¨ ayteen! CS-A1111 9.9.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 1 / 26
Ohjelmoinnin peruskurssi Y1Huom:
Istukaa joka paikalle – sali tulee täyteen!
CS-A1111
9.9.2019
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 1 / 26
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.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 2 / 26
Mihin teekkari / diplomi-insinööri tarvitsee ohjelmointia?
I Pienet laskentasovellukset
I Mittauslaitteen tms. ohjaaminen
I Matriisilaskenta- ja taulukkolaskentaohjelmia käyttäminen
I Valmiiden ohjelmien toiminnan opettelu ja ymmärtäminen
I Työelämässä paljon tehtäviä, joissa vaaditaan sekä jonkininsinöörialan tuntemus että hyvä ohjelmointitaito.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 3 / 26
Mihin teekkari / diplomi-insinööri tarvitsee ohjelmointia?
I Pienet laskentasovellukset
I Mittauslaitteen tms. ohjaaminen
I Matriisilaskenta- ja taulukkolaskentaohjelmia käyttäminen
I Valmiiden ohjelmien toiminnan opettelu ja ymmärtäminen
I Työelämässä paljon tehtäviä, joissa vaaditaan sekä jonkininsinöörialan tuntemus että hyvä ohjelmointitaito.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 3 / 26
Opiskelijoiden kommentteja kesätöiden jälkeen
Opiskelija 1 (ENG):
En ollut käytännössä koskaan aiemmin ohjelmoinut ennen Ohjelmoinninperuskurssi Y1:stä. Kurssi yllätti minut positiivisesti ja sen ansiosta todellainnostuin ohjelmoinnista. Näen sen luovana ongelmanratkaisuna, jossatyönsä jäljen näkee heti ja jossa voi aina kehittää olemassa olemia ohjelmiaparemmiksi ja myös oppia aina uutta. Ohjelmointi on universaalina taito,joka myös ratkaisevasti kehittää loogista ajattelua ja ajatustenjäsentämistä. Y1 onnistuu opettamaan näitä taitoja palkitsevalla tavalla jaon ehdottomasti yksi parhaista käymistäni kursseista näiden parivuotistenyliopisto-opintojeni aikana. Sain kurssin ansiosta myös kesätöitä.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 4 / 26
Opiskelijoiden kommentteja kesätöiden jälkeen
Opiskelija 2 (ELEC):
Olin saanut muutamia ensikosketuksia ohjelmointiin ennen kun aloitinyliopiston, mutta suurin osa ensimmäisellä kurssilla esiin tulleista asioistaoli kuitenkin uusia. Muita ohjelmointikursseja oli hyvä rakentaaperusasioiden päälle, joita Y1 opetti. Kaikilla ohjelmointikursseillasyntyneestä osaamisesta on ollut hyötyä niin muilla kursseilla kuinkesätöissä. On ollut myös hauska huomata, että ohjelmoinnissa kehittyvätmyös ongelmanratkaisutaidot ja ihan toisenlainen ajattelu kuin esimerkiksimatematiikan ja fysiikan kursseilla.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 5 / 26
Esimerkki harjoitustyöstä, jossa tarvitaan ohjelmointia
I Kurssi: ENE-58.129 Rakennusten energiatalous (aikaisemmaltavuodelta)
I Annettu: Tiedot rakennuksen koosta, rakenteesta, sijainnista,lämmitysjärjestelmästä, eri asioiden kustannuksista jne.
I Tehtävä (osa harjoitustyöstä): Hae optimaalinen yhdistelmäseuraaville viidelle parametrille
1. seinien eristyspaksuus2. yläpohjan eristyspaksuus3. ikkunoiden U-arvo4. lämpöpumpun kompressorin nimellisteho5. höyrystymislämpötila
siten, että seinämien lämpöeristysten, ikkunoiden jalämmöntuottojärjestelmän muodostaman investoinnin sekärakennuksen lämmityskustannusten yhteensä muodostamatelinkaarikustannukset saavat minimiarvon tarkasteluaikana jarakennus on energiatehokkuusluokassa A.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 6 / 26
Tämä kurssi
I Oppimistavoitteena ohjelmoinnin perusasiat
I Ohjelmointikieli PythonI Mahdollisia jatkokursseja:
I CS-A1121 Ohjelmoinnin peruskurssi Y2I CS-A1130 Tietotekniikka sovelluksissaI CS-A1141 Tietorakenteet ja algoritmit YI ELEC-A7100 C-ohjelmoinnin peruskurssi
I Mahdollista suorittaa myös tietotekniikan sivuaine.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 7 / 26
Vaihtoehtona toinen ohjelmointikurssi
I Tämän kurssin sijaan on mahdollisuus suorittaa selvästi vaativampimutta erittäin antoisa kurssi CS-A1110 Ohjelmointi 1.
I Y1:llä pääpaino on pienten kokonaisten ohjelmien kirjoittamisessa,Ohjelmointi 1:llä taidoissa, joita tarvitaan suurten ohjelmientekemisessä.
I Jos haluaa kandidaatin tutkinnon suorittamisen jälkeen hakeatietotekniikan maisteriohjelmaan, niin vaatimuksena on Ohjelmointi1:n suoritus.
I Kandidaatin tutkintoon voi sisällyttää molemmat kurssit CS-A1111Ohjelmoinnin peruskurssi Y1 ja CS-A1110 Ohjelmointi 1 (toinenmenee silloin vapaavalintaisiin opintoihin).
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 8 / 26
Oletko ohjelmoinut aikaisemmin?
I Vastaa kyselyyn sivulla http://presemo.aalto.fi/y1s2019
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 9 / 26
http://presemo.aalto.fi/y1s2019
Yleistä
I HenkilökuntaI Luennoija Sanna SuorantaI Opetusmateriaalit laatinut Kerttu Pollari-MalmiI noin 22 tuntiopettajaa
I TiedotusI Kurssin kotisivu MyCourses-järjestelmässäI Keskusteluryhmä Piazzassa
https://piazza.com/aalto.fi/fall2019/csa1111/home
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 10 / 26
Opetusmuodot – lähiopetus
I LuennotI ma 9.9. klo 12-14 ja sen jälkeenI keskiviikkoisin 14-16 aluksi Aalto-salissa, noin 25.9. jälkeen salissa T1
Tietotekniikan talolla.I Luennoilla ei käsitellä kaikkia asioita.I Läsnäoloa ei valvota.
I Harjoitukset, joissa opiskelijat itse ratkaisevat harjoitustehtäviätietokoneella.
I 18 ryhmää viikossa Tietotekniikan talon salissa T7 alkaen to 12.9.(ei tenttiviikolla)
I Lisäksi ylimääräisiä harjoitusryhmiä tuota ennen (katso ajat japaikatMyCoursesista) ohjelmointiympäristön asentamiseksi.
I Läsnäolo ei ole pakollista eikä siitä saa lisäpisteitä, mutta tarjolla ontuntiopettajien apua.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 11 / 26
Opetusmuodot jatkuu
I OppimateriaaliI A+-järjestelmässä oleva oppimateriaali (linkki MyCourses-sivulla)I Oppikirjaa kaipaaville suositellaan Gaddis: Starting Out with Python,
2nd Ed. tai uudempi, Pearson.I Pythonin webbisivut: https://docs.python.org/3/I Lisäksi lisämateriaali (ks. MyCourses, alasivut Materiaalit)
I A+järjestelmän tämän kurssin sivu löytyy osoitteesta:https://plus.cs.aalto.fi/y1/2019s/
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 12 / 26
Pakolliset osasuoritukset
I TenttiI Ensimmäinen mahdollisuus ti 26.11. klo 17:00–20:00.
I HarjoitustehtävätI Palautetaan A+-järjestelmässä automaattisille tarkistimille, joka antaa
alustavat pisteet.I 9 kierrosta, joista 8 ensimmäistä + esitietokysely pakollisia.I Kullakin kierroksella on minimipistemäärä, joka on saavutettava.I Jos haluaa harjoitustehtävistä vähintään arvosanan 3, on myös
viimeisestä kierroksesta (eli kierroksesta 9) on saatava minimipisteet.I Mahdollisuus antaa palautetta harjoitustehtävistä A+-järjestelmässä.
I Kurssiarvosana on tenttiarvosanan ja harjoitusarvosanan keskiarvo, josmolemmat osasuoritukset on hyväksytty.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 13 / 26
Pakolliset osasuoritukset, jatkuu
I PaikkausmahdollisuudetI Rästitentit keväällä (Pakollinen ilmoittautuminen viimeistään
viikko ennen tenttiä).I Harjoitustehtävien rästikierros (vain kierrosten minimipisteiden
saavuttamiseen). Kaikkia tehtäviä ei voi korvata rästikierroksettekemällä.
Tärkeä tieto rästikierroksesta
Rästikierroksella voi saada vain vaaditut minimipisteet sellaisestakierroksesta, josta ei ole saanut riittävästi pisteitä. Rästikierroksella ei voikorottaa hyväksyttyjen kierrosten pistemäärää.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 14 / 26
Tarvittavat ATK-tunnukset
I A+-järjestelmään kirjautumiseen tarvitaan Aalto-tunnus.
I Kurssin Piazza-keskusteluryhmään luodaan tunnusAalto-sähköpostiosoitteen avulla.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 15 / 26
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 saaluovuttaa kaverille.
I Keskustelu tai neuvonta ei saa olla niin yksityiskohtaista, ettämolemmilla ohjelmissa täsmälleen samat käskyt samassajärjestyksessä.
I A+-materiaalissa, luennoilla ja oppikirjassa esitettyä koodia saakäyttää apuna.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 16 / 26
Arvio kurssin työmäärästä
I Kurssin laajuus on 5 op, joka vastaa noin 133 tuntia työtä.I Keskimääräinen arvioitu työmäärä yhden kierroksen suorittamiseen on
noin 12–14 tuntia:I Kierroksen aihepiiriä käsittelevä luento 2 hI Kierroksen materiaalin lukeminen 2 hI Kierroksen tehtävien tekeminen 8–10 h
I LisäksiI Aloitusluento 2 h.I Kertaus tenttiin 10 h.I Tenttiin osallistuminen 3 h.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 17 / 26
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 Ruotsin kruunuina ja lue se.
2. Jaa luettu rahasumma 10.54:lla.
3. Tulosta kuvaruudulle jakolaskun tulos eli vastaava summa euroina.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 18 / 26
Erilaisia tapoja esittää ohjelma tietokoneelle
Käskyt esitetään
I konekielellä (bittijonoina)
I Symbolisella konekielellä, esim. Assembly
I Lausekielellä, esim. Python, Java, C, C++, Scala, Pascal jne.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 19 / 26
Kääntäjä ja tulkki
I Tietokoneen prosessori ymmärtää vain konekielellä annettuja käskyjä.Muussa muodossa annettu ohjelma pitää 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 tallentaakonekielisen ohjelman tiedostoon.
I Tulkki muuttaa käskyn kerrallaan konekielelle ja suorittaa käskyn heti.Sen jälkeen se siirtyy ohjelman seuraavaan käskyyn.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 20 / 26
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 PyCharm (tai aiemmin kurssilla käytetty Eclipse).
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 21 / 26
Ensimmäinen Python-ohjelma
print("Hyvaa paivaa")
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 22 / 26
Muuttujat
I Muuttujia käytetään ohjelman käsittelemien arvojen tallentamiseen jakäsittelyyn.
I Muuttujalle voi antaa arvon sijoituskäskyllä.
nimi = "Matti"
print("Hei,", nimi)
print("Tervetuloa Python-kurssille!")
Esimerkkiajo
Hei, Matti
Tervetuloa Python-kurssille!
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 23 / 26
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!
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 24 / 26
Lukuarvon lukeminen käyttäjältä
I Käsky input antaa aina luetun arvon tekstinä, merkkijonona.
I Jotta luettua arvoa voitaisiin käsitellä lukuna, se pitää ensin muuttaakokonais- tai desimaaliluvuksi.
I Jos luettu merkkijono on muuttujan rivi arvona, saadaan sitävastaava kokonaisluku muuttujan luku1 kokonaislukutyyppiseksiarvoksi seuraavasti:
luku1 = int(rivi)
I Vastaava desimaaliluku saadaan muuttujan luku2 float-tyyppiseksiarvoksi seuraavasti:
luku2 = float(rivi)
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 25 / 26
Esimerkki: eurolaskuri
print("Muutan Ruotsin kruunut euroiksi.")
rivi = input("Anna rahasumma kruunuina: ")
kruunut = float(rivi)
eurot = kruunut / 10.54
print("Se on", eurot, "euroa.")
Esimerkkiajo
Muutan Ruotsin kruunut euroiksi.
Anna rahasumma kruunuina: 543.50
Se on 51.56546489563568 euroa.
CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 26 / 26