Tietorakenteet ja algoritmit CSE- A1140 (5 op) Syksy 2015 Ari Korhonen 10.9.2015 CSE-A1140, Ari Korhonen 1
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 10.9.2015 CSE-A1140, Ari Korhonen 2
1.0 Yleistä Tietorakenteet ja algoritmit / Kurssikuvaus Kurssi CSE-A1140 on tarkoitettu Perustieteiden korkeakoulun opiskelijoille (muiden koulujen opiskelijat suorittavat kurssin CSE-A1141, joka alkoi tiistaina 8.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! Myös viime 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 SYKSYN AIKANA! 10.9.2015 CSE-A1140, 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 Scalalla. Sinällään algoritmien implementointi jollain tietyllä kielellä ei ole kurssin sisällön kannalta keskeistä 10.9.2015 CSE-A1140, Ari Korhonen 4
1.2 Ilmoittautuminen Kurssille ilmoittaudutaan kurssin WebOodin kautta (kurssille/luennoille). Ilmoittaudu ajoissa (lue: tällä viikolla)! Kurssin kotisivut löytyvät MyCoursesista (jatkossa MC) ja esim. keskusteluryhmää pääsee seuraamaan, kun on ilmoittautunut WebOodissa 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 on jo auki) Kaikissa em. järjestelmissä käytetään Aalto-tunnuksia ja salasanaa (HAKA-login, single-sign-on) Laskuharjoitusryhmiin ei tarvitse ilmoittautua. Luokkiin voi mennä tekemään tehtäviä, jos tilaa on. 10.9.2015 CSE-A1140, 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 10.9.2015 CSE-A1140, 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! 10.9.2015 CSE-A1140, Ari Korhonen 7
1.4 Opetusmuodot Osa kurssin sisällöistä ja luennoista ovat yhteisiä kurssin CSE-A1141 kanssa Yhteiset lähiopetusmuodot molemmilla kursseilla Luennot torstaina 10.9.-1.10. klo 14-16 T1:ssä, jatkossa tiistaisin klo 14-16 A-salissa; luentorunko löytyy kurssin MC-sivuilta Laskutupa vapaaehtoiset, ei ilmoittautumista Viikkoharjoitukset, luentotehtävät, projekti Muuta A+-järjestelmässä pakolliset Vastaanotot ja verkkokeskustelu (MC) Lopputentti (pakollinen osasuoritus) 10.9.2015 CSE-A1140, Ari Korhonen 8
1.4 Opetusmuodot / Luennot Tietorakenteet ja algoritmit / Kurssikuvaus Luennot torstaisin (myöhemmin tiistaisin) klo 14-16 salissa T1 (myöhemmin A- eli Aalto-sali Johdatus kurssin keskeisiin asioihin Luentorunko MC:ssä Sähköinen oppikirja (linkki A+:ssa) tutustu luennon aihepiiriin jo ennen luentoa! Flipped Class (keskustelufoorumilla voi esittää kysymyksiä luentoa varten etukäteen, ks. luentotehtävät A+:ssa) Kurssin luennoi tutkija Ari Korhonen 10.9.2015 CSE-A1140, Ari Korhonen 9
1.3 Opetusmuodot / Laskuharjoitustilaisuudet Toteutetaan laskutupana Keskiviikkoisin 9-16, Maari C 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. 10.9.2015 CSE-A1140, Ari Korhonen 10
1.4 Opetusmuodot / Viikkoharjoitukset Pakollinen osasuoritus tehdään kokonaan verkossa (A+) Ohjelmointitehtäviä Scala-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. 10.9.2015 CSE-A1140, 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 10.9.2015 CSE-A1140, Ari Korhonen 12
Automaattinen tarkastaminen ja palaute Opiskelija alkutila T 1 T k Algoritmi alkutila T 1 T 2 lopputila lopputila 10.9.2015 CSE-A1140, 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ä 10.9.2015 CSE-A1140, 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ä 10.9.2015 CSE-A1140, Ari Korhonen 15
1.4 Opetusmuodot / Tentti Pakollinen, kaksiosainen Tietorakenteet ja algoritmit / Kurssikuvaus 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 Kurssi päättyy tenttiin joulukuussa Toinen tentti keväällä ja viimeinen mahdollisesti kesällä 2016 10.9.2015 CSE-A1140, 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-10h/vko) 1. ja 2. periodilla. Varaa luentojen lisäksi kalenterista aikaa viikottain 7-8h 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 10.9.2015 CSE-A1140, 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 10.9.2015 CSE-A1140, 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 10.9.2015 CSE-A1140, 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 ryhmiä 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) 10.9.2015 CSE-A1140, 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 ) 10.9.2015 CSE-A1140, 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 (WWW) 3. Palautteeseen vastataan uutisryhmissä ja kurssin kotisivuilla (päivitykset, FAQ, jne.) 10.9.2015 CSE-A1140, 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ää. 10.9.2015 CSE-A1140, Ari Korhonen 23
1.7 Palautetta Trakla-tehtä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ä. 10.9.2015 CSE-A1140, Ari Korhonen 24
10.9.2015 CSE-A1140, Ari Korhonen 25