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

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

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

Abstraktiot ja analyysi algoritmit ja informaation esitykset

Tietokoneen mysteeri bitit ja data

Tietokoneen mysteeri bitit ja data

Tietokoneen mysteeri ohjelmoitava kone

Tietokoneen mysteeri bitit ja data

Tietokoneen mysteeri ohjelmoitava kone

Uuden äärellä ohjelmoitava vai oppiva kone?

Uuden äärellä ohjelmoitava vai oppiva kone?

T harjoitustehtävät, syksy 2011

Uuden äärellä rinnakkaisuus ja samanaikaisuus

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

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

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

KJR-C2002 Kontinuumimekaniikan perusteet Kurssiesite

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

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

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

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

ELEC-C7230 Tietoliikenteen siirtomenetelmät

T harjoitustyö, kevät 2012

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

ELEC-C7230 Tietoliikenteen siirtomenetelmät. Yleistä

Tietokoneen toiminta (Computer Organization I)

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

11/20: Konepelti auki

Tietokoneen toiminta (Computer Organization I)

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

Tietokoneen toiminta (Computer Organization I)

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

Kurssin aloitus. AS XML-kuvauskielten perusteet Janne Kalliola

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

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

T Johdatus tietoliikenteeseen 5 op. Kevät 2013

Tietokoneen toiminta (Computer Organization I)

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

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

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

ENE-C3001 Energiasysteemit

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

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

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

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

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

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

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

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

Mallilukujärjestys 1. vuosi 2013

Ohjelmoinnin perusteet Y Python

Kon Hydrauliikka ja pneumatiikka Tutkimustehtävät - info

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

OPETUSSUUNNITELMALOMAKE

Tuloslaskenta (22C00400, 6 op)

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

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

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

LC-8011 Työelämän venäjän perusteet 1. Aalto-yliopisto Kielikeskus Alexandra Belikova

Tietorakenteet ja algoritmit CSE- A1140 (5 op)


T Johdatus tietoliikenteeseen 5 op

Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

Ohjelmoinnin peruskurssi Y1

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Luento 0: Kurssihallinto Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

Johdanto kurssiin ja ohjelmoijan työkaluihin

Tietokonearkkitehtuuri 2 TKT-3201 (5 op)

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

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

Tietorakenteet ja algoritmit Y CSE- A1141 (5 op)

ENE-C3001 Energiasysteemit

Korkealämpötilakemia

MA/MÅ TI KE/ON TO PE/FR PHYS-A3121 H05 RUOTSI. Differentiaali- ja integraalilaskenta 1. (ENG1) Luento PHYS-A3121 H02 CSE-A1111 H14 H11

21C21000 Kiertotalouden strategiat ja johtaminen (6 op)

Luento 1 Tietokonejärjestelmän rakenne

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

OPETUSSUUNNITELMALOMAKE

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

Tietoturva. 0. Tietoa kurssista P 5 op. Oulun yliopisto Tietojenkäsittelytieteiden laitos Periodi / 2015

Ohjelmoinnin peruskurssi Y1

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Korkealämpötilakemia

Ohjelmoinnin peruskurssien laaja oppimäärä

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

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

Harjoitustyöinfo kevät TU-A1100 Tuotantotalous 1

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

Harjoitustyöinfo kevät TU-A1100 Tuotantotalous 1

Tuloslaskenta (22C00400, 6 op)

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

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

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

19/20: Ikkuna olio-ohjelmoinnin maailmaan

Kurssin oppimistavoitteet. Heikki Lokki Kurssin suorituksen jälkeen osaat

CUDA. Moniydinohjelmointi Mikko Honkonen

Ohjelmoinnin peruskurssi Y1

Transkriptio:

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

Rekisteröidy kurssille Oodissa https://oodi.aalto.fi/a/ Want to take ICS-A1120 in English as a self-study? Please follow the instructions here: https://mycourses.aalto.fi/course/view.php?id=6064

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 = s + i i = i + 1 } s // s = 1 + 2 +... + m 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

Koneen suorituskyvyn äärirajoilla (***) [demo]

Laitteisto Koejärjestely (1/2) CSC Tieteellinen laskenta Taito -superklusteri, Kajaani Varattu klusterista 1 kpl Haswell -laskentasolmu 2 x Intel Xeon E5-2690v3 CPU @ 2.6 GHz (2 prosessoria, Haswell-mikroarkk., 12+12 = 24 suoritusydintä) 8 x HP 752369-081 DDR4 16384 MiB 2133 MHz 1.2V RDIMM (128 GiB keskusmuistia, 4+4 muistikanavaa prosessoreille) Koe Kerrotaan keskenään 2 kpl tuplatarkkuus-liukulukumatriiseja kokoa 24576 x 24576 (= 4.8 GB/matriisi), jolloin suoritetaan noin 2 x 24576 3 ~= 29 686 000 000 000 laskutoimitusta

http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html (***)

http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html (***)

(Intel Xeon E7 v2 -lastu, Haswell-mikroarkkitehtuuri, 2.8 GHz kellotaajuus, 15 suoritusydintä, 4.3 miljardia transistoria, 22 nanometrin litografia) (CSC Tieteellinen laskenta, Kajaani)

2 2.6 12 2 2 4 = 998.4 GFLOPS (miljardia laskutoimitusta sekunnissa; teoreettinen maksimi) 2 prosessoria (Intel Xeon E5-2690v3) 2.6 GHz kellotaajuus (2.6 miljardia kellojaksoa/sekunti) 12 suoritusydintä/prosessori 2 FMA (fused-multiply-add) AVX2 suoritusporttia/ydin 2 liukulukulaskutoimitusta kellojaksossa/portti 4 kpl 64-bittisiä tuplatarkkuus-liukulukuja / AVX2-rekisteri http://ark.intel.com/products/81713/intel-xeon-processor-e5-2690-v3-30m-cache-2_60-ghz

Intel Haswell konekieliesimerkki (***) 1029: c4 e2 7d 19 02 vbroadcastsd (%rdx),%ymm0 102e: c4 e2 7d 19 0c 0a vbroadcastsd (%rdx,%rcx,1),%ymm1 1034: c4 e2 7d 19 14 4a vbroadcastsd (%rdx,%rcx,2),%ymm2 103a: 48 83 c2 08 add $0x8,%rdx 103e: c5 fd 28 18 vmovapd (%rax),%ymm3 1042: c4 e2 fd b8 e3 vfmadd231pd %ymm3,%ymm0,%ymm4 1047: c4 e2 f5 b8 eb vfmadd231pd %ymm3,%ymm1,%ymm5 104c: c4 e2 ed b8 f3 vfmadd231pd %ymm3,%ymm2,%ymm6 1051: c5 fd 28 58 20 vmovapd 0x20(%rax),%ymm3 1056: c4 e2 fd b8 fb vfmadd231pd %ymm3,%ymm0,%ymm7 105b: c4 62 f5 b8 c3 vfmadd231pd %ymm3,%ymm1,%ymm8 1060: c4 62 ed b8 cb vfmadd231pd %ymm3,%ymm2,%ymm9 1065: c5 fd 28 58 40 vmovapd 0x40(%rax),%ymm3 106a: c4 62 fd b8 d3 vfmadd231pd %ymm3,%ymm0,%ymm10 106f: c4 62 f5 b8 db vfmadd231pd %ymm3,%ymm1,%ymm11 1074: c4 62 ed b8 e3 vfmadd231pd %ymm3,%ymm2,%ymm12 1079: c5 fd 28 58 60 vmovapd 0x60(%rax),%ymm3 107e: c4 62 fd b8 eb vfmadd231pd %ymm3,%ymm0,%ymm13 1083: c4 62 f5 b8 f3 vfmadd231pd %ymm3,%ymm1,%ymm14 1088: c4 62 ed b8 fb vfmadd231pd %ymm3,%ymm2,%ymm15 108d: 48 01 c8 add %rcx,%rax 1090: 48 ff cb dec %rbx 1093: 75 94 jne 1029 Esimerkki: Matriisikertolaskualirutiinin sisin silmukka Intel x86 64 konekielellä käyttäen hyväksi Haswell- mikroarkkitehtuurin tukemia AVX2 & FMA -käskykantalaajennuksia https://github.com/pkaski/cluster-play/blob/master/haswell-mm-test/libmynative.c

Laitteisto Koejärjestely (2/2) Apple MacBook Pro (early 2015 model) 1 x Intel Core i7-5557u CPU @ 3.10 GHz (1 prosessori, Broadwell-mikroarkkitehtuuri, 2 suoritusydintä) 2 x 8 GiB LPDDR3-1866 DIMM (16 GiB keskusmuistia, 2 muistikanavaa prosessorille) Koe Kerrotaan keskenään 2 kpl tuplatarkkuus-liukulukumatriiseja kokoa 6144 x 6144 (~= 300 MB/matriisi), jolloin suoritetaan noin 2 x 6144 3 ~= 464 000 000 000 laskutoimitusta

1 3.1 2 2 2 4 = 99.2 GFLOPS (miljardia laskutoimitusta sekunnissa; teoreettinen maksimi) 1 prosessori (Intel Core i7-5557u) 3.1 GHz kellotaajuus (3.1 miljardia kellojaksoa/sekunti) 2 suoritusydintä/prosessori 2 FMA (fused-multiply-add) AVX2 suoritusporttia/ydin 2 liukulukulaskutoimitusta kellojaksossa/portti 4 kpl 64-bittisiä tuplatarkkuus-liukulukuja / AVX2-rekisteri http://ark.intel.com/products/84993/intel-core-i7-5557u-processor-4m-cache-up-to-3_40-ghz

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 2016 muodostaa summana kokonaisluvuista 87, 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)

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

Osajoukkosumma-ongelmasta enemmän (***) http://dx.doi.org/10.4230/lipics.stacs.2016.13 STACS 16 February 17 20, 2016 Orléans, France

Comm. ACM, January 2016 (***) Comm. ACM, March 2013 (***)

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 (Intel Xeon Phi Knights Landing -lastu, 72 suoritusydintä, 8 miljardia transistoria, 14 nanometrin litografia) (Google Hamina)

ICS-A1120 kevät 2016 12 tehtäväkierrosta (yhteispisteistä arvosana) Huom: Kevään 2016 toteutuksessa kurssisuoritukseen ei kuulu tenttiä Lämmittelykierros + 3 moduulia (4+4+3 tehtäväkierrosta)

Sisältö (kierrokset ja moduulit) I 1. Lämmittelykierros Tietokoneen mysteeri 2. Bitit ja data 3. Kombinaatiologiikka 4. Sekventiaalilogiikka 5. Ohjelmoitava kone II Abstraktiot ja analyysi 6. 7. 8. 9. III Funktionaalinen ohjelmointityyli Suorituskykyanalyysi Rekursio Algoritmit ja informaation esitykset 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 Kierroskohtaiset tarkat määräajat seuraavalla kalvolla Kaikki määräajat Suomen aikaa 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 (klo 20:00) 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? Tämän viikon perjantai Varsinainen määräaika 26.2. 4.3. 11.3. 18.3. 24.3. 12.4. 19.4. 3.5. 10.5. 13.5. 17.5. 20.5. Jatkoajan määräaika (70% pisteistä) 8.3. 15.3. 22.3. 29.3. 1.4. 22.4. 3.5. 10.5. 17.5. 31.5. 31.5. 31.5.

Mitoitus (= 5 op) 5 op = noin 133h työtä 12 tehtäväkierrosta Kierros = 11h työtä 2h luento 9h itsenäinen työskentely (tehtävät)

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

Kurssin suorittaminen ja arvostelu Ratkaisemalla tehtäviä (riittävä pistemäärä arvosanaan 1) 12 kierrosta Jokaiselta mahdollisuus saada ainakin 400 pistettä, poislukien lämmittelykierros, josta mahdollista saada ainakin 200 pistettä Arvosteluasteikko: alle 1200 pistettä hylätty vähintään 1200 pistettä arvosana 1 vähintään 1900 pistettä arvosana 2 vähintään 2600 pistettä arvosana 3 vähintään 3300 pistettä arvosana 4 vähintään 4000 pistettä arvosana 5

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: Kilpaohjelmointia http://cs.aalto.fi/fi/studies/competitive_programming/

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. MyCourses) Itsenäinen työ Palaute assistenteilta (A+ kautta) IRC-kanava #ics-a1120 Assistentit auttavat (vuorot Maari A ja T7) (vertaistuki & assistenttipäivystys) Vastuuopettajan vastaanottoaika (keskiviikkoisin klo 16 17 T-talo 3.krs. huone A334; tenttiviikkoina ei vastaanottoa) tarkista poikkeukset MyCourses-sivulta

Kurssikalenteri

Viikkoharjoitukset (Maari A ja T7) Määräaikapäivinä (ti, pe) yksi tuplavuoro

Materiaali Tehtävät ja palautus (A+ kautta) https://plus.cs.hut.fi Lukemisto https://puzzle.ics.hut.fi/ics-a1120/2016/notes/ index.html MyCourses https://mycourses.aalto.fi/course/view.php?id=6064

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/2016/notes/ index.html 2) Oikeat työkalut asennettuna 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/2016/notes/starttools.html https://puzzle.ics.hut.fi/ics-a1120/2016/notes/startbasics.html

Lämmittely-tehtäväkierros Määräaika perjantaina (26.2.) Rohkeasti tehtävien pariin!