ICS-A1120 Ohjelmointi 2 (5 op, IV V, kevät 2015)

Samankaltaiset tiedostot
CS-A1120 Ohjelmointi 2 (5 op, IV V, kevät 2018)

ICS-A1120 Ohjelmointi 2 (5 op, IV V, kevät 2016)

Abstraktiot ja analyysi algoritmit ja informaation esitykset

Uuden äärellä ohjelmoitava vai oppiva kone?

Tietokoneen mysteeri ohjelmoitava kone

Uuden äärellä ohjelmoitava vai oppiva kone?

T harjoitustehtävät, syksy 2011

Tietokoneverkot. T Tietokoneverkot (4 op) viimeistä kertaa CSE-C2400 Tietokoneverkot (5 op) ensimmäistä kertaa

Kurssin aloitus. AS XML-kuvauskielten perusteet Janne Kalliola

Tietokoneen mysteeri ohjelmoitava kone

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015

T Johdatus tietoliikenteeseen 5 op. Kevät 2013

T harjoitustyö, kevät 2012

Kurssijärjestelyt. CS-1180 Verkkojulkaisemisen perusteet (5 op) Hanna Hämäläinen Informaatioverkostot / Mediatekniikan laitos

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (5 op) Tavoitteena

KJR-C2002 Kontinuumimekaniikan perusteet Kurssiesite

Biokemian menetelmät I P (10 op / 8 op / 3,5 op) Juha Kerätär (F210, Kontinkangas,

Uuden äärellä rinnakkaisuus ja samanaikaisuus

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (TIEA2.1)

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto

ELEC-C1210 Automaatio 1 ELEC-C1220 Automaatio 2. Kurssien esittely lukukausi

ELEC-C1210 Automaatio 1 ELEC-C1220 Automaatio 2. Kurssien esittely lukukausi

Ohjelmoinnin perusteet Y Python

Kurssijärjestelyt. ME-C2300 Verkkojulkaisemisen perusteet (5 op) Mari Hirvi Informaatioverkostot / Mediatekniikan laitos

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

Ohjelmoinnin peruskurssi Y1

ELEC-C1210 Automaatio 1 ELEC-C1220 Automaatio 2. Kurssien esittely lukukausi

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

19/20: Ikkuna olio-ohjelmoinnin maailmaan

Tietokoneen mysteeri bitit ja data

Tietokoneen mysteeri bitit ja data

Suoritustavat: Laboratoriotöitä 2.-3.periodi. Luennot 2h, Laboratorityöt 4h, itsenäinen työskentely 124 h. Yhteensä 130 h.

Kurssin sisältö. Kurssilla vähemmän. Johdatus ohjelmistotekniikkaan. Mitä on ohjelmistotekniikka? Miten ohjelmistoja suunnitellaan ja toteutetaan?

OPETUSSUUNNITELMALOMAKE

OPETUSSUUNNITELMALOMAKE

Kurssin käytännön järjestelyt. Tuotantotalous 1 Tuomo Tanila

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Kurssin käytännön järjestelyt. Tuotantotalous 1 Jukka Kurki

ELEC-C1210 Automaatio 1 ELEC-C1220 Automaatio 2. Kurssien esittely lukukausi

Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät 2018

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)


T Johdatus tietoliikenteeseen 5 op

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät Olio-ohjelmoinnin perusteet (eli Oope) Laajuus

Tietokoneen toiminta (Computer Organization I)

Kurssin käytännön järjestelyt. Tuotantotalous 1 Tuomo Tanila

Kurssiesite Lausekielinen ohjelmointi Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

T Johdatus tietoliikenteeseen ja multimediatekniikkaan 5 op. Kevät 2013

ELEC-C1210 Automaatio 1 ELEC-C1220 Automaatio 2. Kurssien esittely lukukausi

Tietokoneen mysteeri bitit ja data

Kurssin käytännön järjestelyt. Tuotantotalous 1 Tuomo Tanila

MS-C2128 Ennustaminen ja Aikasarja-analyysi, 5 op Esittely

ELEC-C7230 Tietoliikenteen siirtomenetelmät

Tietorakenteet ja algoritmit Y CSE- A1141 (5 op)

ELEC-C7230 Tietoliikenteen siirtomenetelmät. Yleistä


Ohjelmoinnin perusteet Y Python

Tietokoneen toiminta (Computer Organization I)

Kurssiesite Lausekielinen ohjelmointi II Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

Digitalisoitu harjoitustehtävien ratkaisujen palautus sekä arviointi matematiikan ja tilastotieteen yliopisto-opinnoissa

Ohjelmoinnin peruskurssien laaja oppimäärä

35C00250 Hankintojen johtaminen Kurssin esittely

Kurssiesite Lausekielinen ohjelmointi I Kesä Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto

Kurssin käytännön järjestelyt. Tuotantotalous 1 Joel Kauppi

Talousmatematiikan perusteet: Johdanto. Kurssin tavoitteet Käytännön järjestelyt Suosituksia suorittamiseen

PLA Mobiiliohjelmointi. Mika Saari

Tietorakenteet ja algoritmit CSE- A1140 (5 op)

Korkealämpötilakemia

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi Syksy Tavoitteet ja keinot. Lausekielinen ohjelmointi (10 op)

HAHMONTUNNISTUKSEN PERUSTEET

MS-C2128 Ennustaminen ja Aikasarja-analyysi, 5 op Esittely

Ohjelmoinnin peruskurssi Y1

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

OPISKELUTYÖN MITOITUS Opetuksen suunnittelun työväline, jolla arvioidaan opiskelijan työmäärää suhteessa 1 PERUSTIEDOT

Korkealämpötilakemia

OPETUSSUUNNITELMALOMAKE

Kurssin käytännön järjestelyt. Tuotantotalous 1 Jukka Kurki

A35C00250 Hankintojen johtaminen Kurssin esittely

Algoritmit 1. Luento 1 Ti Timo Männikkö

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi I Syksy Lausekielinen ohjelmointi I (5 op) Lausekielinen ohjelmointi I (5 op)

Kurssiesite Lausekielinen ohjelmointi I Syksy Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Fysiikan opinnot Avoimen yliopiston opiskelijoille

Tietorakenteet ja algoritmit - syksy

ENE-C3001 Energiasysteemit

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

IIZT4020 Projektitoiminta

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

TU-C3010 Projektien suunnittelu ja ohjaus (5 op.)

Ohjelmoinnin peruskurssien laaja oppimäärä

Kurssin esittely. Kurssin esittely. MS-C2107 Sovelletun matematiikan tietokonetyöt 1

TU-C3010 Projektien suunnittelu ja ohjaus (5 op.)

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Vastuuopettaja. Kurssiesite Lausekielinen ohjelmointi I Syksy Lausekielinen ohjelmointi I (5 op) Lausekielinen ohjelmointi I (5 op)

Kurssiesite Lausekielinen ohjelmointi I Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

Tietokoneen rakenne (2 ov / 4 op) Syksy 2007 Liisa Marttinen. Helsingin yliopisto Tietojenkäsittelytieteen laitos

Johdanto kurssiin ja ohjelmoijan työkaluihin

Tietorakenteet ja algoritmit

Ohjelmistoarkkitehtuurit. Kevät

Transkriptio:

01110111010110 11110101010101 00101011010011 01010111010101 01001010101010 10101010101010 ICS-A1120 Ohjelmointi 2 (5 op, IV V, kevät 2015) Tommi Junttila & Petteri Kaski Tietotekniikan laitos Aalto-yliopisto! 23. helmikuuta 2015 10101011110101 01010101011101 01010111010110 10101101010110 10101110101010 11101010101101 01110111010110 10111011010101 11110101010101 00010101010101 01011010101110

Rekisteröidy kurssille Oodissa https://oodi.aalto.fi/a/opintjakstied.jsp? Kieli=1&Tunniste=ICS-A1120&html=1 Want to take ICS-A1120 in English as a self-study? Please follow the instructions here: https://noppa.aalto.fi/noppa/kurssi/ics-a1120/materiaali

Ohjelmointi 2 Ohjelmoinnin ja laskennan periaatteita porttitasolta funktionaaliseen rinnakkaisohjelmointiin Laskenta: Eräs vähiten ymmärretyistä luonnonilmiöistä Ohjelmointi: Keino valjastaa laskenta haluttuun tarkoitukseen

Tuhat miljoonaa laskutoimitusta sekunnissa def test(m: Long) = {! var i = 1L! var s = 0L! while(i <= m) { // s = 1 + 2 +... + m! s = s + i! i = i + 1! }! s! }!! val NANOS_PER_SEC = 1e9! val test_start_time = System.nanoTime! test(4000000000l)! val test_end_time = System.nanoTime! val test_duration = test_end_time - test_start_time! println("test took %.2f seconds".format(test_duration/nanos_per_sec))

Tuhat miljoonaa kappaletta sekunnissa Valon nopeus tyhjiössä 299 792 458 m/s Laskutoimituksia ~1 000 000 000 kpl/s Yhden laskutoimituksen suorittamiseen kuluvassa ajassa valo etenee tyhjiössä 299 792 458 m/s 1 000 000 000 kpl/s ~ 30 cm/kpl

Laskenta ja ohjelmointi Laskenta on luonnonilmiö Ohjelmointi on keino valjastaa laskenta haluttuun tarkoitukseen Ohjelmointitaito ja ymmärrys laskennasta ovat välttämätön osa tieteellistä yleissivistystä tietojenkäsittelytieteen alkeet

Tietojenkäsittelytiede on nuori tieteenala (P vs NP -ongelma on erinomainen esimerkki siitä että ymmärryksemme laskennasta ja siitä mitä tehtäviä voidaan ratkoa tehokkaasti ei ole vielä erityisen kypsä töitä siis riittää!) http://cacm.acm.org/magazines/2009/9/38904-the-status-of-the-p-versus-np-problem/fulltext

Esimerkki NP-täydellisestä tehtävänasettelusta Voidaanko luku 2015 muodostaa summana kokonaisluvuista 86, 115, 153, 265, 394, 476, 516, 664, 670, 791 jos jokaista lukua saa käyttää enintään kerran? Ei tunneta menetelmää joka tehokkaasti ratkaisisi tehtävän sen yleisessä muodossa (= mielivaltaisen monta mielivaltaisen suurta lukua)

2015 = 86 + 115 + 153 + 394 + 476 + 791 (Pienillä syötteillä ratkaisu toki onnistuu.)

Ohjelmointi 2 Ohjelmoinnin ja laskennan periaatteita porttitasolta funktionaaliseen rinnakkaisohjelmointiin Laskenta: Eräs vähiten ymmärretyistä luonnonilmiöistä Ohjelmointi: Keino valjastaa laskenta haluttuun tarkoitukseen

Porttitasolta tehdashallitietokoneeseen (Google Hamina) (Intel Xeon E7 v2 -lastu, 2.8 GHz kellotaajuus, 15 suoritusydintä, 4.3 miljardia transistoria, 22 nanometrin litografia)

ICS-A1120 kevät 2015 12 tehtäväkierrosta (yhteispisteistä arvosana) + tentti (kiittäen hyv. / hyv. / hyl.) Lämmittelykierros + 3 moduulia (4+4+3 tehtäväkierrosta)

Sisältö (kierrokset ja moduulit) 1. Lämmittelykierros I Tietokoneen mysteeri 2. Bitit ja data 3. Kombinaatiologiikka 4. Sekventiaalilogiikka 5. Ohjelmoitava kone II Abstraktiot ja analyysi 6. Funktionaalinen ohjelmointityyli 7. Suorituskykyanalyysi 8. Rekursio 9. Algoritmit ja informaation esitykset III Uuden äärellä 10. Rinnakkaisuus ja samanaikaisuus 11. Virtualisointi ja skaalautuvuus 12. Ohjelmoitava vai oppiva kone?

Määräajat Jokaisen kierroksen tehtäviin liittyy kaksi kierroskohtaista määräaikaa ("deadline"): varsinainen palautusmääräaika, ja jatkoajan määräaika Kaikki määräajat Suomen aikaa Kierroskohtaiset tarkat määräajat edellisellä kalvolla Kierroksen varsinaiseen määräaikaan mennessä palautetut tehtävät arvostellaan täysillä pisteillä Kierroksen varsinaisen määräajan umpeuduttua alkaa jatkoaika Jatkoajalla, jatkoajan määräaikaan mennessä palautetut tehtävät arvostellaan 70% täysistä pisteistä Jatkoajan määräajan umpeuduttua kierroksen tehtäviä ei ole enää mahdollista palauttaa arvosteltavaksi

Määräajat 1. Lämmittelykierros I Tietokoneen mysteeri 2. Bitit ja data 3. Kombinaatiologiikka 4. Sekventiaalilogiikka 5. Ohjelmoitava kone II Abstraktiot ja analyysi 6. Funktionaalinen ohjelmointityyli 7. Suorituskykyanalyysi 8. Rekursio 9. Algoritmit ja informaation esitykset III Uuden äärellä 10. Rinnakkaisuus ja samanaikaisuus 11. Virtualisointi ja skaalautuvuus 12. Ohjelmoitava vai oppiva kone? Varsinainen määräaika 6.3. 10.3. 17.3. 24.3. 27.3. 21.4. 24.4. 5.5. 8.5. 19.5. 22.5. 26.5. Jatkoajan määräaika (70% pisteistä) 13.3. 17.3. 24.3. 31.3. 14.4. 5.5. 8.5. 12.5. 15.5. 28.5. 28.5. 28.5.

Tentti 29.5.2015 klo 14 17 Tentti

Mitoitus (= 5 op) 5 op = noin 133h työtä Kierros = 10h työtä 2h luento Tentti 3h 12 tehtäväkierrosta + tentti 8h itsenäinen työskentely (tehtävät) Tenttiin valmistautuminen 10h

Tehtävät Saatavilla ja palautetaan A+ järjestelmään: http://plus.cs.hut.fi Jaetaan Eclipse -paketteina Kahta tyyppiä: Normaalit tehtävät Haastetehtävät ( Challenge problems )

Kurssin suorittaminen Ratkaisemalla tehtäviä (riittävä pistemäärä arvosanaan 1) ja Tentti hyväksytty

Arvostelu 12 kierrosta Jokaiselta mahdollisuus saada ainakin 400 pistettä, poislukien lämmittelykierros josta mahdollista saada ainakin 200 pistettä Arvosteluasteikko: alle 1200 hylätty 1200 arvosana 1 1900 arvosana 2 2600 arvosana 3 3300 arvosana 4 (jos tentti kiittäen hyväksytty, muuten arvosana 3) 4000 arvosana 5 (jos tentti kiittäen hyväksytty, muuten arvosana 4)

Normaalit tehtävät ja haastetehtävät! Assistentti auttaa, normaalitehtävissä Arvosanan 5 saa täysin ilman haastetehtäviäkin Haastetehtävät = haasta itsesi, omalla vastuulla Tausta: Miksi haastetehtävät? Ohjelmointitaito vaihtelee suuresti Ohjelmointi 1 kurssipalautteessa toive myös haastavammasta materiaalista Mainos: Ohjelmointikilpailuvalmennusta erillisellä kurssilla T-106.6200 https://wiki.aalto.fi/pages/viewpage.action?pageid=105423298

Kotitehtävät ovat luottamuksellisia yksilötöitä Ohjelmointi on sekä yksilö- että joukkuelaji, jossa riittävät itsenäiset taidot luovat pohjan tuottavalle joukkuetyöskentelylle Kurssilla ICS-A1120 Ohjelmointi 2 työskennellään itsenäisesti riittävän itsenäisen ohjelmointitaidon saavuttamiseksi Koska ohjelmatekstin itsenäinen laatiminen on ohjelmointityössä välttämätön yksilötaito, ohjelmatekstin laatiminen yhteistyössä on kurssilla kielletty Kurssin ohjelmointitehtävät ratkaistaan ja palautetaan sähköisesti arvosteltavaksi itse, luottamuksellisina yksilötöinä Luottamuksellisuudella tarkoitetaan tässä sitä, että omaa yksilötyötä ei saa erikseen tai julkisesti jakaa siten, että toisen opiskelijan itsenäiset ohjelmointitaidot jäävät puutteellisiksi tai niitä ei voida arvosteltavaksi palautettujen kurssisuoritteiden perusteella arvioida, esimerkiksi ohjelmatekstin kopioinnin takia

Työmuodot ja foorumit Luennot (luentoaikataulu ks. Noppa) Itsenäinen työ Assistentit auttavat (vuorot Maari A ja T7) Palaute assistenteilta (A+ kautta) Piazza (bugiraportit ja epäselvyydet tehtävänannoissa) http://piazza.com/aalto.fi/spring2015/icsa1120/home IRC-kanava!ics-a1120 (vertaistuki & assistenttipäivystys) Vastuuopettajien vastaanottoajat (Tommi pe klo 12 13 T-talo huone B346, Petteri pe klo 13 14 T-talo huone A334) tarkista kurssin kotisivuilta poikkeukset

Viikkoharjoitukset (Maari A ja T7) (svenskspråkig) https://noppa.aalto.fi/noppa/kurssi/ics-a1120/viikkoharjoitukset

Materiaali Tehtävät ja palautus (A+ kautta) https://plus.cs.hut.fi Lukemisto https://puzzle.ics.hut.fi/ics-a1120/2015/notes/index.html Luentokalvot http://noppa.aalto.fi/noppa/kurssi/ics-a1120/ Muu materiaali ja tiedotus http://noppa.aalto.fi/noppa/kurssi/ics-a1120/

1. Lämmittelykierros Scala-konsoli, yksikkötestit, ym. tutuksi (ks. lukemisto)! Kerrataan jonojen (sequence) käsittelyä! Kerrataan rekursion perusteet! Kerrataan luokat, oliot, perintä

Tehtävät sequences workout jonojen käsittelyä (map, filter, jne)! Pascal s triangle rekursion harjoittelua! polynomials luokkien, olioiden, perinnän ja rakenteellisen rekursion harjoittelua! longest increasing subsequence (haastetehtävä) pisin kasvava alijono lukujonossa

Kolme tärkeää asiaa (demo): 1) Verkkolukemisto https://puzzle.ics.hut.fi/ics-a1120/2015/notes/ index.html 2) Oikeat työkalut asennettuna https://puzzle.ics.hut.fi/ics-a1120/2015/notes/starttools.html 3) Eclipse-taitojen ABC A) Tehtäväpakettien tuonti Eclipseen B) Scala-konsolin käynnistäminen C) ** Yksikkötestit ennen tehtäväpalautusta ** https://puzzle.ics.hut.fi/ics-a1120/2015/notes/startbasics.html