Tietorakenteet ja algoritmit Y CSE- A1141 (5 op) Syksy 2015 Ari Korhonen 1 CSE-A1141, Ari Korhonen
1. Kurssikuvaus 1.0 Yleistä 1.1 Esitiedot 1.2 Ilmoittautuminen 1.3 Tavoitteet 1.4 Opetuksen järjestelyt ja oppimateriaali 1.5 Tiedottaminen 1.6 Suorittaminen 1.7 Palaute 1.8 Henkilökunta 8.9.2015 CSE-A1141, Ari Korhonen 2
1.0 Yleistä Tietorakenteet ja algoritmit / Kurssikuvaus Kurssi CSE-A1141 on tarkoitettu muille kuin Perustieteiden korkeakoulun opiskelijoille (Perustieteiden korkeakoulun opiskelijat suorittavat kurssin CSE-A1140, joka alkaa torstaina 10.9.2015) Tämän kurssin osasuorituksilla ei voi korvata aikaisempien kurssien osasuorituksia Viime kevään kurssin osasuoritukset eivät kelpaa alkavan kurssin osasuorituksina Huom! Syksyn kurssilla erikseen alleviivattiin, että Alkavan kurssin osasuoritukset ovat voimassa vain vuoden. (lue: TÄLLÄ kurssilla) VARAA KURSSIIN RIITTÄVÄSTI AIKAA, JOTTA SAAT SUORITETTUA KAIKKI HARJOITUKSET KEVÄÄN AIKANA! 8.9.2015 CSE-A1141, Ari Korhonen 3
1.1 Esitiedot Kyky ymmärtää yksinkertaista lausekielistä ohjelmakoodia: muuttujat, sijoitus-, ehto- ja toistolauseet, lohkot, iteraatio, rekursio, jne. Kyky ymmärtää alkeistyypeillä toteutettuja yksinkertaisia rakenteita, joissa käytetään tallennusrakenteina taulukoita, tietueita ja tarvittaessa osoittimia Esimerkkiohjelmissa käytetään jotakin lausekieltä, kuten C:tä, Javaa, Pascalia, Pythonia tai jälkimmäistä muistuttavaa vapaampaa pseudokieltä Ohjelmointiharjoituksen tehdään Python-kielellä. Mutta sinällään algoritmien implementointi jollain tietyllä kielellä ei ole kurssin sisällön kannalta keskeistä 8.9.2015 CSE-A1141, Ari Korhonen 4
1.2 Ilmoittautuminen Kurssille ilmoittaudutaan WebOodin kautta (kurssille/ luennoille). Ilmoittaudu ajoissa (lue: tällä viikolla)! Kurssin kotisivut ja sähköinen tiedotus, ks. MyCourses (MC) Kurssilla on käytössä A+-oppimisympäristö A+-ympäristöön täytyy rekisteröityä käyttäjäksi ensimmäisellä yhteyskerralla (1. kierros avataan aloitusluennon jälkeen) Kaikkiin em. järjestelmiin pääsee kertakirjautumisella (Aaltotunnus + salasana, eli ns. HAKA-login) Laskuharjoitusryhmiin ei tarvitse ilmoittautua. Luokkaan voi mennä tekemään tehtäviä, jos tilaa on. 8.9.2015 CSE-A1141, Ari Korhonen 5
1.3 Tavoitteet Tietorakenteet ja algoritmit / Kurssikuvaus Oppia tuntemaan tärkeimmät tietorakenteet ja niiden käsittelyssä käytettävät algoritmit (algoritmien lukutaito, yksinkertaisten algoritmien suunnittelu ja toteutus) Oppia valitsemaan esiin tulevissa ongelmissa järkevä ratkaisumenetelmä ja soveltamaan sitä käytäntöön Oppia algoritmianalyysin perusteet Kyky perustella valintansa Kyky opiskella itsenäisesti 8.9.2015 CSE-A1141, Ari Korhonen 6
1.3 Tavoitteet... Keskeisiä aihepiirejä ovat lineaariset rakenteet, puurakenteet, verkot perustietorakenteet (jono, pino) prioriteettijonot (binäärikeko) hakurakenteet (hakupuut, hajautusmenetelmät) järjestäminen verkko-algoritmit! 8.9.2015 CSE-A1141, Ari Korhonen 7
1.4 Opetusmuodot Osa kurssin sisällöistä ja luennoista ovat yhteisiä kurssin CSE-A1140 kanssa Yhteiset opetusmuodot molemmilla kursseilla Luennot (ti klo 14-17 A; luentorunko kurssin MC-sivulla) Laskutupa (Maari-C) vapaaehtoiset, ei ilmoittautumista Viikkoharjoitukset, luentotehtävät, projekti, bonustehtävät A+-järjestelmässä Vastaanotot ja verkkokeskustelu Tentti 8.9.2015 CSE-A1141, Ari Korhonen 8
1.4 Opetusmuodot / Luennot Tietorakenteet ja algoritmit / Kurssikuvaus Luennot tiistaisin klo 14-16 salissa A (ks. poikkeuksen MC:ssä) Johdatus kurssin keskeisiin asioihin Luentorunko MC:ssä Sähköinen oppikirja (linkki A+:ssa) tutustu luennon aihepiiriin jo ennen luentoa! Flipped Class (keskustelufoorumilla / sähköpostilla voi esittää kysymyksiä luentoa varten etukäteen, ks. luentotehtävät A+:ssa) Kurssin luennoi vanhempi yliopistonlehtori Ari Korhonen 8.9.2015 CSE-A1141, Ari Korhonen 9
1.3 Opetusmuodot / Laskuharjoitustilaisuudet Toteutetaan laskutupana Keskiviikkoisin 9-16, Maari-C:ssä Paikalla ohjausta antaa 1-2 tuntiassistenttia Vapaaehtoisia (mutta tehtävät pakollisia), ei tarvitse ilmoittautua Voi mennä paikalle tekemään tehtäviä (jos on tilaa) ja kysymään neuvoa assistentilta Tehtävät voi tehdä myös kotona / etänä Laskuharjoitustilaisuuksista vastaavat pääassistentti Tapio Auvinen sekä tuntiassistentit Kasper Hellström, Riikka Soitinaho, Ossi Galkin, Timo Haario ja Esa Koskinen. 8.9.2015 CSE-A1141, Ari Korhonen 10
1.4 Opetusmuodot / Viikkoharjoitukset Pakollinen osasuoritus tehdään kokonaan verkossa (A+) Ohjelmointitehtäviä Python-kielellä (voi tehdä pareittain) Simulaatiotehtäviä, joissa kuvataan, miten annettu ohjelma tai algoritmi muuttaa muuttujien ja tietorakenteiden tilaa Joitakin analyyttisiä tehtäviä Automaattinen välitön palaute Tavoitteena oppia perusalgoritmien toiminta ja niihin liittyvä terminologia käsitteellisellä tasolla Implementaation ymmärtäminen ja toteuttaminen on mahdollista vain, jos on hyvä käsitteellinen ymmärrys algoritmin toiminnasta. 8.9.2015 CSE-A1141, Ari Korhonen 11
1.4 Opetusmuodot / Viikkoharjoitukset (simulaatiot) Algoritmi- ja koodisimulaatiotehtäviä kotilaskujen jakaminen ratkaisujen palautus automaattinen tarkastus ja palaute uudelleenpalautukset mallivastaukset pistekirjanpito WWW-käyttöliittymä Ohjeet verkossa 8.9.2015 CSE-A1141, Ari Korhonen 12
Automaattinen tarkastaminen ja palaute Opiskelija alkutila Algoritmi alkutila T 1 T k T 1 T 2 lopputila lopputila 8.9.2015 CSE-A1141, Ari Korhonen 13
1.4 Opetusmuodot / Ohjelmointitehtävät Perusalgoritmien implementaatiotehtäviä, joissa harjoitellaan algoritmien toteutusta. Ratkaisujen palautus A+:n kautta Automaattinen arviointi ja palaute Useita palautuskertoja / tehtävä Pistekirjanpito Tehtävät keskittyvät ajallisesti kurssin alkupuolelle Pariohjelmointi (ks. extreme programming) sallittua Kurssin loppupuolella oleviin vaativampiin tietorakenteisiin ei liity ohjelmointitehtäviä 8.9.2015 CSE-A1141, Ari Korhonen 14
1.4 Opetusmuodot / Analyysitehtävät Pieni määrä tehtäviä, joissa käsitellään algoritmianalyysiä ja algoritmien analyyttistä vertailua. Monivalintatehtäviä 8.9.2015 CSE-A1141, Ari Korhonen 15
1.4 Opetusmuodot / Tentti Tietorakenteet ja algoritmit / Kurssikuvaus Pakollinen, kaksiosainen Alkuosa, josta saatava vähintään tietty minimipistemäärä (koodin luku- ja kirjoitustaito), mutta joka ei yksin riitä arvosanaan 1. Loppuosa, joka määrää tentin arvosanan Vuoden aikana 2-3 tenttimahdollisuutta Tentteihin tulee ilmoittautua ajoissa! Tenttiajankohdat julkaistaan MC:ssä 8.9.2015 CSE-A1141, Ari Korhonen 16
1.4 Opetusmuodot / Mitoitus Tietorakenteet ja algoritmit / Kurssikuvaus Itsenäisellä asioiden opiskelulla on suuri merkitys: kurssi edellyttää noin 130 tuntia työtä (~9-10 h/vko) 1. ja 2. periodilla. Varaa luentojen (2 h) lisäksi kalenterista aikaa viikottain 7-8 h itsenäiseen opiskeluun (kirjan lukeminen, A+-tehtävät, laskutupa, kertaus, jne.). Osa asioista jää omien muistiinpanojen varaan Muistiinpanojen pohjaksi voi hakea vanhan kurssin opetusmonisteen (https://noppa.aalto.fi/noppa/kurssi/t-106.1223/ materiaali), joka seurailee luentoja 8.9.2015 CSE-A1141, Ari Korhonen 17
1.4 Oppimateriaali Seuraavaa kirjaa suositellaan erityisesti: Tietorakenteet ja algoritmit / Kurssikuvaus T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein: Introduction to algorithms 8.9.2015 CSE-A1141, Ari Korhonen 18
1.4 Oppimateriaali... Myös muita oppikirjoja voi käyttää Tietorakenteet ja algoritmit / Kurssikuvaus Sähköinen oppikirja (A+:ssa ja MC:ssä on linkki) Sisältää vuorovaikutteisia lisätehtäviä Osa tehtävistä myös viikkotehtävinä A+:ssa 8.9.2015 CSE-A1141, Ari Korhonen 19
1.5 Tiedottaminen Kaikki olennainen tiedotus kerrotaan luennoilla ja MC:ssä MC:n keskustelufoorumilla voi esittää yleistä mielenkiintoa sisältäviä kysymyksiä. Seuraa keskustelua säännöllisesti! Kurssin assistentit lukevat sähköpostitunnukselle trak@cs.hut.fi lähetetyt henkilökohtaiset viestit ja pyrkivät vastaamaan kysymyksiin lyhyesti yleensä päivän parin sisällä. Kurssin epäviralliset tiedostuskanavat IRC-kanava: #trak (IRCNet) 8.9.2015 CSE-A1141, Ari Korhonen 20
1.6 Suorittaminen Tietorakenteet ja algoritmit / Kurssikuvaus 1. Harjoitustehtävät (H) verkossa sekä Tentti (T) arvioidaan kukin asteikolla 0-5 2. Kurssin kokonaisarvosana määräytyy seuraavasti: Y-kurssi (5 op): min{1, H, T}*round( 0.5*H + 0.5*T ) 8.9.2015 CSE-A1141, Ari Korhonen 21
1.7 Palaute 1. Rakentava palaute kurssin järjestelyistä on tervetullutta koko kurssin ajan 2. Kurssin lopuksi järjestetään lomakepohjainen palautekysely 3. Palautteeseen vastataan uutisryhmissä ja kurssin kotisivuilla (päivitykset, FAQ, jne.) 8.9.2015 CSE-A1141, Ari Korhonen 22
1.7 Palautetta Osaaminen perustuu liikaa koodausosaamiseen eli jos esitiedot huonosti hallussa, on kurssi todella työläs ja vaikea. Jos osaa koodata, ei pitäisi olla vaikeuksia tällä kurssilla. Kurssi on mielenkiintoinen, ja tällainen tehokkuus on ihan hyvä ymmärtää. 8.9.2015 CSE-A1141, Ari Korhonen 23
1.7 Palautetta Simulaatiotehtävät auttoivat oppimista hyvin, välitön palauta ja eri tietorakenteiden ja algoritmien toiminnan selveneminen. Y-kurssilta puuttuvat ohjelmointitehtävät olisivat varmaan edistäneet oppimista. 3 tuntia on liian pitkä aika keskittyä ja vielä iltapäivällä. 8.9.2015 CSE-A1141, Ari Korhonen 24
8.9.2015 CSE-A1141, Ari Korhonen 25