« mooc.fi

Web-palvelinohjelmointi

Voinko oppia tekemään Facebookin, Flickrin tai Twitterin?

No todellakin!

Sisältö, aikataulu ja arvostelu

Kurssilla tutustutaan nykyaikaisten, skaalautuvien ja virheenkestävien web-sovellusten toteuttamiseen, testaamiseen ja julkaisemiseen. Kurssilla keskitytään palvelinpuolen toiminnallisuuden toteuttamiseen. Selainpuolen toiminnallisuudella on kurssilla vain pieni paino. Kurssin opetuskieli on suomi ja ohjelmointikieli Java.

Teemat ja oppimistavoitteet »

Opettajille ja opiskelijoille

Kurssi vastaa Helsingin yliopiston tietojenkäsittelytieteen laitoksen kurssia Web-palvelinohjelmointi (5 opintopistettä). Kurssia ja sen materiaalia saa käyttää ja muokata vapaasti, kunhan noudattaa materiaalin alalaidassa olevaa lisenssiä.

Saat opettajana käyttää kurssia vapaasti omassa oppilaitoksessasi, kunhan et pyydä kurssista maksua opiskelijoilta.

Kurssi tarjotaan kesällä 2017 itseopiskelukurssina. Kesän 2017 kurssi käyttää vuoden 2016 materiaalia. Syksyllä 2017 tarjolle tulee hieman päivitetty versio kurssista.

Arvostelu

Kesä 2017, TKTL

Kurssin arvostelu perustuu harjoitustehtäviin, harjoitustyöhön sekä tenttiin. Kurssin pisteytys on seuraava:

Kurssista voi saada yhteensä 1200 pistettä. Kurssin arvosanarajat ovat seuraavat:

Tentin ja harjoitustyön pisteistä tulee saada vähintään puolet kurssin läpäisemiseksi. Kurssilla ei ole erillistenttimahdollisuutta; kaikissa tenteissä otetaan huomioon kurssipisteet ja tehtäväpisteet.

Harjoitustyön ohjeet: https://docs.google.com/document/d/1RAA0fTPp__2kzpc4glv1pvPercJ-Vzm9wvmvyc8zmmQ/edit.

Kurssin tentti järjestetään joko yksin tai ryhmässä tapahtuvana suullisena kuulusteluna. Tenttejä järjestetään elokuun loppupuolella, ja tenttiin ilmoittaudutaan sähköpostitse.

Esitietovaatimukset ja kurssin suorittaminen

Kurssilla oletetaan Java-ohjelmointikielen tuntemus kurssien ohjelmoinnin perusteet ja ohjelmoinnin jatkokurssi laajuudessa (vastaa mooc.fi-osoitteessa olevaa kurssia Ohjelmoinnin MOOC. Tämän lisäksi oletetaan, että osallistuja tuntee Helsingin yliopistolla järjestettävien kurssien Tietokantojen perusteet ja Ohjelmistotekniikan menetelmät sisällöt oleellisilta osin -- tai, että osaajalla on muuta kautta tarvittava osaaminen. Myös kurssin Web-selainohjelmointi tuntemuksesta on hyötyä.

Omatoiminen tiedon hakeminen on erittäin tärkeää tällä kurssilla menestymiseen.

Tehtävien tekeminen ja palauttaminen

Kurssin tehtävien tekemisessä hyödynnetään Helsingin yliopiston tietojenkäsittelytieteen laitoksellä kehitettyä Test My Code-palvelua, joka mm. tarjoaa ohjelmointiympäristöön liitettävän TMC-liitännäisen. Kurssitehtävät noudetaan paikalliselle koneelle TMC-liitännäisen avulla. TMC mahdollistaa myös tehtävien suoraviivaisen palauttamisen tehtäväpalvelimelle. Osa kurssin tehtävistä tarkastetaan automaattisesti TMC-palvelun avulla -- muiden tehtävien toiminta tulee taas tarkastaa itse erilaisten tukimateriaalien kuten kuvien avulla.

Helsingin yliopiston kurssilla käytettävä TMC-palvelin löytyy osoitteessa https://tmc.mooc.fi/org/hy, kurssin nimenä on kesa2017-wepa. Alkutoimet kurssilla käytettävien työvälineiden asentamiseen löytyy osoitteesta http://mooc.fi/courses/general/ohjelmointi/.

Kurssin tukimuodot

Kesällä 2017 kurssi on täysin itseopiskelukurssi.

Muita kurssilaisia saattaa olla #mooc.fi-kanavalla. Muiden auttaminen kanavalla on vapaaehtoista, mutta luonnollisesti suositeltavaa. Auttamisesta hyötyy apua tarvitsevan lisäksi myös auttaja.

Ohjeet IRC:n käyttöön löytyvät tämän linkin takaa.

Teemat ja oppimistavoitteet

Osa Teemat Oppimistavoitteet
- Esitiedot Olio-ohjelmointi ja ohjelmointiympäristön käyttö (Ohjelmoinnin MOOC), Yksikkötestaus (Ohjelmistotekniikan menetelmät), Versionhallinta (Ohjelmistotekniikan menetelmät), Relaatiotietokantojen toiminta (Tietokantojen perusteet)
1 Johdanto web-sovellusten toimintaan. Yhtä tietokantataulua käyttävä web-sovellus. Osaa toteuttaa yhtä tietokantataulua käyttävän web-sovelluksen.
2 Internetin perusosat. Kerrosarkkitehtuuri ja MVC-malli. Pyynnön kulku web-sovelluksessa. Tietokannat ja tietokanta-abstraktiot. Ymmärtää asiakas-palvelin -mallin. Tietää ensisijaiset kerrosarkkitehtuurin ja MVC-mallin edut. Ymmärtää miten käyttäjän tekemään pyyntöön muodostuu vastaus palvelimella. Osaa luoda web-sovelluksen, joka käyttää useampaa tietokantataulua. Ymmärtää tietokantatransaktioiden käytön ja osaa käyttää niitä web-sovelluksessa.
3 HTTP-protokolla ja käyttäjän tilan ylläpito. Konfiguraatioprofiilit. Web-sovellusten testaaminen. Ymmärtää HTTP-protokollan hyödyt ja rajoitteet. Ymmärtää mitä evästeet ovat, miten ne toimivat, sekä tietää niihin liittyvät uhkat ja lakitekniset rajoitteet. Osaa luoda kirjautuneen käyttäjän muistavan web-sovelluksen. Osaa kirjoittaa automaattisia yksikkötestejä web-sovellukselle. Ymmärtää paikallisen kehitys- ja testausympäristön hyödyt.
4 Web-sovelluskehitykseen liittyvä ohjelmistokehitysprosessi. Tietokantamigraatiot. REST-arkkitehtuurimalli. Ymmärtää tarpeen web-sovellusten kehitysprosessin automatisoinnille sekä web-sovellusten jatkuvalle inkrementaaliselle kehitykselle. Ymmärtää versionhallintapalvelun (esim. Github), sovelluksen testejä suorittavan integraatiopalvelun (esim. Travis CI) sekä testi- ja tuotantoympäristön (esim. Heroku) yhteistyön. Hyödyntää valmiita työvälineitä tietokantaskeeman päivittämiseen ohjelmistokehityksen yhteydessä. Ymmärtää REST-arkkitehtuurimallin perusperiaatteet.
5 Javascript-pohjaisten selainohjelmistojen ja palvelinohjelmistojen yhteistyö. Web-sovellusten tietoturva. Osaa tehdä selainohjelmistosta Javascript-pyynnön palvelimelle. Päivittää näkymän Javascript-pyynnön vastauksen perusteella. Tietää web-sovellusten tyypillisimmät haavoittuvuudet sekä niihin vaikuttavat tekijät (OWASP). Välttää tyypillisimmät haavoittuvuudet omassa ohjelmistossaan. Osaa etsiä haavoittuvuuksia muiden ohjelmistoista sekä ehdottaa niihin korjauksia.
6 Web-sovellusten skaalaaminen isoille käyttäjäjoukoille. Asynkroniset metodikutsut. Palveluperustaiset arkkitehtuurit ja mikroarkkitehtuurit. Ymmärtää sovelluksen vasteajan ja käyttäjäkokemuksen yhteyden. Ymmärtää web-sovellusten pullonkaulat ja osaa ehdottaa tapoja pullonkaulojen kiertämiseen. Ymmärtää vertikaaliseen ja horisontaaliseen skaalautumiseen liittyvät hyödyt ja haasteet. Ymmärtää palveluperustaisten arkkitehtuurien ja mikroarkkitehtuurien perusperiaatteet. Osaa tehdä web-sovelluksen, joka käyttää ja kerää tietoa useammasta erillisestä web-sovelluksesta.
7 Reaktiivinen ohjelmointi. Kertaus. Ymmärtää reaktiivisen ohjelmoinnin perusteet ja osaa tehdä yksinkertaisen palvelinohjelmiston reaktiivisella ohjelmointiparadigmalla.