Opinnot Avoimessa yliopistossa

Tietojenkäsittelytieteen perusopinnot 25 op

Valitse toinen opintojaksoista:

Johdatus tietojenkäsittelytieteeseen, 5 op

Kurssin suoritettuasi sinulla on yleiskuva tietojenkäsittelytieteestä, mukaan lukien perustietoa alan etiikasta ja immateriaalioikeudesta. Opit hakemaan tieteellistä kirjallisuutta ja lukemaan 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

After successful completion of the course, the student will be able to:

  • describe some major social promises and risks associated with the developments in information and communications technology, identify some technical solutions and evaluate some hardware and software designs in their social context
  • analyze and formulate ethical arguments and identify some common logical fallacies and express some of the main differences between the major theories in normative ethics
  • explain what professionalism, the ethical responsibility of a professional and professional ethics are about. Knows some major information technology organizations. Can analyze the roles of professionals and public policy in a global computing issue, distinguish between some different views on computer ethics and summarize the main points in the history of the research field
  • identify ethical issues in software development, apply codes of ethics, conduct and practice in decision-making, evaluate the codes and describe some of their strengths and weaknesses, explain the importance of public good in decision-making and identify the progressive stages in a whistle-blowing incident
  • discuss the philosophical foundations of privacy rights and refer to some relevant legislation, give a wide overview of the challenges to privacy in the networked world, including the collection and merging of user data, various kinds of surveillance and cloud computing. Can explain some technological solutions for privacy protection and the importance of proper anonymization. Understands and is able to express the main idea of differential privacy at a general level, describe some background for and some social implications of the so-called hacktivism
  • discuss the philosophical bases of intellectual property, refer to some relevant legislation and discuss some associated problems. The topics include copyright, software patents, licensing and plagiarism. Understands and is able to explain the ideas behind open-source software development and free software. Can distinguish between some relevant and widely-used open source licenses and is able to describe some of the main differences between them
  • identify the aspects of sustainable development, explain how ICT and the choices made by the developers and the users can both promote and threaten sustainable development
  • understands the importance of effective professional communication, including clear documentation, can identify some associated problems, distinguish between different types of collaboration tools and evaluate some of their strengths and weaknesses

The student should also be familiar with the other topics listed under the title "Course content". The topics covered in the course are found in the knowledge area "Social Issues and Professional Practice" as presented in the Computer Science Curricula by ACM and IEEE.

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

  • Tietokonelaitteiston pääosat, mikä on sulautettu järjestelmä ja kuinka se eroaa tietokoneesta, väylän toiminnan perusajatus, mikä on ohjelma ja minkälaisia esitysmuotoja sillä voi olla, laitteistokomponenttien väliset suuret nopeuserot ja niiden vaikutukset järjestelmään.
  • Kuinka suoritin toteuttaa konekäskyjen suorituksen käskyjen nouto- ja suoritussyklin avulla, konekäskyjen erilaiset tavat viitata muistiin, välimuistin toiminnan perusteet, prosessorin erilaiset suoritustilat ja erityisesti etuoikeutetun suoritustilan tarkoitus, milloin ja miten prosessorin suoritustila vaihtuu, keskeytysten merkityksen ja toteutuksen konekäskyjen suorituksen tasolla, keskeytysjärjestelmän toiminta, valinta- ja toistorakenteiden toiminnan konekielen tasolla.
  • Kokonaislukujen esitysmuodon muutokset binääri-, heksadesimaali- ja desimaalijärjestelmien välillä, kuinka monitavuinen tieto voidaan tallettaa sanoihin kahdella eri tavalla, kokonais- ja liukulukujen esitysmuodot sekä merkkien ja merkkijonojen tallennuksen periaatteet. Karkealla tasolla kuinka (liikkuvat) kuvat ja äänet esitetään laitteistossa, minkälaista tieto suoritin osaa itse käsitellä ja kuinka muun tyyppisiä tietoja käsitellään ohjelmallisesti.
  • Prosessin käsite ja sen esitysmuodon käyttöjärjestelmässä, prosessin erilaiset tilat ja tilojen väliset tilasiirtymät, milloin ja miten suorituksessa oleva prosessi vaihtuu. Opiskeliaja osaa luetella käyttöjärjestelmän perustoiminnot (prosessien, muistin, tiedostojen, laitteiden ja verkon hallinta), selittää käännöksen, linkityksen ja latauksen tarkoituksen, 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, käyttöjärjestelmä toteutusmekanismin erilaisten (etuoikeutettujen) aliohjelmien tai prosessien avulla, kuinka tietokoneen laskentakyvyn rajoja voidaan tutkia kokonaislukuarvoisten funktioiden avulla.

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

After successful completion of the course, the student will be able to:

  • describe some major social promises and risks associated with the developments in information and communications technology, identify some technical solutions and evaluate some hardware and software designs in their social context
  • analyze and formulate ethical arguments and identify some common logical fallacies and express some of the main differences between the major theories in normative ethics
  • explain what professionalism, the ethical responsibility of a professional and professional ethics are about. Knows some major information technology organizations. Can analyze the roles of professionals and public policy in a global computing issue, distinguish between some different views on computer ethics and summarize the main points in the history of the research field
  • identify ethical issues in software development, apply codes of ethics, conduct and practice in decision-making, evaluate the codes and describe some of their strengths and weaknesses, explain the importance of public good in decision-making and identify the progressive stages in a whistle-blowing incident
  • discuss the philosophical foundations of privacy rights and refer to some relevant legislation, give a wide overview of the challenges to privacy in the networked world, including the collection and merging of user data, various kinds of surveillance and cloud computing. Can explain some technological solutions for privacy protection and the importance of proper anonymization. Understands and is able to express the main idea of differential privacy at a general level, describe some background for and some social implications of the so-called hacktivism
  • discuss the philosophical bases of intellectual property, refer to some relevant legislation and discuss some associated problems. The topics include copyright, software patents, licensing and plagiarism. Understands and is able to explain the ideas behind open-source software development and free software. Can distinguish between some relevant and widely-used open source licenses and is able to describe some of the main differences between them
  • identify the aspects of sustainable development, explain how ICT and the choices made by the developers and the users can both promote and threaten sustainable development
  • understands the importance of effective professional communication, including clear documentation, can identify some associated problems, distinguish between different types of collaboration tools and evaluate some of their strengths and weaknesses

The student should also be familiar with the other topics listed under the title "Course content". The topics covered in the course are found in the knowledge area "Social Issues and Professional Practice" as presented in the Computer Science Curricula by ACM and IEEE.

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 suoritettuaan opiskelija osaa toimia osana ketterien periaatteiden mukaan toimivaa ohjelmistokehitystiimiä määrittelyä, suunnittelua, toteutusta, laadunhallintaa ja tuotannossa operointia edellyttävissä rooleissa.

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 on 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 Web Development Project, 1-10 op

Full Stack Open 2020

Full Stack -websovelluskehitys, 3-8 op

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ä