Kuva: Pexels

Algoritmien ydin - Osa 1

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 opintojaksolla 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ä.

Syksyllä opintojakso järjestetään avoimena MOOC-verkkokurssina (Massive open online course), jolla opiskelu on hyvin itsenäistä. Lisäksi opintojaksolla on viikoittainen luento sekä pajaohjausta, joihin osallistuminen on vapaaehtoista. Opintojakso on mahdollista suorittaa myös keväällä monimuotokurssina.

Huomaa myös jatko-osa Tietorakenteet ja algoritmit II -opintojakso!

Materiaalit

Ilmoittautuminen ja opintomaksu

Opintojakso on maksuton.

Ei ennakkoilmoittautumista. Saat ohjeet kurssi-ilmoittautumiseen kurssimateriaalissa kun olet edennyt viimeisen viikon tehtäviin.

Kurssimateriaali on avoin kaikille ilman kurssi-ilmoittautumista. Mikäli haluat saada opintojaksosta merkinnän Helsingin yliopiston opintosuoritusrekisteriin, tulee sinun ilmoittautua Avoimen yliopiston opintojakson loppupuolella.

Huom!

  • Opintojakson ilmoittautumislomake on auki vain määritellyn ajan (25.10.2020 saakka).
  • Jos ilmoittautumislomakkeelle tai mooc-sivustolle syötetyissä henkilötiedoissa on puutteita tai ne ovat virheellisiä, on suorituksen rekisteröinti mahdotonta.

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

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

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

Kuvaus

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

Tietojenkäsittelytieteen kandiohjelma vastaa opintojaksosta.

Esitietovaatimuksena on

  • Ohjelmoinnin perus- ja jatkokurssi (AYTKT10002 ja AYTKT10003) sekä
  • Johdatus yliopistomatematiikkaan (AYMAT11001),

tai vastaavat tiedot.

Kurssin jälkeen osaat

  • analysoida algoritmin aika- ja tilavaativuuden O-merkinnän avulla ja perustella algoritmin oikeellisuuden yksinkertaisissa tilanteissa,
  • valita tilanteeseen sopivan algoritmin esim. aikavaativuuden perusteella,
  • selittää toteutusperiaatteet edustavalle kokoelmalle perustietorakenteita ja -algoritmeja (esim. hakemistorakenteet, järjestäminen) ja tuntee niiden aika- ja tilavaativuudet, sekä
  • soveltaa edellä mainittuja tietorakenteita ja algoritmeja tehokkaiden algoritmien laatimisessa ja toteuttamisessa ohjelmointikielen tasolla.

Opintojakson keskeisiä aihealueita ovat

  • algoritmien suunnittelun ja analyysin perustekniikoita: iso-O-merkintä, iteratiivisten algoritmien aika- ja tilavaativuus
  • järjestämisalgoritmit: lisäysjärjestäminen, lomitusjärjestäminen, pikajärjestäminen
  • perustietorakenteet: pino, jono, lista
  • tehokkaat hakemistorakenteet: hajautustaulu, hakupuut
  • Kurssi perustuu tietojenkäsittelytieteen osastolla laadittuun oppimateriaallin.
  • Suositeltu oheislukemisto on Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms.

Opintojakson arvosana määrittyy viikottain suoritettavien automaattisesti arvosteltavien tehtävien mukaan.

Arvosteluasteikko on 0-5.

Opintojaksoon liittyvät kysymykset:

Opintojakson opiskelu tapahtuu itsenäisesti Mooc-oppimisympäristössä 31.8.2020-25.10.2020 välisenä aikana.

  1. Opiskele kurssimateriaali ja
  2. tee kurssimateriaalissa olevat tehtävät. Opintojakson tehtävät suoritetaan MOOC-ympäristössä, josta löydät materiaalit ja ohjeet opintojakson suorittamiseksi.
  3. Ilmoittaudu opintojaksolle Avoimen yliopiston kautta. Saat ohjeet kurssi-ilmoittautumiseen kurssimateriaalissa kun olet edennyt viimeisen viikon tehtäviin.
  4. Lisäksi opintojaksolla on viikoittainen luento sekä pajaohjausta, joihin osallistuminen on vapaaehtoista.

Tehtävät

Opintojakso muodostuu 7 viikosta, joista jokaisella on 8 tehtävää (eli yhteensä 56 tehtävää). Tehtävät palautetaan sähköisesti, ja niiden arvostelu on automaattinen. Voit ladata opintojakson oppikirjan kohdasta Materiaalit.

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

  • 13.9., 20.9., 27.9., 4.10., 11.10., 18.10., 25.10.

Opintojakso on osa tietojenkäsittelytieteen koulutusohjelman aineopintoja.

Kurssin aihepiirejä opitaan syvemmin jatkokurssilla Tietorakenteet ja algoritmit II (AYTKT200012)

Kurssilla opittuja menetelmiä sovelletaan kurssilla Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit.