Opinnot Avoimessa yliopistossa

Tietojenkäsittelytieteen perusopinnot 25 op

Valitse toinen opintojaksoista:

Johdatus tietojenkäsittelytieteeseen, 5 op

Opintojakson suoritettuasi

  • sinulla on yleiskuva tietojenkäsittelytieteestä, mukaan lukien perustietoa alan etiikasta ja immateriaalioikeudesta.
  • osaat hakea tieteellistä kirjallisuutta ja lukea tieteellistä kirjallisuutta englanniksi, sekä
  • osaat kirjoittaa alan asiatekstiä.

Ei edeltäviä yliopisto-opintoja. Kurssilaisilta ei edellytetä tietojenkäsittelytieteen muiden kurssien aiempaa suorittamista, mutta alan englanninkielistä tekstiä on syytä osata lukea.

Peruttu
Peruttu

Computing and Society, 5 op

In this course, you will familiarise yourself with central societal questions related to the application of information technology. The matters examined are related, among other things, to the increased use and diversification of information technology, ethical choices, information security and copyright.

No prerequisites.

Valitse toinen opintojaksoista:

Ohjelmoinnin perusteet, 5 op

Opintojaksolla perehdyt nykyaikaisen ohjelmoinnin perusideoihin sekä ohjelmoinnissa käytettävien työvälineiden lisäksi algoritmien laatimiseen. Ohjelmointikielenä opintojaksolla on Python.

Voit suorittaa kurssin täysin verkossa niin mooc-kurssilla kuin luentokurssillakin. Luentokurssilla on kuitenkin opetusta kun taas mooc-kurssilla opiskellaan enemmän itsenäisesti.

Opintojakson jälkeen

  1. ymmärrät periaatteen tasolla algoritmien ja tietokoneen toiminnan ja ohjelmoinnin rooli tässä toiminnassa,
  2. osaat kirjoittaa itse imperatiiviseen paradigmaan perustuvia yksinkertaisen ongelman ratkaisevia ohjelmia ja
  3. osaat käyttää ohjelmointikieltä työvälineenä datan käsittelemiseksi esimerkiksi opiskeluun, työhön tai harrastuksiin liittyvissä tilanteissa.

Opintojaksolla ei ole esitietovaatimuksia. Ennakkotietoja ohjelmoinnista ei edellytetä.

Introduction to Programming, 5 op

There are no prerequisites for the course.

Valitse toinen opintojaksoista:

Ohjelmoinnin jatkokurssi, 5 op

Opintojaksolla perehdyt nykyaikaisen ohjelmoinnin perusideoihin sekä ohjelmoinnissa käytettävien työvälineiden lisäksi algoritmien laatimiseen. Ohjelmointikielenä opintojaksolla on Python.

Voit suorittaa kurssin täysin verkossa niin mooc-kurssilla kuin luentokurssillakin. Luentokurssilla on kuitenkin opetusta kun taas mooc-kurssilla opiskellaan enemmän itsenäisesti.

Opintojakson jälkeen

  1. sinulla on hyvät käytännön ohjelmalliset ongelmanratkaisutaidot,
  2. tunnet ja osaat jossain määrin soveltaa imperatiivisen paradigman lisäksi muita ohjelmointiparadigmoja (esimerkiksi olio-ohjelmointi tai funktionaalinen ohjelmointi) ja
  3. tunnet ohjelmointiin liittyviä käsitteitä ja teorioita.

Opintojakson esitietovaatimuksena on ohjelmoinnin perusteiden tunteminen. Erityisesti Python-kieltä on osattava siinä laajuudessa kuin sitä opitaan jaksolla Ohjelmoinnin perusteet (AYTKT10002).

Advanced Course in Programming, 5 op

It is recommended that you have completed Introduction to Programming (AYBSCS1001en) before taking this course.

Suorita kaikki opintojaksot:

Tietokantojen perusteet, 5 op

Kurssin jälkeen opiskelija

  • ymmärtää, mitä haasteita tietokantajärjestelmän toteuttamiseen liittyy
  • osaa suunnitella relaatiomallin mukaisia tietokantoja
  • osaa SQL-kielen perusteet ja suunnitella omia kyselyitä
  • tuntee transaktioiden ja indeksien periaatteet

Kurssin esitietovaatimuksena on Ohjelmoinnin perusteet (TKT10002) ja Ohjelmoinnin jatkokurssi (TKT10003). Näiden kurssien materiaaliin voi tutustua mm. osoitteessa: https://ohjelmointi-21.mooc.fi/

Tietokoneen toiminnan perusteet, 2 op

Kurssi tietokoneen perustoiminnoista. Kurssilla opit perusasiat tietokoneen rakenteesta ja kuinka se suorittaa ohjelmia.

On suositeltavaa, että opiskelija osaa ohjelmoida korkean tason kielellä ennen kurssille osallistumista. Esimerkiksi kurssi Ohjelmoinnin perusteet antaa hyvät esitiedot. Ohjelmointitaito ei kuitenkaan ole välttämätöntä.

Tietokoneen toiminnan jatkokurssi, 3 op

  • Osaa selittää väylä- ja muistihierarkian perusajatukset. Osaa selittää välimuistin ja virtuaalimuistin toiminnan perusteet. Osaa selittää, milloin ja miten prosessorin suoritustila vaihtuu. Osaa selittää keskeytysjärjestelmän toiminnan.
  • Osaa toteuttaa globaalien muuttujat, vakiot, tietueet ja yksinkertaiset taulukot ja selittää niiden tilanvarauksien toteutuksen käännöksen, latauksen tai suorituksen aikana. Osaa ohjelmoida valinta- ja toistorakenteet sekä toteuttaa aliohjelmien kutsut. Osaa toteuttaa tietueiden, olioiden ja moniulotteisten taulukoiden (eri tavoin talletettuna) tilanvaraukset ja niihin viittaamisen. Osaa selittää globaalien ja paikallisten tietorakenteiden erot tilanvarauksessa ja niihin viittaamisessa ja osaa käyttää aktivointitietueita ja aktivointitietuepinoa (rekursiivisten) aliohjelmien toteutuksessa.
  • Osaa selittää ja ottaa huomioon liukulukujen tarkkuuden muutokset laskennan aikana. Osaa käyttää tiedon muuttumattomuuden suojauksen perusmenetelmiä (pariteettibitti, Hamming-koodi).
  • Osaa selittää prosessin käsitteen ja sen esitysmuodon käyttöjärjestelmässä sekä prosessin erilaiset tilat ja niiden väliset tilasiirtymät. Osaa selittää, milloin ja miten suorituksessa oleva prosessi vaihtuu. Osaa luetella käyttöjärjestelmän perustoiminnot. Osaa selittää käännöksen, linkityksen ja latauksen perusideat.
  • Osaa selittää käyttöjärjestelmän tavoitteet ja perustoiminnot sekä käyttäjän näkökulmasta että käyttöjärjestelmän ylläpitäjän näkökulmasta. Osaa selittää käyttöjärjestelmäpalvelujen toteutusmekanismin erilaisten (etuoikeutettujen) aliohjelmien tai prosessien avulla. Osaa selittää staattisen ja dynaamisen linkityksen edut ja haitat.
  • Osaa selittää käyttöjärjestelmän laitteistorajapinnan toteutuksen laiteajurien ja keskeytyskäsittelijöiden avulla. Osaa selittää tiedostopalvelimen ja tiedostovälimuistin perusidean. Osaa selittää levymuistin rakenteen ja toiminnan sekä laskea levymuistiin talletetun tiedoston saantiajan. Osaa luokitella erilaiset I/O-menetelmät.
  • Osaa selittää Java-ohjelmien erilaiset suoritustavat ja niiden eroavaisuudet. Osaa selittää Java-virtuaalikoneen (JVM) perusrakenteen ja toiminnan sekä valita tiettyyn sovellukseen sopivan Java-ohjelmien suoritustavan. Osaa selittää JIT-kääntämisen perusidean.

On suositeltavaa, että opiskelija osaa ohjelmoida korkean tason kielellä ennen kurssille osallistumista. Esimerkiksi kurssi Ohjelmoinnin perusteet antaa riittävät esitiedot.

Tämä kurssi on suoraan jatkoa Tietokoneen toiminnan perusteet -kurssille, joka tulee olla suoritettuna ensin.

Tietojenkäsittelytieteen aineopintoja

Tietoliikenteen perusteet 1, 2 op

Kurssin suoritettuasi

  • osaat selittää ”miten Internet toimii” .
  • osaat kuvailla internetin keskeisten palvelujen toimintaa yleisellä tasolla.
  • osaat selittää yleisellä tasolla miten lähettävän ohjelman viesti saadaan IP-pakettiin ja miten IP-paketti välitetään Internetissä viestin vastaanottajalle.
  • osaat selittää reitittimen, keskittimen ja kytkimen toiminnallisuuksia. Osaa kuvata pakettien, kehysten ja muiden viestien sisältöjä.
  • tunnet kotiverkon toimintaan liityvät keskeiset käsitteet ja osaa niiden avulla arvioida verkon toiminnallisuutta käyttäjän näkökulmasta.

Ei pakollisia ennakkotietovaatimuksia. Seuraavien asioiden hallinnasta on hyötyä kurssin suorittamisessa:

  • Tietokoneen toiminnan perusteet ja jatkokurssilla (AYTKT200051 ja AYTKT200052) käsitellyistä teemoista tarvitaan keskeytykset ja oheislaitteiden käyttötapojen ymmärtäminen, bittitason esityksen tunteminen
  • Tietorakenteet ja algoritmit I ja II (AYTKT200011 ja AYTKT200012) kursseilta tarvitaan Dijkstran algoritmin ja Bellman-Ford -algoritmin tuntemus tai ainakin yleinen algoritmien lukutaito
  • Laskennan mallit -kurssin käsittelemien äärellisten automaattien tunteminen tukee myös kurssin suorittamista.

Nämä kurssit eivät ole pakollisia ennakkotietoja, mutta silloin oletetut ennakkotiedot joutuu opiskelemaan itsekseen kurssin kuluessa.

Tietoliikenteen perusteet 2, 3 op

Tämä on kurssin Tietoliikenteen perusteet jälkimmäinen osasuoritus, siksi oppimistavoitteet ovat pääkurssin kanssa yhtenäiset.

Kurssin suoritettuasi

  • osaat selittää ”miten Internet toimii” ja perustellen kuvata siinä käytettyjä rakenteellisia, teknisiä ja toiminnallisia periaatteita (kuten toimintamallit, rakenneosat, erilaiset osoitteet ja tunnisteet, datan siirto protokollapinon avulla, luotettava kuljetuspalvelu, vuonvalvonta, TCP:n ruuhkanhallinta).
  • osaat selittää asiakas-palvelija malliin perustuvien verkkosovellusten sekä niiden toteutuksessa käytettyjen sovellusprotokollien periaatteet. Osaa kuvata vertaistoimijamallin idean. Osaa selittää, mihin tarvitaan nimipalvelua (DNS) ja kuvata sen rakenteen ja toiminnan.
  • osaat selittää toisaalta miten lähettävän ohjelman viesti saadaan IP-pakettiin ja toisaalta miten IP-paketti välitetään Internetissä viestin vastaanottajalle.
  • osaat selittää reitittimen, keskittimen ja kytkimen toiminnan ja erot. Osaa kuvata pakettien, kehysten ja muiden viestien sisältöjä ja rakenteita.
  • osaat kuvata tietoliikenteeseen kohdistuvat riskitekijät ja turvallisuusuhat. Osaa selittää kuinka palomuuri toimii

Edeltävä suoritus Tietoliikenteen perusteet 1.

Lisäksi:

  • Tietokoneen toiminta kurssilla käsitellyistä teemoista tarvitaan keskeytykset ja oheislaitteiden käyttötapojen ymmärtäminen, bittitason esityksen tunteminen
  • Tietorakenteet ja algoritmit kurssilta tarvitaan Dijkstran algoritmin ja Bellman-Ford -algoritmin tuntemus tai ainakin yleinen algoritmien lukutaito

Kummankaan kurssin ei tarvitse olla pakollinen ennakkotieto, mutta silloin joutuu nämä teemat opiskelemaan itsekseen kurssin kuluessa.

Tietorakenteet ja algoritmit I, 5 op

Tietorakenteet ja algoritmit II, 5 op

Kurssin jälkeen osaat

  • analysoida aika- ja tilavaativuutta ja algoritmin oikeellisuutta normaaleissa tilanteissa,
  • selittää toteutusperiaatteet kattavalle kokoelmalle perustietorakenteita ja -algoritmeja (esim. verkkorakenteet, polun etsiminen) ja perustella niiden aika- ja tilavaativuudet, sekä
  • käyttää sujuvasti em. tietorakenteita ja algoritmeja sekä ohjelmointikielen tarjoamia työkaluja (esim. rekursio) ongelmanratkaisussa.

Esitietoina edellytetään kurssin Tietorakenteet ja algoritmit I (AYTKT200012) tiedot (ja kyseisen kurssin esitiedot).

Algoritmit ongelmanratkaisussa, 10 op

Kurssin jälkeen opiskelija

  • osaa C++-kielen perusasiat ja pystyy toteuttamaan sillä algoritmeja
  • tuntee tärkeimmät C++-standardikirjaston tietorakenteet ja algoritmit
  • osaa käyttää binäärihakua, dynaamista ohjelmointia ja segmenttipuuta monipuolisesti algoritmien suunnittelussa
  • tuntee joitakin edistyneempiä algoritmitekniikoita (esim. Z-algoritmi, verkon 2-yhtenäisyys, treap-rakenne)

Esitietovaatimuksena on kurssi Tietorakenteet ja algoritmit (tai vastaavat tiedot)

Kurssilla on hyötyä hyvästä ohjelmointitaidosta ja matemaattisesta yleissivistyksestä

Functional Programming I, 5 op

Functional Programming II, 5 op

Computing and Society, 5 op

In this course, you will familiarise yourself with central societal questions related to the application of information technology. The matters examined are related, among other things, to the increased use and diversification of information technology, ethical choices, information security and copyright.

No prerequisites.

Ohjelmistotekniikka, 5 op

Kurssilla tutustutaan eräisiin keskeisiin ohjelmistojen suunnitteluperiaatteisiin, ohjelmistotuotantoprosessin vaiheisiin, versionhallintaan, testaukseen sekä ohjelmiston rakenteen ja toiminnan mallintamiseen UML-kielen avulla. Opittua sovelletaan harjoitustyötä laadittaessa.

Esitietovaatimuksena ovat Ohjelmoinnin jatkokurssi ja Tietokantojen perusteet tai vastaavat tiedot.

Operating Systems, 5 op

After the course you can

  • summarize the key services of an operating system (OS) and their operation
  • describe the essential structures of an OS together with their interfaces
  • describe the position of OS in modern data processing environment
  • describe the structure and the functionalities of operating systems
  • describe the control systems and process and thread management
  • describe different methods to protect processes and the use of different processor states (user/privileged) for that purpose
  • describe different types of thread execution (user-level, kernel-level)
  • describe basic process scheduling techniques in uniprocessor, multiprocessor, and real-time systems
  • compare the suitability of different scheduling algorithms on different work loads
  • choose (and justify the choice) the most practical way to execute threads for given software system
  • explain how shared memory and other methods are used for process and thread communication
  • explain the need for concurrency using examples illustrating concurrent operations of hardware and software level
  • explain the importance of different scenarios when examining the execution of concurrent programs
  • provide examples of common problems that may results in an incorrect concurrent solution
  • explain the nondeterministic nature of process execution and its implications
  • explain the advantages, disadvantages, implementation levels, and methods of concurrency
  • explain the requirements for concurrency solutions (e.g., in terms of correctness in all scenarios) and finding a scenario leading to failed outcome
  • explain the basic concepts of concurrent execution: atomicity, critical section, synchronization, communication, deadlock
  • explain the basic concurrency problems: critical section problem, turn ticket, readers-writers, producer-consumer, client-server, and boom synchronization
  • describe the occurrence of a deadlock and explain necessary and sufficient conditions for a deadlock to occur
  • design a solution to critical section problem using the most appropriate method, e.g., interrupt disabling, busy-wait, semaphore, monitor, messages
  • explain the semaphore and monitor structures, and use them correctly in problem solving
  • apply concurrency handling mechanisms to solve practical problems
  • explain how deadlock can be detected using DDA-algorithm, how to recover from deadlock, and how a deadlock can be prevented using, e.g., banker's algorithm
  • describe the general principles of implementing virtual memory (VM) together with the key concepts (paging, page table, address translation, translation lookaside buffer, page faults)
  • describe multi-level paged VM operation
  • simulate at algorithm level the address translation in (multi-level) paged VM system
  • analyze the effect of page size in process operation and page table size, and justify a choice made for a certain page size
  • describe the advantages and disadvantages of (multilevel) paging and segmentation methods
  • describe at algorithm level the VM implementation: page fetch and replacement policies, resident set size management policies, multiprogramming level policies
  • describe the basic structure of the file system and its components
  • explain the communication between peripheral devices and operating system
  • explain the basic scheduling algorithms for hard disks
  • explain the basic idea of RAID, and explain different RAID implementations comparing their features
  • explain different file organization types and when they should be used (pile, sequential, indexed sequential, indexed, hashed)
  • explain the use of B-trees for index implementation for files
  • explain basic OS security threats and the methods to secure the operating system against them
  • describe access control mechanism in operating systems

As prerequisites, prior knowledge of the components of a computer system and how programs are executed on hardware is assumed.

Before taking this course, you should have completed

  • Computer Fundamentals I (Tietokoneen toiminnan perusteet, AYTKT100051)
  • Computer Fundamentals II (Tietokoneen toiminnan jatkokurssi, AYTKT100052)

or have equivalent knowledge

Ennen syksyä 2020 järjestetyt aineopinnot

Tietorakenteet ja algoritmit, 10 op

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

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

Tietotekniikka ja yhteiskunta, 5 op

Pilvipohjaiset web-sovellukset

Tämä maksuton kurssisarja antaa perustiedot modernien verkkopohjaisten sovellusten kehittäjälle. Se soveltuu ohjelmistoalan ammattilaisille ja sellaisiksi haluaville. Esitietoina kursseille ovat tietotekniikan perusopinnot tai vastaava osaaminen.

DevOps with Docker, 1-3 op

1-3 credits depending on course exercise completion.

1. credit: Student has learned what docker is and knows how to use it in different scenarios.
2. credit: Student has general understanding of docker-compose and is able to implement advanced docker configurations.
3. credit: Student has deeper understanding of docker ecosystem and its use cases.

Course does not have prerequisites, but it is recommended for students to have at least some experience in web development.

DevOps with Kubernetes, 5 op

Ohjelmistotuotanto, 5-6 op

Kurssin suoritettuaan opiskelija

  • Tuntee ohjelmistoprosessin, erityisesti ketterän prosessin vaiheet

  • Tietää miten vaatimuksia hallitaan ketterässä ohjelmistotuotantoprosessissa

  • Ymmärtää suunnittelun, toteutuksen ja testauksen vastuut ja luonteen ketterässä ohjelmistotuotannossa

  • Ymmärtää ohjelmiston laadunhallinnan perusteet

  • Osaa toimia ympäristössä, jossa ohjelmistokehitys tapahtuu hallitusti ja toistettavalla tavalla

Esitietovaatimuksena ovat Ohjelmoinnin jatkokurssi ja Tietokantojen perusteet tai vastaavat tiedot.

Ohjelmistotuotantoprojekti, 10 op

Kurssin suoritettuasi osaat toimia osana ketterien periaatteiden mukaan toimivaa ohjelmistokehitystiimiä rooleissa jotka edellyttävät määrittelyä, suunnittelua, toteutusta, laadunhallintaa ja tuotannossa operointia.

Esitietovaatimuksena ovat kurssit Ohjelmistotuotanto ja Full stack -websovelluskehitys.

Web-palvelinohjelmointi Java, 5 op

  1. Johdanto web-sovellusten toimintaan ja internetin perusosiin.
  2. Näkymät, tietokannat ja tietokanta-abstraktiot.
  3. Tietokannat ja tietokanta-abstraktiot.
  4. Mediatyypit ja tiedostojen tallentaminen. Ohjelmistokehitysprosessi, kerrosarkkitehtuuri ja sovellusten automaattinen testaaminen. Sovelluksen siirtäminen verkkoon.
  5. HTTP-protokolla ja evästeet. Autentikaatio ja autorisaatio.
  6. Toistuvat rakenteet ja fragmentit. Tyylitiedostojen käyttäminen. Syötteiden validointi. Rajapinnat ja REST.
  7. Selainohjelmistot ja palvelinohjelmistot. Hieman tietoturvaa. Sovellusten skaalautuvuus. Reaktiivinen ohjelmointi.

Esitietovaatimuksena ovat kurssit Ohjelmoinnin perusteet (TKT10002), Ohjelmoinnin jatkokurssi (TKT10003) ja Tietokantojen perusteet (TKT10004).

Full Stack Open 2021

Full Stack -websovelluskehitys, 3-8 op

Full Stack Web Development, 3-8 op

Full Stack -websovelluskehitys harjoitustyö, 1-10 op

Full Stack -websovelluskehitys (vähintään 5 opintopisteen laajuinen suoritus)

Full Stack Web Development Project, 1-10 op

Full Stack Open 2020

Full Stack -websovelluskehitys, 3-8 op

Osallistujilta edellytetään vahvaa ohjelmointirutiinia, web-ohjelmoinnin ja tietokantojen perustuntemusta, kykyä pitkäjänteiseen työskentelyyn sekä valmiutta omatoimiseen tiedonhakuun ja ongelmanratkaisuun.

Osallistuminen ei kuitenkaan edellytä kurssilla käsiteltävien tekniikoiden tai Javascript-kielen hallintaa.

Full Stack Web Development, 3-8 op

Full Stack -websovelluskehitys harjoitustyö, 1-10 op

Full Stack Web Development Project, 1-10 op

Tekoäly ja datatiede

Tässä maksuttomassa kurssisarjassa annetaan perustiedot tekoälystä ja koneoppimisesta. Tekoälyn perusteet -kurssin voit suorittaa ilman ohjelmointitaitoa. Syventävillä kursseilla päästään perehtymään myös tekoälyn toteutustekniikkoihin.

Elements of AI: Tekoälyn perusteet, 2 op

Kurssin suorittamisen jälkeen osaat:

  • nimetä autonomisuuden ja adaptiivisuuden tekoälyn ominaispiirteiksi
  • erottaa toisistaan tieteiskirjallisuuden tekoälyn ja oikean tekoälyn
  • kuvailla tekoälyn keskeiset filosofiset kysymykset liittyen Turingin testiin ja kiinalaisen huoneen ajatuskokeeseen
  • muotoilla tosielämän ongelmia etsintäongelmina
  • muotoilla yksinkertaisia pelejä (kuten ristinolla) pelipuuksi
  • soveltaa minimax-periaatetta optimaalisten pelisiirtojen ratkaisemiseen rajoitetun kokoeisessa pelipuussa
  • ilmaista todennäköisyysarvoja luonnollisina frekvensseinä
  • soveltaa Bayesin kaavaa yksinkertaisissa skenaarioissa
  • selittää esiintyvyysharhan ja välttää sen bayesilaisen päättelyn avulla selittää miksi koneoppimista tarvitaan
  • erottaa ohjatun ja ohjaamattoman koneoppimisen tilanteet toisistaan
  • selittää seuraavan kolmen ohjatun koneoppimisen menetelmän periaatteet: lähimmän naapurin luokitin, lineaariregressio ja logistinen regressio
  • selittää, mitä neuroverkot ovat ja mihin tarkoituksiin ne sopivat
  • ymmärtää myös neuroverkkojen taustalla olevien menetelmien rajoitukset
  • ymmärtää tulevaisuuden ennustamisen vaikeus, jotta voit paremmin arvioida tekoälystä esitettyjen väitteiden uskottavuutta
  • tunnistaa joitakin tekoälyn merkittävimpiä yhteiskunnallisia vaikutuksia, kuten algoritmista syrjintää, väärennettyjä sisältöjä, yksityisyydensuojaa ja työelämän murrosta

Ei muodollisia esitietovaatimuksia lukiomatematiikan lisäksi (perusaritmetiikka, murtoluvut)

Elements of AI: Introduction to AI, 2 op

After completing the course, you will be able to:

  • Identify autonomy and adaptivity as key concepts of AI
  • Distinguish between realistic and unrealistic AI (science fiction vs. real life)
  • Express the basic philosophical problems related to AI including the implications of the Turing test and Chinese room thought experiment
  • Formulate a real-world problem as a search problem
  • Formulate a simple game (such as tic-tac-toe) as a game tree
  • Use the minimax principle to find optimal moves in a limited-size game tree
  • Express probabilities in terms of natural frequencies
  • Apply the Bayes rule to infer risks in simple scenarios
  • Explain the base-rate fallacy and avoid it by applying Bayesian reasoning
  • Explain why machine learning techniques are used
  • Distinguish between unsupervised and supervised machine learning scenarios
  • Explain the principles of three supervised classification methods: the nearest neighbor method, linear regression, and logistic regression
  • Explain what a neural network is and where they are being successfully used
  • Understand the technical methods that underpin neural networks
  • Understand the difficulty in predicting the future and be able to better evaluate the claims made about AI
  • Identify some of the major societal implications of AI including algorithmic bias, AI-generated content, privacy, and work

No formal prerequisites beyond high-school mathematics (basic arithmetics with fractions)

Elements of AI: Building AI, 1-2 op

The course can be completed on three difficulty levels. The following learning objectives are achieved after completing the course on the advanced level. On the intermediate level, the same objectives are partially achieved.

After the course, you are able to:

  • describe different types of AI such as optimization, reasoning, and learning
  • choose a suitable AI approach to solve simple tasks such as route planning, probabilistic inference, and pattern recognition
  • implement a straightforward brute-force optimization algorithm
  • implement simple probabilistic inference based on statistical data using the Bayes rule
  • build linear regression models from data, and use the models to predict variables of interest, such as apartment prices
  • use the nearest neighbor method to predict variables of interest
  • use cross-validation to avoid under- and overfitting
  • build and apply logistic regression and simple neural network models for prediction

The programming exercises require beginner level familiarity with the Python programming language. No other prerequisites exist.

Ethics of AI, 2 op

After the course you

  • understand the role of ethical thinking in the planning and implementation of AI systems,
  • can describe different ethical aspects and considerations of AI,
  • can analyze the risks and opportunities of AI solutions from an ethical perspective,
  • can detect when ethical considerations are needed in AI solution implementation,
  • can follow the ethical discussions in public and in expert communities,
  • know the existence of ethical guidelines and are able to apply them in straightforward cases, and
  • understand when the ethical issue requires additional expertise.

There are no prerequisites for the course. Elements of AI (AYTKT21028en) is recommended as a good introduction to artificial intelligence.

Elements of AI: Grunderna i artificiell intelligens, 2 op

Efter avslutad kurs kan den studerande

  • ange de egenskaper som kännetecknar artificiell intelligens (autonomi och adaptivitet)
  • skilja på science fiction-litteratur och äkta artificiell intelligens
  • beskriva de filosofiska frågeställningarna inom artificiell intelligens som har att göra med Turingtestet och tankeexperimentet det kinesiska rummet
  • formulera problem från verkliga livet som sökproblem
  • beskriva enkla spel (t.ex. luffarschack) som spelträd
  • tillämpa minimax-principen för att reda ut de optimala dragen i ett avgränsat spelträd
  • uttrycka sannolikhetsvärden som naturliga frekvenser
  • tillämpa Bayes sats i enkla scenarier
  • förklara vilseledande prevalens och undvika den
  • med hjälp av bayesiansk slutledning förklara varför maskininlärning behövs
  • skilja mellan situationer med övervakad och oövervakad maskininlärning
  • förklara följande tre principer inom övervakad maskininlärning: närmaste granne-metoden, linjär regression och logistisk regression
  • förklara vad neuronnät är och för vilka ändamål de är lämpliga
  • förstå också de begränsningar som finns i neuronnätens underliggande modeller
  • förstå svårigheterna i att förutspå framtiden, så att hen bättre kan ta ställning till trovärdigheten i påståenden om artificiell intelligens
  • känna igen några av de mest betydelsefulla konsekvenserna artificiell intelligens kan ha i samhället, till exempel algoritmisk diskriminering, förfalskat innehåll, integritetsskydd och förändringar i arbetslivet.

För kursen krävs inga formella förhandskunskaper utöver gymnasiematematik (grundläggande aritmetik, bråktal). Aritmetik betyder grundläggande matematik; addition, subtraktion, multiplikation och division.

Data Analysis with Python, 5 op

  • Can confidently write basic level Python programs without constantly consulting language/library documentation.
  • Can apply efficient and elegant Pythonic idioms to solve problems
  • Knows the different phases of data analysis pipeline
  • Knows the fundamental data types array, Series and DataFrame
  • Can clean data to form consistent Series and DataFrames without anomalies
  • Can select subsets, transform, reshape and combine data
  • Can extract summary statistics from data (min, max, mean, median, standard deviation)
  • Knows the main types of machine learning (supervised learning: regression and classification, unsupervised learning: clustering, dimensionality reduction, (density estimation))
  • Knows the estimator API of Scikit-Learn (choose model class, choose hyperparameters, form feature matrix and target vector, fit model, transform data or predict labels or responses)
  • Can form feature matrix and target vector suitable for Scikit-Learn's model fitting algorithms
  • Can visualize data as simple plots or histograms
  • Can apply basic data analysis skills to a simple project on an application field

Programming skills and basic knowledge of probability calculus and linear algebra.

The compulsory basic level courses in Bachelor's Programme in Computer Science form a sufficient background.

Big Data Platforms, 5 op

This course focuses on big data platforms and on key algorithmic ideas and methods used to implement them.

After completing this course you are able to

  • list many of the key technologies used in big data processing,
  • select suitable methods for solving challenging big data processing tasks using cloud computing technologies, and
  • to compare the scalability and fault tolerance implications of using the selected methodologies.

To attend this course, you must have

  • basic programming skills (Python),
  • skills to work with command line tools in Linux, and
  • basic knowledge in database systems (SQL).

Cyber Security Base

Cyber Security Base with F-Secure is a free course series by University of Helsinki in collaboration with F-Secure Cyber Security Academy that focuses on building core knowledge and abilities related to the work of a cyber security professional.

Cyber Security Base: Introduction to Cyber Security, 1 op

The course provide you with

  • an introduction to the current status of cyber security, and
  • a better understanding on why cyber security is needed.

Technical aspects of cyber security are discussed in more detail in the following courses.

There are no specific prerequisites. General understanding of computer systems and networks are recommended.

Cyber Security Base: Securing Software, 3 op

During this course you will learn

  • the principles of developing web applications,
  • typical security issues that are related to such applications,
  • and how such issues are discovered and mitigated.

The course has the following prerequisites:

  • Cyber security base: Introduction to Cyber Security is recommended.
  • Completing the course requires completing several mandatory programming exercises in Python.

Cyber Security Base: Course Project I, 1 op

During this course you will gain hands-on experience

  • on producing software with security flaws,
  • detecting such flaws, and
  • and mitigating them.

The course has the following prerequisites:

  • The following courses in the Cyber Security Base course series are highly recommended:
    • Introduction to Cyber Security
    • Securing Software
  • Completing the course requires programming a web application in Python.

Cyber Security Base: Advanced Topics, 3 op

During this course you will be introduced to

  • security issues in network,
  • basics in cryprography,
  • analysis of software system architecture, and
  • log mining.

The course has the following prerequisites:

  • The following courses in the Cyber Security Base course series are highly recommended:
    • Introduction to Cyber Security
    • Securing Software
    • Course Project I

Cyber Security Base: Course Project II, 1 op

During this course you will be introduced to

  • intrusion toolkits (metasploit),
  • detecting intrusions.

The course has the following prerequisites:

  • The following courses in the Cyber Security Base course series are highly recommended:
    • Introduction to Cyber Security
    • Securing Software
    • Course Project I
    • Advanced Topics

Cyber Security Base: Capture The Flag, 1 op

During this course you will get hands-on experience in dealing with simple tasks related to security topics discussed in previous cyber security base courses.

The course has the following prerequisites:

  • The following courses in the Cyber Security Base course series are highly recommended:
    • Introduction to Cyber Security
    • Securing Software
    • Course Project I
    • Advanced Topics
    • Course Project II
  • Programming skills (Python)

Tietojenkäsittelytieteen muut opinnot

Tietokone työvälineenä, 1 op

Varmistaa, että opiskelijalla on tarvittavat käytännön taidot tietojenkäsittelytieteen opintoihin. Tavoite on, että opiskelija oppii komentorivin alkeet, käyttämään versionhallintaa suoraviivaisesti koodiprojektissa, sekä luomaan yksinkertaisen staattisen verkkosivun.

Ei esitietovaatimuksia.

Computing Tools for CS Studies, 1 op

To ensure that student has required practical skills for studies in Computer Science. The goal is that student learns basics of command line, using VCS (Version control systems) in simple coding project, as well as making a simple static website.

No prerequisites.

Usein kysytyt kysymykset ja vastaukset
Hakijapalvelut
Opinnoista kiinnostuneiden opintoneuvonta ja ilmoittautumiseen liittyvät asiat
Opiskelijaneuvonta
Avoimessa yliopistossa opiskelevien yleisneuvonta
DEFA-opinnot
Kysy hankkeesta ja opinnoista
Jaana Lampikoski, koulutusasiantuntija
Kysy opintotarjonnasta ja opiskelumuodoista
Mika Tompuri, koulutusasiantuntija
Kysy opintotarjonnasta ja opiskelumuodoista
Kai Korpimies, lehtori
Kysy opintojaksojen sisällöistä