Kuva: Pexels

Opi tekniikoita ja ideoita, joista on hyötyä tehokkaiden algoritmien luomisessa!

Ohjelmoinnin peruskursseilla olemme oppineet käyttämään muuttujia, ehtoja, silmukoita, taulukoita ja muita ohjelmoinnin menetelmiä. Nyt on aika siirtyä askel eteenpäin ohjelmointitaidon opettelussa ja alkaa kiinnittää huomiota myös algoritmien tehokkuuteen.

Tutustumme kurssilla sekä algoritmien suunnitteluun teoriaan että käytäntöön – haluamme ymmärtää syvällisesti, mistä algoritmeissa on kysymys, mutta myös osata toteuttaa niitä käytännössä.

Massive open online course (MOOC) on avoin verkkokurssi, jolla opiskelu on hyvin itsenäistä. Lisäksi kurssilla on viikoittainen luento sekä pajaohjausta, joihin osallistuminen on vapaaehtoista. Kurssi on mahdollista suorittaa myös keväällä monimuotokurssina.

Materiaalit

Voit ladata kurssin oppikirjan seuraavasta linkistä:

Muu

Kurssin suorittaminen

Pääset kurssijärjestelmään seuraavasta linkistä:

https://tira-s19.mooc.fi/

Ilmoittautuminen ja opintomaksu

Kurssi on maksuton. Voit opiskella sen itsenäisesti Mooc-oppimisympäristössä.

Jos suoritat kurssin ja haluat saada siitä merkinnän Helsingin yliopiston opintosuoritusrekisteriin, tulee sinun ilmoittautua Avoimen yliopiston opiskelijaksi ennen kurssin aloittamista. Tämä tapahtuu tämän opinto-ohjelman kohdasta Ilmoittautuminen. Tarkka ilmoittautumisaika näkyy klikkaamalla Ilmoittaudu-painiketta.

Huom!

  • Kurssin ilmoittautumislomake on auki vain määritellyn ajan (15.9.2019 saakka).
  • Jos ilmoittautumislomakkeelle tai mooc-sivustolle syötetyissä henkilötiedoissa on puutteita tai ne ovat virheellisiä, on suorituksen rekisteröinti mahdotonta.
  • Opintopisteiden rekisteröinti on mahdollista vain niille henkilöille, joilla on suomalainen henkilöturvatunnus.

Jos sinulla on kysyttävää Avoimeen yliopistoon ilmoittautumisesta, ota yhteyttä: avoinyo-tietojenkasittelytiede@helsinki.fi

Kurssin sisältöön tai suoritukseen liittyvissä kysymyksissä voit olla yhteydessä kurssin vastuuhenkilöön (ahslaaks@cs.helsinki.fi)

Käytännön ohjeita opiskeluun
Järjestelyt erityistä tukea tarvitseville

Varaamme oikeuden muutoksiin opinto-ohjelmassa.

Kuvaus

Kurssi on osa DEFA-hankkeen opintotarjontaa ja se on avoin kaikille.

  • Tietojenkäsittelytieteen kandiohjelma vastaa opintojaksosta
  • Opintojakso kuuluu tietojenkäsittelytieteen aineopintoihin (pakollinen oman koulutusohjelman opiskelijoille)

Esitietovaatimuksena on Ohjelmoinnin perus- ja jatkokurssi sekä Johdatus yliopistomatematiikkaan, tai vastaavat tiedot.

Opintojakson jälkeen opiskelija

  • osaa laatia algoritmeja soveltaen opintojaksolla esitettyjä perustekniikoita ja tietorakenteita sekä toteuttaa ne Java-kielellä
  • osaa analysoida algoritmin aika- ja tilavaativuutta O-merkinnän avulla ja perustella algoritmin oikeellisuuden esim. silmukkainvarianttia käyttäen
  • tuntee yksityiskohtaisesti erilaisten hakemistorakenteiden toteutukset
  • osaa toteuttaa tärkeimmät järjestämisalgoritmit ja tuntee niiden aikavaativuudet
  • tuntee verkkojen peruskäsitteet ja osaa toteuttaa tärkeimmät polunetsintään ja virittäviin puihin liittyvät algoritmit
  • käyttää opintojaksolla esitettyjä peruskäsitteitä (esim. hakemistot, verkot, järjestäminen) osana monimutkaisempien laskennallisten ongelmien ratkaisua ja valita tunnetuista algoritmeista tilanteeseen sopivan esim. aikavaativuuden perusteella

Opintojakson tarkempaa sisältöä päivitetään tarpeen mukaan. Keskeisiä aihealueita ovat esim.

  • algoritmien suunnittelun ja analyysin perustekniikoita: rekursio, silmukkainvariantti, iso-O-merkintä, iteratiivisten ja rekursiivisten algoritmien aika- ja tilavaativuus
  • järjestämisalgoritmit: lisäysjärjestäminen, lomitusjärjestäminen, pikajärjestäminen
  • perustietorakenteet: pino, jono, lista
  • hakemistorakenteet: hajautustaulu, hakupuut
  • verkot eli graafit: peruskäsitteet, polunetsintä, virittävät puut

Opintojakso perustuu laitoksella laadittuun luentomateriaallin. Suositeltu oheislukemisto on Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms.

Opiskelija tutustuu opintojakson aiheisiin luennoilla ja perehtymällä itsenäisesti opintojakson materiaaliin, oheislukemistoon ja esim. verkosta löytyvään lisämateriaaliin. Opiskelija syventää osaamistaan tekemällä muodoiltaan ja vaativuudeltaan vaihtelevia harjoitustehtäviä, mitä tuetaan ohjatuilla harjoitustilaisuuksilla.

Sekä harjoitustehtävät että kirjalliset kuulustelut otetaan arvostelussa huomioon. Kuulusteluilla on suurin vaikutus arvosanaan, mutta hyväksytty suoritus edellyttää myös ennalta ilmoitetun vähimmäismäärän tehtyjä harjoitustehtäviä.

Arvosteluasteikko on 1-5.

Voit suorittaa kurssin osana Tietojenkäsittelytieteen osaston DEFA-opintoja (Digital Education For All)

Kurssiin liittyvät kysymykset:

Kurssin opiskelu tapahtuu itsenäisesti Mooc-oppimisympäristössä 02.09.2019 - 21.12.2019 välisenä aikana.

Kurssi muodostuu 14 viikosta, joista jokaisella on 6 tehtävää (eli yhteensä 84 tehtävää). Tehtävät palautetaan sähköisesti, ja niiden arvostelu on automaattinen. Voit ladata kurssin oppikirjan kohdasta Materiaalit.

Tehtävien deadlinet ovat sunnuntaisin klo 23:59 seuraavan aikataulun mukaisesti:

  • Viikot 1–7: 15.9., 22.9., 29.9., 6.10., 13.10., 20.10., 27.10.
  • Viikot 8–14: 10.11., 17.11., 24.11., 1.12., 8.12., 15.12., 22.12.

Lisäksi kurssilla on viikoittainen luento sekä pajaohjausta, joihin osallistuminen on vapaaehtoista.