« 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.

Aiempia kurssin oppimateriaaleja: syksy 2014, syksy 2015 sekä lyhyeksi jäänyt MOOC-kurssi. Edessäsi on kesän 2016 palvelinohjelmoinnin MOOCia varten toteutettu kurssimateriaali.

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.

Kurssin suorittaminen tapahtuu Helsingin yliopiston Avoimen yliopiston kautta (kurssi alkaa 11.7.2016). Jos olet opiskelijana jossain muualla kuin Helsingin yliopistolla ja haluaisit suorittaa kurssin siten, että saat suoritusmerkinnän tai opintopisteet omassa oppilaitoksessasi, etsi omasta oppilaitoksestasi opettaja tai opinto-ohjaaja, joka on valmis valvomaan kokeen ja hyväksymään kurssisuorituksen.

Arvostelu

Helsingin yliopiston Avoin yliopisto

Kurssin arvostelu (Helsingin yliopiston Avoin yliopisto) perustuu harjoitustehtäviin, harjoitustyöhön sekä verkkotenttiin. Kurssin pisteytys on seuraava:

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

Kurssille voi osallistua myös fiilispohjalta. Tällöin suorituksesta voi saada diplomin, missä näkyy tehtyjen tehtävien määrä.

Syksy 2016, 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/1KFhPUReVnZraC5cpJjpt_QL173MEBxjPJkGI0NrlccE/edit?usp=sharing.

Esitietovaatimukset ja kurssin suorittaminen

Kurssilla opetetaan 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 s2016-wepa. Alkutoimet kurssilla käytettävien työvälineiden asentamiseen löytyy osoitteesta http://mooc.fi/courses/general/ohjelmointi/.

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

Kurssin tukimuodot

Kurssilla käytetään #mooc.fi IRC-kanavaa, josta löytyy muita kurssilaisia. Muiden auttaminen kanavalla on vapaaehtoista, mutta luonnollisesti suositeltavaa. Auttamisesta hyötyy apua tarvitsevan lisäksi myös auttaja. Helsingin yliopiston Avoimen yliopiston opiskelijat voivat keskustella myös kurssin Moodle-foorumilla.

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.