Avoin yliopisto: Tietojenkäsittelytieteen opinnot
Osa Helsingin yliopiston tietojenkäsittelytieteen kandi- ja maisteriohjelman opinnoista tarjotaan avoimina yliopisto-opintoina kaikille aiheesta kiinnostuneille.

Tietojenkäsittelytiede tutkii informaatiota kuvaavia ja muuntavia algoritmisia prosesseja sekä niiden automatisointia tietotekniikan tarjoamin välinein. Laaja tutkimuskenttä ulottuu ohjelmoinnista, tietokannoista ja tietoverkoista tekoälyyn ja tieteelliseen laskentaan. Uudet sovellusalueet avaavat jatkuvasti uusia mahdollisuuksia niin tutkimuksessa kuin työelämässäkin.

Avoimessa yliopistossa voit opiskella tietojenkäsittelytieteen perusopinnot ja osia tietojenkäsittelytieteen aineopinnoista. Tarjolla on myös runsaasti kaikille avoimia MOOC-verkkokursseja (Massive Open Online Course) ja alan erikoiskursseja.

Helsingin yliopiston tietojenkäsittelytieteen osasto tarjoaa yhdessä Avoimen yliopiston kanssa opetus- ja kulttuuriministeriön tukemia, kaikille avoimia, laadukkaita ja maksuttomia opintoja ICT- ja ohjelmistoalan osaajapulan helpottamiseksi:

  • Digital Education for All (DEFA)
  • Pilvipohjaiset web-sovellukset
  • Tekoäly ja datatiede
  • Tietoturva (Cyber Security Base)

Opintojen sisällöt ja aikataulut löydät kurssisivuilta (ks. alla). Kurssisivuilta löydät myös tiedot ilmoittautumiseen liittyen. Useimpiin opintoihin ei ole ennakkoilmoittautumista vaan opintoijaksolle ilmoittaudutaan vasta kun olet edennyt kurssisuorituksessasi tiettyyn vaiheeseen. Lisätietoa Helsingin yliopiston tietojenkäsittelytieteen osaston opintokokonaisuuksista löydät myös osoitteesta mooc.fi.

Katso ennen maaliskuuta 2021 järjestetyt opinnot

Tutustu kurssitarjontaan

Tältä sivulta löydät tietojenkäsittelytieteen kurssit jaoteltuna aiheen, kokonaisuuden tai tason mukaan. 

Tietojenkäsittelytieteen opinnot aiheittain

Onko tietojenkäsittelytiede sinulle uusi ala? Tutustu ensimmäisenä tämän otsikon alle koottuihin kursseihin.

Perusteet Tarjolla olevat kurssit: 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ä. Kurssit järjestetään seuraavasti After successful completion of the course, you 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 contextanalyze and formulate ethical arguments and identify some common logical fallacies and express some of the main differences between the major theories in normative ethicsexplain 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 fieldidentify 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 incidentdiscuss 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 hacktivismdiscuss 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 developmentunderstands 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 You 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. 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 ymmärrät periaatteen tasolla algoritmien ja tietokoneen toiminnan ja ohjelmoinnin rooli tässä toiminnassa, osaat kirjoittaa itse imperatiiviseen paradigmaan perustuvia yksinkertaisen ongelman ratkaisevia ohjelmia jaosaat käyttää ohjelmointikieltä työvälineenä datan käsittelemiseksi esimerkiksi opiskeluun, työhön tai harrastuksiin liittyvissä tilanteissa. Kurssit järjestetään seuraavasti   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 sinulla on hyvät käytännön ohjelmalliset ongelmanratkaisutaidot,tunnet ja osaat jossain määrin soveltaa imperatiivisen paradigman lisäksi muita ohjelmointiparadigmoja (esimerkiksi olio-ohjelmointi tai funktionaalinen ohjelmointi) jatunnet ohjelmointiin liittyviä käsitteitä ja teorioita.   Kurssit järjestetään seuraavasti   Kurssin jälkeen opiskelija ymmärtää, mitä haasteita tietokantajärjestelmän toteuttamiseen liittyyosaa suunnitella relaatiomallin mukaisia tietokantojaosaa SQL-kielen perusteet ja suunnitella omia kyselyitätuntee transaktioiden ja indeksien periaatteet Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti Kurssin tavoitteena on varmistaa, että sinulla on tarvittavat käytännön taidot tietojenkäsittelytieteen opintoihin. Tavoiteena on, että opit  komentorivin alkeet,käyttämään versionhallintaa suoraviivaisesti koodiprojektissa,sekä luomaan yksinkertaisen staattisen verkkosivun. Kurssit järjestetään seuraavasti The aim of the course is to ensure that you have required practical skills for studies in Computer Science. The goal is that you learn basics of command line, to use VCS (Version control systems) in simple coding project, as well as to make a simple static website. Kurssit järjestetään seuraavasti

Tämä maksuton kurssisarja antaa perustiedot modernien verkkopohjaisten sovellusten kehittäjälle. Tietotekniikan perusopintojen pohjalle perustuva koodarikoulutus Pilvipohjaiset web-sovellukset soveltuu ohjelmistoalan ammattilaisille ja sellaisiksi haluaville. Esitietoina kursseille ovat tietotekniikan perusopinnot tai vastaava osaaminen.

Kurssien sisältöön tai suoritukseen liittyviin kysymyksiin saat nopeimmin vastauksen kurssisivuilta tai kurssien vastuuhenkilöltä.

Pilvipohjaiset web-sovellukset Tarjolla olevat kurssit: 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. Kurssit järjestetään seuraavasti After the course you are able to - develop and release containerized applications on a self-hosted cluster as well as use Google Kubernetes engine, - apply Kubernetes in maintenance and updating of applications, - use monitoring with containerized applications, and - explain continuous deployment and implement deployment to Kubernetes. Kurssit järjestetään seuraavasti Kurssit järjestetään seuraavasti Kurssit järjestetään seuraavasti Kurssit järjestetään seuraavasti Kurssit järjestetään seuraavasti Kurssin suoritettuasi Tunnet ohjelmistoprosessin, erityisesti ketterän prosessin vaiheet Tiedät miten vaatimuksia hallitaan ketterässä ohjelmistotuotantoprosessissa Ymmärrät suunnittelun, toteutuksen ja testauksen vastuut ja luonteen ketterässä ohjelmistotuotannossa Ymmärrät ohjelmiston laadunhallinnan perusteet Osaat toimia ympäristössä, jossa ohjelmistokehitys tapahtuu hallitusti ja toistettavalla tavalla Kurssin suoritettuasi osaat toimia osana ketterien periaatteiden mukaan toimivaa ohjelmistokehitystiimiä rooleissa jotka edellyttävät määrittelyä, suunnittelua, toteutusta, laadunhallintaa ja tuotannossa operointia.  Kurssit järjestetään seuraavasti Johdanto web-sovellusten toimintaan ja internetin perusosiin.Näkymät, tietokannat ja tietokanta-abstraktiot.Tietokannat ja tietokanta-abstraktiot.Mediatyypit ja tiedostojen tallentaminen. Ohjelmistokehitysprosessi, kerrosarkkitehtuuri ja sovellusten automaattinen testaaminen. Sovelluksen siirtäminen verkkoon.HTTP-protokolla ja evästeet. Autentikaatio ja autorisaatio.Toistuvat rakenteet ja fragmentit. Tyylitiedostojen käyttäminen. Syötteiden validointi. Rajapinnat ja REST.Selainohjelmistot ja palvelinohjelmistot. Hieman tietoturvaa. Sovellusten skaalautuvuus. Reaktiivinen ohjelmointi. Kurssit järjestetään seuraavasti

Tässä maksuttomassa kurssisarjassa saat perustiedot tekoälystä ja koneoppimisesta. Tekoälyn perusteet ja Ethics of AI -kurssit voit suorittaa ilman ohjelmointitaitoa. Syventävillä kursseilla pääset perehtymään myös tekoälyn toteutustekniikkoihin.

Opinnot soveltuvat muun muassa HR:n, kaupan alan tai viestinnän asiantuntija- tai johtotehtehtävissä toimiville sekä alan opiskelijoille. Osa yksittäisistä kursseista sisältää esitietovaatimuksia tai suosituksia kurssien suoritusjärjestykseksi. Nämä tiedot löydät kurssisivuilta.

Tekoäly ja datatiede Tarjolla olevat kurssit: Kurssin suorittamisen jälkeen osaat: nimetä autonomisuuden ja adaptiivisuuden tekoälyn ominaispiirteiksierottaa toisistaan tieteiskirjallisuuden tekoälyn ja oikean tekoälynkuvailla tekoälyn keskeiset filosofiset kysymykset liittyen Turingin testiin ja kiinalaisen huoneen ajatuskokeeseenmuotoilla tosielämän ongelmia etsintäongelminamuotoilla yksinkertaisia pelejä (kuten ristinolla) pelipuuksisoveltaa minimax-periaatetta optimaalisten pelisiirtojen ratkaisemiseen rajoitetun kokoeisessa pelipuussailmaista todennäköisyysarvoja luonnollisina frekvensseinäsoveltaa Bayesin kaavaa yksinkertaisissa skenaarioissaselittää esiintyvyysharhan ja välttää sen bayesilaisen päättelyn avulla selittää miksi koneoppimista tarvitaanerottaa ohjatun ja ohjaamattoman koneoppimisen tilanteet toisistaanselittää seuraavan kolmen ohjatun koneoppimisen menetelmän periaatteet: lähimmän naapurin luokitin, lineaariregressio ja logistinen regressioselittää, mitä neuroverkot ovat ja mihin tarkoituksiin ne sopivatymmärtää myös neuroverkkojen taustalla olevien menetelmien rajoituksetymmärtää tulevaisuuden ennustamisen vaikeus, jotta voit paremmin arvioida tekoälystä esitettyjen väitteiden uskottavuuttatunnistaa joitakin tekoälyn merkittävimpiä yhteiskunnallisia vaikutuksia, kuten algoritmista syrjintää, väärennettyjä sisältöjä, yksityisyydensuojaa ja työelämän murrosta Kurssit järjestetään seuraavasti 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 learningchoose a suitable AI approach to solve simple tasks such as route planning, probabilistic inference, and pattern recognitionimplement a straightforward brute-force optimization algorithmimplement simple probabilistic inference based on statistical data using the Bayes rulebuild linear regression models from data, and use the models to predict variables of interest, such as apartment pricesuse the nearest neighbor method to predict variables of interestuse cross-validation to avoid under- and overfittingbuild and apply logistic regression and simple neural network models for prediction Kurssit järjestetään seuraavasti 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, andunderstand when the ethical issue requires additional expertise.  Kurssit järjestetään seuraavasti Can confidently write basic level Python programs without constantly consulting language/library documentation.Can apply efficient and elegant Pythonic idioms to solve problemsKnows the different phases of data analysis pipelineKnows the fundamental data types array, Series and DataFrameCan clean data to form consistent Series and DataFrames without anomaliesCan select subsets, transform, reshape and combine dataCan 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 algorithmsCan visualize data as simple plots or histogramsCan apply basic data analysis skills to a simple project on an application field  Kurssit järjestetään seuraavasti 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, andto compare the scalability and fault tolerance implications of using the selected methodologies. After completing the course, you will be able to: Identify autonomy and adaptivity as key concepts of AIDistinguish 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 experimentFormulate a real-world problem as a search problemFormulate a simple game (such as tic-tac-toe) as a game treeUse the minimax principle to find optimal moves in a limited-size game treeExpress probabilities in terms of natural frequenciesApply the Bayes rule to infer risks in simple scenariosExplain the base-rate fallacy and avoid it by applying Bayesian reasoningExplain why machine learning techniques are usedDistinguish between unsupervised and supervised machine learning scenariosExplain the principles of three supervised classification methods: the nearest neighbor method, linear regression, and logistic regressionExplain what a neural network is and where they are being successfully usedUnderstand the technical methods that underpin neural networksUnderstand the difficulty in predicting the future and be able to better evaluate the claims made about AIIdentify some of the major societal implications of AI including algorithmic bias, AI-generated content, privacy, and work Kurssit järjestetään seuraavasti 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 intelligensbeskriva de filosofiska frågeställningarna inom artificiell intelligens som har att göra med Turingtestet och tankeexperimentet det kinesiska rummetformulera problem från verkliga livet som sökproblembeskriva enkla spel (t.ex. luffarschack) som spelträdtillämpa minimax-principen för att reda ut de optimala dragen i ett avgränsat spelträduttrycka sannolikhetsvärden som naturliga frekvensertillämpa Bayes sats i enkla scenarierförklara vilseledande prevalens och undvika denmed hjälp av bayesiansk slutledning förklara varför maskininlärning behövsskilja mellan situationer med övervakad och oövervakad maskininlärningförklara följande tre principer inom övervakad maskininlärning: närmaste granne-metoden, linjär regression och logistisk regressionförklara vad neuronnät är och för vilka ändamål de är lämpligaförstå också de begränsningar som finns i neuronnätens underliggande modellerfö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 intelligenskä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. Kurssit järjestetään seuraavasti

Maksuton Cyber Security Base -kurssisarja rakentaa keskeistä tietoa ja osaamista tietoturva-ammattilaisen työhön liittyen. Kurssisarjan ovat yhteistyössä tuottaneet Helsingin yliopisto ja Cyber Security Academy. Kurssit ovat englanninkielisiä.

Opinnot soveltuvat muun muassa HR:n, kaupan alan tai viestinnän asiantuntija- tai johtotehtehtävissä toimiville sekä alan opiskelijoille. Osa yksittäisistä kursseista saattaa sisältää esitietovaatimuksia tai suosituksia kurssien suoritusjärjestykseksi. Nämä tiedot löydät kurssisivuilta. 

Cyber Security Base: Introduction to Cyber Security, 1 op
Cyber Security Base: Securing Software, 3 op
Cyber Security Base: Course Project I, 1 op
Cyber Security Base: Advanced Topics, 3 op
Cyber Security Base: Course Project II, 1 op
Cyber Security Base: Capture The Flag, 1 op

Algoritmit ovat tietokoneelle annettuja tarkkoja toimintaohjeita. Näillä kursseilla perehdyt algoritmien suunnittelun teoriaan ja harjoittelet tehokkaiden algoritmien kirjoittamista. 

Kurssit edellyttävät ohjelmoinnin perusteiden osaamista. Tarkat esitietovaatimukset löydät kunkin kurssin sivulta. 

Algoritmit Tarjolla olevat kurssit: 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. Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti Kurssin jälkeen osaat C++-kielen perusasiat ja pystyy toteuttamaan sillä algoritmejatunnet tärkeimmät C++-standardikirjaston tietorakenteet ja algoritmitosaat käyttää binäärihakua, dynaamista ohjelmointia ja segmenttipuuta monipuolisesti algoritmien suunnittelussatunnet joitakin edistyneempiä algoritmitekniikoita (esim. Z-algoritmi, verkon 2-yhtenäisyys, treap-rakenne) Kurssit järjestetään seuraavasti After the course you will know the basic principles of functional programming,can implement simple algorithms using the Haskell programming language,can fluently use recursion in programming. Kurssit järjestetään seuraavasti After the course you have more experience in functional programming,understand the role of side effects in functional programming, andknow more Haskell programming techniques. Kurssit järjestetään seuraavasti

Näillä kursseilla opit tietoliikenteen ja käyttöjärjestelmien perusteet. 

Kurssit edellyttävät, että tunnet tietokoneen toiminnan perusteet. Tarkat esitietovaatimukset löydät kunkin kurssin sivulta. 

Tietoliikenne ja käyttöliittymät Tarjolla olevat kurssit: 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. Kurssit järjestetään seuraavasti 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 Kurssit järjestetään seuraavasti After the course you can summarize the key services of an operating system (OS) and their operationdescribe the essential structures of an OS together with their interfacesdescribe the position of OS in modern data processing environmentdescribe the structure and the functionalities of operating systemsdescribe 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 purposedescribe different types of thread execution (user-level, kernel-level)describe basic process scheduling techniques in uniprocessor, multiprocessor, and real-time systemscompare the suitability of different scheduling algorithms on different work loadschoose (and justify the choice) the most practical way to execute threads for given software systemexplain how shared memory and other methods are used for process and thread communicationexplain the need for concurrency using examples illustrating concurrent operations of hardware and software levelexplain the importance of different scenarios when examining the execution of concurrent programsprovide examples of common problems that may results in an incorrect concurrent solutionexplain the nondeterministic nature of process execution and its implicationsexplain the advantages, disadvantages, implementation levels, and methods of concurrencyexplain the requirements for concurrency solutions (e.g., in terms of correctness in all scenarios) and finding a scenario leading to failed outcomeexplain the basic concepts of concurrent execution: atomicity, critical section, synchronization, communication, deadlockexplain the basic concurrency problems: critical section problem, turn ticket, readers-writers, producer-consumer, client-server, and boom synchronizationdescribe the occurrence of a deadlock and explain necessary and sufficient conditions for a deadlock to occurdesign a solution to critical section problem using the most appropriate method, e.g., interrupt disabling, busy-wait, semaphore, monitor, messagesexplain the semaphore and monitor structures, and use them correctly in problem solving apply concurrency handling mechanisms to solve practical problemsexplain 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 operationsimulate at algorithm level the address translation in (multi-level) paged VM systemanalyze the effect of page size in process operation and page table size, and justify a choice made for a certain page sizedescribe the advantages and disadvantages of (multilevel) paging and segmentation methodsdescribe at algorithm level the VM implementation: page fetch and replacement policies, resident set size management policies, multiprogramming level policiesdescribe the basic structure of the file system and its componentsexplain the communication between peripheral devices and operating systemexplain the basic scheduling algorithms for hard disksexplain the basic idea of RAID, and explain different RAID implementations comparing their featuresexplain 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 filesexplain basic OS security threats and the methods to secure the operating system against themdescribe access control mechanism in operating systems
Tekoälykurssit
Tietojenkäsittelytieteen kokonaisuudet

Tämän osion kursseista voidaan koota perusopintokokonaisuus. 

Valitse toinen kursseista:

  • Johdatus tietojenkäsittelytieteeseen (5 op)
  • Computing and Society (5 op)

Valitse toinen kursseista:

  • Ohjelmoinnin perusteet (5 op)
  • Introduction to Programming (5 op)

Valitse toinen kursseista:

  • Ohjelmoinnin jatkokurssi (5 op)
  • Advanced Course in Programming (5 op)

Tee kaikki kurssit:

  • Tietokantojen perusteet (5 op)
  • Tietokoneen toiminnan perusteet (2 op)
  • Tietokoneen toiminnan jatkokurssi (3 op)
Perusopinnot (25 op) Tarjolla olevat kurssit: 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ä. Kurssit järjestetään seuraavasti After successful completion of the course, you 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 contextanalyze and formulate ethical arguments and identify some common logical fallacies and express some of the main differences between the major theories in normative ethicsexplain 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 fieldidentify 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 incidentdiscuss 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 hacktivismdiscuss 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 developmentunderstands 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 You 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. 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 ymmärrät periaatteen tasolla algoritmien ja tietokoneen toiminnan ja ohjelmoinnin rooli tässä toiminnassa, osaat kirjoittaa itse imperatiiviseen paradigmaan perustuvia yksinkertaisen ongelman ratkaisevia ohjelmia jaosaat käyttää ohjelmointikieltä työvälineenä datan käsittelemiseksi esimerkiksi opiskeluun, työhön tai harrastuksiin liittyvissä tilanteissa. Kurssit järjestetään seuraavasti   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 sinulla on hyvät käytännön ohjelmalliset ongelmanratkaisutaidot,tunnet ja osaat jossain määrin soveltaa imperatiivisen paradigman lisäksi muita ohjelmointiparadigmoja (esimerkiksi olio-ohjelmointi tai funktionaalinen ohjelmointi) jatunnet ohjelmointiin liittyviä käsitteitä ja teorioita.   Kurssit järjestetään seuraavasti   Kurssin jälkeen opiskelija ymmärtää, mitä haasteita tietokantajärjestelmän toteuttamiseen liittyyosaa suunnitella relaatiomallin mukaisia tietokantojaosaa SQL-kielen perusteet ja suunnitella omia kyselyitätuntee transaktioiden ja indeksien periaatteet Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti

Tämän osion kursseista voidaan koota aineopintokokonaisuus Tietojenkäsittelytieteen aineopinnot muille koulutusohjelmille (TKT8). Suorita kaikki kurssit. 

Aineopinnot (35 op) Tarjolla olevat kurssit: 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. Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti Kurssin suoritettuasi tunnet ohjelmistotuotantoprosessin vaiheet,olet vesiputousmallin ja ketterän ohjelmistotuotannon luonteesta,osaat soveltaa versionhallintaa osana ohjelmistokehitystä,osaat soveltaa UML-mallinnustekniikkaa vaatimusmäärittelyssä ja ohjelmiston suunnittelussa tarkoituksenmukaisella tavallatunnet ohjelmiston testauksen eri vaiheetosaat soveltaa automatisoitua testausta yksinkertaisissa ohjelmistoprojekteissatunnet tärkeimpiä ohjelmiston suunnitteluperiaatteita ja osaa soveltaa niitä yksinkertaisissa projekteissa After the course you can summarize the key services of an operating system (OS) and their operationdescribe the essential structures of an OS together with their interfacesdescribe the position of OS in modern data processing environmentdescribe the structure and the functionalities of operating systemsdescribe 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 purposedescribe different types of thread execution (user-level, kernel-level)describe basic process scheduling techniques in uniprocessor, multiprocessor, and real-time systemscompare the suitability of different scheduling algorithms on different work loadschoose (and justify the choice) the most practical way to execute threads for given software systemexplain how shared memory and other methods are used for process and thread communicationexplain the need for concurrency using examples illustrating concurrent operations of hardware and software levelexplain the importance of different scenarios when examining the execution of concurrent programsprovide examples of common problems that may results in an incorrect concurrent solutionexplain the nondeterministic nature of process execution and its implicationsexplain the advantages, disadvantages, implementation levels, and methods of concurrencyexplain the requirements for concurrency solutions (e.g., in terms of correctness in all scenarios) and finding a scenario leading to failed outcomeexplain the basic concepts of concurrent execution: atomicity, critical section, synchronization, communication, deadlockexplain the basic concurrency problems: critical section problem, turn ticket, readers-writers, producer-consumer, client-server, and boom synchronizationdescribe the occurrence of a deadlock and explain necessary and sufficient conditions for a deadlock to occurdesign a solution to critical section problem using the most appropriate method, e.g., interrupt disabling, busy-wait, semaphore, monitor, messagesexplain the semaphore and monitor structures, and use them correctly in problem solving apply concurrency handling mechanisms to solve practical problemsexplain 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 operationsimulate at algorithm level the address translation in (multi-level) paged VM systemanalyze the effect of page size in process operation and page table size, and justify a choice made for a certain page sizedescribe the advantages and disadvantages of (multilevel) paging and segmentation methodsdescribe at algorithm level the VM implementation: page fetch and replacement policies, resident set size management policies, multiprogramming level policiesdescribe the basic structure of the file system and its componentsexplain the communication between peripheral devices and operating systemexplain the basic scheduling algorithms for hard disksexplain the basic idea of RAID, and explain different RAID implementations comparing their featuresexplain 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 filesexplain basic OS security threats and the methods to secure the operating system against themdescribe access control mechanism in operating systems 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. Kurssit järjestetään seuraavasti 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 Kurssit järjestetään seuraavasti

Introduction to Cyber Security, 5 cr (AYTKT20009), 

which consists of Cyber Security Base courses 1-3:

Cyber Security Base: Introduction to Cyber Security, 1 op
Cyber Security Base: Securing Software, 3 op
Cyber Security Base: Course Project I, 1 op

AYDATA150001 Johdatus tekoälyyn (5 op).

Avoimen yliopiston opiskelijoille kymmenen (10) paikkaa kurssilla tarjolla syksyllä 2021. Lisätietoa kurssista päivitetään tähän. 

DEFA-hanke avaa tietojenkäsittelytieteen ensimmäisen vuoden opinnot kaikille avoimiksi. Hanke on toiminnassa koko laajuudessaan syksystä 2019 lukuvuoden 2021 loppuun.

Kaikki hankkeen kurssit on listattu DEFA-hankkeen verkkosivuilla. DEFA-opintoja koskeviin kysymyksiin vastataan osoitteesta DEFA-help@cs.helsinki.fi.

Tietojenkäsittelytieteen opinnot tason mukaan

Tästä osioista löydät yliopistossa perusopintotasoisiksi luokitellut kurssit. 

Perusopintotasoiset kurssit Tarjolla olevat kurssit: 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ä. Kurssit järjestetään seuraavasti 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 ymmärrät periaatteen tasolla algoritmien ja tietokoneen toiminnan ja ohjelmoinnin rooli tässä toiminnassa, osaat kirjoittaa itse imperatiiviseen paradigmaan perustuvia yksinkertaisen ongelman ratkaisevia ohjelmia jaosaat käyttää ohjelmointikieltä työvälineenä datan käsittelemiseksi esimerkiksi opiskeluun, työhön tai harrastuksiin liittyvissä tilanteissa. Kurssit järjestetään seuraavasti 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 sinulla on hyvät käytännön ohjelmalliset ongelmanratkaisutaidot,tunnet ja osaat jossain määrin soveltaa imperatiivisen paradigman lisäksi muita ohjelmointiparadigmoja (esimerkiksi olio-ohjelmointi tai funktionaalinen ohjelmointi) jatunnet ohjelmointiin liittyviä käsitteitä ja teorioita.   Kurssit järjestetään seuraavasti     Kurssin jälkeen opiskelija ymmärtää, mitä haasteita tietokantajärjestelmän toteuttamiseen liittyyosaa suunnitella relaatiomallin mukaisia tietokantojaosaa SQL-kielen perusteet ja suunnitella omia kyselyitätuntee transaktioiden ja indeksien periaatteet Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti

Tästä osiosta löydät yliopistossa aineopintotasoisiksi luokitellut kurssit. 

Aineopintotasoiset kurssit Tarjolla olevat kurssit: Kurssin jälkeen osaat C++-kielen perusasiat ja pystyy toteuttamaan sillä algoritmejatunnet tärkeimmät C++-standardikirjaston tietorakenteet ja algoritmitosaat käyttää binäärihakua, dynaamista ohjelmointia ja segmenttipuuta monipuolisesti algoritmien suunnittelussatunnet joitakin edistyneempiä algoritmitekniikoita (esim. Z-algoritmi, verkon 2-yhtenäisyys, treap-rakenne) Kurssit järjestetään seuraavasti After successful completion of the course, you 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 contextanalyze and formulate ethical arguments and identify some common logical fallacies and express some of the main differences between the major theories in normative ethicsexplain 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 fieldidentify 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 incidentdiscuss 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 hacktivismdiscuss 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 developmentunderstands 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 You 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. Can confidently write basic level Python programs without constantly consulting language/library documentation.Can apply efficient and elegant Pythonic idioms to solve problemsKnows the different phases of data analysis pipelineKnows the fundamental data types array, Series and DataFrameCan clean data to form consistent Series and DataFrames without anomaliesCan select subsets, transform, reshape and combine dataCan 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 algorithmsCan visualize data as simple plots or histogramsCan apply basic data analysis skills to a simple project on an application field  Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti After the course you are able to - develop and release containerized applications on a self-hosted cluster as well as use Google Kubernetes engine, - apply Kubernetes in maintenance and updating of applications, - use monitoring with containerized applications, and - explain continuous deployment and implement deployment to Kubernetes. Kurssit järjestetään seuraavasti After completing the course, you will be able to: Identify autonomy and adaptivity as key concepts of AIDistinguish 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 experimentFormulate a real-world problem as a search problemFormulate a simple game (such as tic-tac-toe) as a game treeUse the minimax principle to find optimal moves in a limited-size game treeExpress probabilities in terms of natural frequenciesApply the Bayes rule to infer risks in simple scenariosExplain the base-rate fallacy and avoid it by applying Bayesian reasoningExplain why machine learning techniques are usedDistinguish between unsupervised and supervised machine learning scenariosExplain the principles of three supervised classification methods: the nearest neighbor method, linear regression, and logistic regressionExplain what a neural network is and where they are being successfully usedUnderstand the technical methods that underpin neural networksUnderstand the difficulty in predicting the future and be able to better evaluate the claims made about AIIdentify some of the major societal implications of AI including algorithmic bias, AI-generated content, privacy, and work Kurssit järjestetään seuraavasti Kurssin suorittamisen jälkeen osaat: nimetä autonomisuuden ja adaptiivisuuden tekoälyn ominaispiirteiksierottaa toisistaan tieteiskirjallisuuden tekoälyn ja oikean tekoälynkuvailla tekoälyn keskeiset filosofiset kysymykset liittyen Turingin testiin ja kiinalaisen huoneen ajatuskokeeseenmuotoilla tosielämän ongelmia etsintäongelminamuotoilla yksinkertaisia pelejä (kuten ristinolla) pelipuuksisoveltaa minimax-periaatetta optimaalisten pelisiirtojen ratkaisemiseen rajoitetun kokoeisessa pelipuussailmaista todennäköisyysarvoja luonnollisina frekvensseinäsoveltaa Bayesin kaavaa yksinkertaisissa skenaarioissaselittää esiintyvyysharhan ja välttää sen bayesilaisen päättelyn avulla selittää miksi koneoppimista tarvitaanerottaa ohjatun ja ohjaamattoman koneoppimisen tilanteet toisistaanselittää seuraavan kolmen ohjatun koneoppimisen menetelmän periaatteet: lähimmän naapurin luokitin, lineaariregressio ja logistinen regressioselittää, mitä neuroverkot ovat ja mihin tarkoituksiin ne sopivatymmärtää myös neuroverkkojen taustalla olevien menetelmien rajoituksetymmärtää tulevaisuuden ennustamisen vaikeus, jotta voit paremmin arvioida tekoälystä esitettyjen väitteiden uskottavuuttatunnistaa joitakin tekoälyn merkittävimpiä yhteiskunnallisia vaikutuksia, kuten algoritmista syrjintää, väärennettyjä sisältöjä, yksityisyydensuojaa ja työelämän murrosta Kurssit järjestetään seuraavasti 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 intelligensbeskriva de filosofiska frågeställningarna inom artificiell intelligens som har att göra med Turingtestet och tankeexperimentet det kinesiska rummetformulera problem från verkliga livet som sökproblembeskriva enkla spel (t.ex. luffarschack) som spelträdtillämpa minimax-principen för att reda ut de optimala dragen i ett avgränsat spelträduttrycka sannolikhetsvärden som naturliga frekvensertillämpa Bayes sats i enkla scenarierförklara vilseledande prevalens och undvika denmed hjälp av bayesiansk slutledning förklara varför maskininlärning behövsskilja mellan situationer med övervakad och oövervakad maskininlärningförklara följande tre principer inom övervakad maskininlärning: närmaste granne-metoden, linjär regression och logistisk regressionförklara vad neuronnät är och för vilka ändamål de är lämpligaförstå också de begränsningar som finns i neuronnätens underliggande modellerfö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 intelligenskä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. Kurssit järjestetään seuraavasti 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 learningchoose a suitable AI approach to solve simple tasks such as route planning, probabilistic inference, and pattern recognitionimplement a straightforward brute-force optimization algorithmimplement simple probabilistic inference based on statistical data using the Bayes rulebuild linear regression models from data, and use the models to predict variables of interest, such as apartment pricesuse the nearest neighbor method to predict variables of interestuse cross-validation to avoid under- and overfittingbuild and apply logistic regression and simple neural network models for prediction Kurssit järjestetään seuraavasti 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, andunderstand when the ethical issue requires additional expertise.  Kurssit järjestetään seuraavasti After the course you will know the basic principles of functional programming,can implement simple algorithms using the Haskell programming language,can fluently use recursion in programming. Kurssit järjestetään seuraavasti After the course you have more experience in functional programming,understand the role of side effects in functional programming, andknow more Haskell programming techniques. Kurssit järjestetään seuraavasti Student can express the basic philosophical problems related to AI (the difficulty in defining AI and consciousness, acting vs thinking, Turing test)can distinguish between realistic and unrealistic AI in science-fictioncan describe the contrast between "Good Old Fashioned AI" (GOFAI) and modern AI approachesknows the main stream developments in the history of AIcan formulate a problem as a graph and apply search algorithms to solve itcan explain and implement A* searchcan formulate a simple game (such as tic-tac-toe) as a game treecan explain and implement the minimax algorithm and depth-limited alpha-beta pruningcan design a reasonable heuristic evaluation function in a game (e.g., chess)can express uncertain knowledge in a simple situation using a probabilistic modelcan apply the Bayes theorem to calculate posterior probabilities given evidence in a simple scenariocan estimate probability values from a samplecan represent a problem solving situation as a Bayesian networkcan apply an approximate (Monte Carlo) technique to perform inference in a Bayesian networkcan distinguish between unsupervised and supervised machine learning scenarioscan implement at least two supervised classification methods (e.g., naive Bayes, nearest neighbour classifier)knows the main types of neural networks (feed-forward, recurrent, self-organizing map) and their main principlescan implement the perceptron algorithm in a simple binary classification problemcan generate natural language sentences from a context-free grammarcan parse a sentence using the Cocke-Younger-Kasami algorithmappreciates the difficulty of implementing an autonomous robot in the real worldimplements simple functionalities, e.g., following a line on the floor, using a robot with limited sensor capabilities After the course you can summarize the key services of an operating system (OS) and their operationdescribe the essential structures of an OS together with their interfacesdescribe the position of OS in modern data processing environmentdescribe the structure and the functionalities of operating systemsdescribe 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 purposedescribe different types of thread execution (user-level, kernel-level)describe basic process scheduling techniques in uniprocessor, multiprocessor, and real-time systemscompare the suitability of different scheduling algorithms on different work loadschoose (and justify the choice) the most practical way to execute threads for given software systemexplain how shared memory and other methods are used for process and thread communicationexplain the need for concurrency using examples illustrating concurrent operations of hardware and software levelexplain the importance of different scenarios when examining the execution of concurrent programsprovide examples of common problems that may results in an incorrect concurrent solutionexplain the nondeterministic nature of process execution and its implicationsexplain the advantages, disadvantages, implementation levels, and methods of concurrencyexplain the requirements for concurrency solutions (e.g., in terms of correctness in all scenarios) and finding a scenario leading to failed outcomeexplain the basic concepts of concurrent execution: atomicity, critical section, synchronization, communication, deadlockexplain the basic concurrency problems: critical section problem, turn ticket, readers-writers, producer-consumer, client-server, and boom synchronizationdescribe the occurrence of a deadlock and explain necessary and sufficient conditions for a deadlock to occurdesign a solution to critical section problem using the most appropriate method, e.g., interrupt disabling, busy-wait, semaphore, monitor, messagesexplain the semaphore and monitor structures, and use them correctly in problem solving apply concurrency handling mechanisms to solve practical problemsexplain 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 operationsimulate at algorithm level the address translation in (multi-level) paged VM systemanalyze the effect of page size in process operation and page table size, and justify a choice made for a certain page sizedescribe the advantages and disadvantages of (multilevel) paging and segmentation methodsdescribe at algorithm level the VM implementation: page fetch and replacement policies, resident set size management policies, multiprogramming level policiesdescribe the basic structure of the file system and its componentsexplain the communication between peripheral devices and operating systemexplain the basic scheduling algorithms for hard disksexplain the basic idea of RAID, and explain different RAID implementations comparing their featuresexplain 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 filesexplain basic OS security threats and the methods to secure the operating system against themdescribe access control mechanism in operating systems Kurssin suoritettuasi tunnet ohjelmistotuotantoprosessin vaiheet,olet vesiputousmallin ja ketterän ohjelmistotuotannon luonteesta,osaat soveltaa versionhallintaa osana ohjelmistokehitystä,osaat soveltaa UML-mallinnustekniikkaa vaatimusmäärittelyssä ja ohjelmiston suunnittelussa tarkoituksenmukaisella tavallatunnet ohjelmiston testauksen eri vaiheetosaat soveltaa automatisoitua testausta yksinkertaisissa ohjelmistoprojekteissatunnet tärkeimpiä ohjelmiston suunnitteluperiaatteita ja osaa soveltaa niitä yksinkertaisissa projekteissa Kurssin suoritettuasi Tunnet ohjelmistoprosessin, erityisesti ketterän prosessin vaiheet Tiedät miten vaatimuksia hallitaan ketterässä ohjelmistotuotantoprosessissa Ymmärrät suunnittelun, toteutuksen ja testauksen vastuut ja luonteen ketterässä ohjelmistotuotannossa Ymmärrät ohjelmiston laadunhallinnan perusteet Osaat toimia ympäristössä, jossa ohjelmistokehitys tapahtuu hallitusti ja toistettavalla tavalla Kurssin suoritettuasi osaat toimia osana ketterien periaatteiden mukaan toimivaa ohjelmistokehitystiimiä rooleissa jotka edellyttävät määrittelyä, suunnittelua, toteutusta, laadunhallintaa ja tuotannossa operointia.  Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti 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. Kurssit järjestetään seuraavasti 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 Kurssit järjestetään seuraavasti Johdanto web-sovellusten toimintaan ja internetin perusosiin.Näkymät, tietokannat ja tietokanta-abstraktiot.Tietokannat ja tietokanta-abstraktiot.Mediatyypit ja tiedostojen tallentaminen. Ohjelmistokehitysprosessi, kerrosarkkitehtuuri ja sovellusten automaattinen testaaminen. Sovelluksen siirtäminen verkkoon.HTTP-protokolla ja evästeet. Autentikaatio ja autorisaatio.Toistuvat rakenteet ja fragmentit. Tyylitiedostojen käyttäminen. Syötteiden validointi. Rajapinnat ja REST.Selainohjelmistot ja palvelinohjelmistot. Hieman tietoturvaa. Sovellusten skaalautuvuus. Reaktiivinen ohjelmointi. Kurssit järjestetään seuraavasti

Tämän välilehden kohdalta löydät yliopistossa syventävät opinnot -tasoisiksi luokitellut kurssit. 

Syventävien opintojen tasoiset kurssit Tarjolla olevat kurssit: 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, andto compare the scalability and fault tolerance implications of using the selected methodologies. Kurssit järjestetään seuraavasti Kurssit järjestetään seuraavasti Kurssit järjestetään seuraavasti Kurssit järjestetään seuraavasti

Tämän välilehden kohdalta löydät opinnot, joita yliopistossa ei ole luokiteltu perus-, aine-, eikä syventävien opintojen alle.

 

Muut opinnot Tarjolla olevat kurssit: Kurssin tavoitteena on varmistaa, että sinulla on tarvittavat käytännön taidot tietojenkäsittelytieteen opintoihin. Tavoiteena on, että opit  komentorivin alkeet,käyttämään versionhallintaa suoraviivaisesti koodiprojektissa,sekä luomaan yksinkertaisen staattisen verkkosivun. Kurssit järjestetään seuraavasti The aim of the course is to ensure that you have required practical skills for studies in Computer Science. The goal is that you learn basics of command line, to use VCS (Version control systems) in simple coding project, as well as to make a simple static website. Kurssit järjestetään seuraavasti
Ohjeita opiskeluun

Tärkeää tietoa opiskeluihisi liittyen löydät Opiskelijan ohjeista.

MIkäli et löydä kysymykseesi vastausta, ota yhteyttä: avoin-student@helsinki.fi

Tutkinto-opiskelijaksi?

Tutustu koulutusohjelmiin ja opiskelijaksi hakemiseen.

Ennen maaliskuuta 2021 järjestetyt opinnot

Mikäli etsit tietoa ennen maaliskuuta 2021 järjestetyistä opinnoista, vieraile vanhoilla sivuillamme.