Yleistä

Kurssilla tutustutaan skaalautuvien ja virheenkestävien web-palvelinohjelmistojen toteuttamiseen, testaamiseen ja julkaisemiseen. Pääpaino on palvelinpään toiminnalla ja esimerkiksi Javascriptillä on kurssilla hyvin minimaalinen rooli.

Osaamistavoitteet (alustava)

Täydentyy kurssin edetessä.

Osa (Viikko) Teema Osaamistavoitteet
- Esitiedot Olio-ohjelmointi ja ohjelmointiympäristön käyttö, yksikkötestaus, versionhallinta, relaatiotietokantojen toiminta.
1 Johdanto web-sovellusten toimintaan. Tuntee pinnallisesti Spring Boot -sovelluskehyksen ja osaa luoda pyyntöihin reagoivan web-sovelluksen. Osaa muodostaa Thymeleaf-kirjastoa käyttäen template-sivuja, joita käytetään näkymien luontiin. Ymmärtää käsitteet polku, kontrolleri, pyynnön parametri ja polkumuuttuja. Tuntee POST/Redirect/GET-suunnittelumallin, ja osaa luoda em. suunnittelumallia seuraavan sovelluksen. Osaa käsitellä olioita ja kokoelmia osana sovellusta.
2 Internetin perusosat. Pyynnön kulku web-sovelluksessa. Tietokannat ja tietokanta-abstraktiot. Tuntee käsitteet URI, DNS, HTTP ja HTML. Osaa kertoa HTTP-protokollan tasolla palvelimelle lähetettävän GET ja POST-tyyppisen pyynnön rakenteen ja sisällön. Osaa kertoa HTTP-protokollan tasolla palvelimelta palautuvan vastauksen rakenteen. Tuntee menetelmiä tietokantojen ohjelmalliseen käsittelyyn. Tuntee käsitteen ORM ja osaa hyödyntää Javan ja Spring Bootin tietokanta-abstraktiota tiedon käsittelyyn. Käsittelee useampia tietokantatauluja sisältäviä sovelluksia ja tietää miten viitteet tietokantataulujen välillä määritellään. Osaa käsitellä transaktioita ohjelmallisesti. Tuntee N+1 kyselyn ongelman.
3 Kyselyiden tulosten järjestäminen ja rajoittaminen. HTTP-protokolla ja evästeet. Osaa käsitellä eri muodossa olevaa tietoa. Osaa järjestää ja rajata tietokannasta haettavaa tietoa. Tuntee käsitteen mediatyyppi. Tietää miten binäärimuotoista tietoa käsitellään web-sovelluksissa. Tuntee käsitteen tilattomuus. Tietää mitä evästeet ovat ja mihin niitä käytetään. Tuntee evästeisiin liittyviä oleellisia lakiteknisia asioita.
4 Kerrosarkkitehtuuri ja web-sovelluskehitykseen liittyvä ohjelmistokehitysprosessi. Osaa jakaa sovelluksen osia sovelluksen sisäisiksi palveluiksi ("Service"). 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.
5 REST. Javascript-pohjaisten selainohjelmistojen ja palvelinohjelmistojen yhteistyö. Ymmärtää REST-arkkitehtuurimallin perusperiaatteet. Osaa toteuttaa palvelun, joka tarjoaa dataa REST-muotoisen rajapinnan yli. Osaa toteuttaa palvelun, joka hyödyntää REST-rajapintaa. Tietää, että Javascript-koodia voi suorittaa selaimessa käyttäjän koneella. Osaa tehdä selainohjelmistosta Javascript-pyynnön palvelimelle. Osaa päivittää näkymää Javascript-pyynnön vastauksen perusteella.
6 Autentikaatio ja autorisaatio. Syötteiden validointi. Hieman tietoturvaa. Osaa selittää autentikaation ja autorisaation erot. Osaa luoda sovelluksen, joka pyytää käyttäjää kirjautumaan. Osaa määritellä kirjautumista vaativia polkuja ja metodeja, sekä piilottaa näkymän osia erilaisilta käyttäjäryhmiltä. Tuntee tapoja tiedon validointiin ja osaa validoida lomakedataa. Tietää web-sovellusten tyypillisimmät haavoittuvuudet sekä niihin vaikuttavat tekijät (OWASP). Välttää tyypillisimmät haavoittuvuudet omassa ohjelmistossaan.
7 Skaalautuvuus. Reaktiivinen ohjelmointi. Tuntee menetelmiä sovellusten skaalaamiseen isoille käyttäjäjoukoille. Ymmärtää reaktiivisen ohjelmoinnin perusteet ja osaa tehdä yksinkertaisen palvelinohjelmiston reaktiivisella ohjelmointiparadigmalla.

Kurssin suorittaminen

Kurssi suoritetaan viikoittaisilla harjoitustehtävillä, henkilökohtaisella projektilla sekä kokeella, joiden lisäksi kurssiin kuuluu kolmen muun osallistujan projektin vertaisarviointi. Kurssilla on yhteensä neljä luentokertaa: 2.11., 9.11., 23.11., ja 30.11. Luennot järjestetään Kumpulan Exactumin salissa CK112 torstaisin klo 12:15-14:00.

Viikoittaisten harjoitustehtävien palautusaika on perjantaisin klo 23:59. Ensimmäisen tehtäväsarjan viimeinen palautuspäivämäärä on 10.11., toisen tehtäväsarjan viimeinen palautuspäivämäärä on 17.11. jne. Tehtäviä julkaistaan kurssin edetessä.

Harjoitusten tekemiseen saa apua Kumpulan kampuksella maanantaisin klo 14-18 ja torstaisin klo 14-16 salissa BK107.

Kurssin koe järjestetään keskiviikkona 20.12. klo 9:00 salissa A111.

Harjoitustyö

Kurssiin liittyvän harjoitustyön kuvaus löytyy osoitteesta https://docs.google.com/document/d/1Tqo_8ZnSKx_AHJjZgQAKkZQvKPTt71Q7_LaV1PK3Tu4/edit?usp=sharing. Harjoitustyö tulee palauttaa 11.12. mennessä ja harjoitustöiden vertaisarviot tulee tehdä 15.12. mennessä.

Tukiväylät

Kurssin ensisijainen tukiväylä on Kumpulan kampuksella Exactumissa tapahtuva ohjaus. Ohjaustilaisuudet ovat avoimia tilaisuuksia, joihin saa tulla vapaasti kysymään apua tehtäviin tai juttelemaan tehtävistä.

Verkon yli nopein tapa avun kysymiseen on kurssin keskustelukanava #wepa: https://riot.im/app/#/room/#_ircnet_#wepa:irc.snt.utwente.nl. Jos et pidä modernista teknologiasta, voit myös liityä huoneeseen Ircnetin kautta seuraamalla näitä ohjeita: http://mooc.fi/courses/general/ohjelmointi/tukikanavat/irc/ohjeet/.

Huomaathan, että yllä mainitun kanavan osallistujat ovat kanssaopiskelijoita. Toiminta perustuu vapaaehtoisuuteen.

Yhteistyö

Yhteistyö on kurssin tehtäviä tehdessä sallittua ja suositeltavaa. Hyvä yhteistyö keskittyy jokaisen osapuolen oppimiseen ja parantaa oppimistuloksia. Jos teet tehtäviä yhdessä muiden kanssa, sinun tulee kuitenkin tehdä ja palauttaa omat ratkaisusi itse.

Hyvä ohjesääntö yhteistyöhön on ns. Gilligan's Island -sääntö:

The Gilligan's Island Rule: You are free to meet with fellow students(s) and discuss an assignment with them. Writing on a board or shared piece of paper during the meeting is acceptable; however, you should not take any written (electronic or otherwise) record away from the meeting. Everything that you derive from the collaboration should be in your head. After the meeting, engage in at least a half-hour of mind-numbing activity (like watching an episode of Gilligan's Island), before starting to work on the assignment. This will assure that you are able to reconstruct what you learned from the meeting by yourself.

Opintovilpistä

Kurssilla seurataan Helsingin yliopiston opintokäytäntöjä. Plagiarismi ja opintovilppi, eli esimerkiksi netissä olevien tai kaverilta saatujen vastausten kopiointi ja niiden palauttaminen omana työnä on kiellettyä.

Todettu opintovilppi johtaa kurssisuorituksen hylkäämiseen ja toistuva opintovilppi voi johtaa opinto-oikeuden määräaikaiseen menettämiseen. Lue lisää osoitteesta http://blogs.helsinki.fi/alakopsaa/opiskelijalle/.

Arvostelu

Kurssin arvostelu perustuu viikoittaisiin harjoitustehtäviin (40% arvostelusta), projektiin ja vertaisarviointeihin (30% arvostelusta) ja kokeeseen (30% arvostelusta). Kurssia ei voi suorittaa erillistentillä.

Viikoittaisista harjoitustehtävistä saa täydet tehtäväpisteet tekemällä 90% kunkin osan tehtävistä. Huomaathan, että jotkut tehtävät painavat arvostelussa enemmän kuin toiset. Kurssin seitsemännen viikon tehtävät ovat bonustehtäviä, joilla voi paikata väliin jääneitä ohjelmointitehtäviä tai heikosti mennyttä kurssiprojektia.

Arvosanarajat:

Kurssipisteet Arvosana
91 tai yli 5/5
86-90 4/5
81-85 3/5
76-80 2/5
70-75 1/5
< 70 hylätty

Edellä kuvattu arvostelu olettaa, että hyväksyt analytiikkadatan keräämisen kurssin tehtävistä. Analytiikkadata sisältää ajoittain kerättäviä aikaleimattuja kopioita työstämästäsi tehtävästä sekä tietoa kurssimateriaalin käytöstä. Analytiikkadataa ei kerätä henkilökohtaisista projekteistasi tai muualta koneeltasi.

Tunnukset ja työvälineet

Käyttäjätunnuksen luominen

Kurssilla tarvitaan käyttäjätunnus Test My Code (TMC) -järjestelmään, jota käytetään tehtävien automaattiseen arviointiin. Käyttäjätunnuksella voit myös kirjautua tähän materiaaliin, jolloin pääset vastaamaan materiaalissa oleviin kyselyihin.

Huom! Jos olet Helsingin yliopiston opiskelija, aseta käyttäjätunnukseksesi opiskelijanumerosi. Näin opintopisteiden liittäminen kurssisuoritukseen helpottuu merkittävästi. Jos taas et ole Helsingin yliopiston opiskelija, keksi itsellesi sopiva käyttäjätunnus. Kun jatkossa kysymme TMC-tunnustasi, tarkoitamme sillä tätä käyttäjätunnusta.

Käyttäjätunnuksen luominen onnistuu sivulla https://tmc.mooc.fi/user/new.

Kun olet luonut käyttäjätunnuksen, voit kirjautua tähän materiaaliin materiaalin oikeassa ylälaidassa olevan "Kirjaudu sisään"-napin kautta.

Ohjelmointiympäristön asentaminen

Kurssin ohjelmointiympäristönä käytetään NetBeans-nimistä ohjelmointiympäristöä, johon lisätään TMC-niminen liitännäinen. Nämä työvälineet löytyvät Kumpulan kampuksen Exactumin mikroluokista asennettuna nimellä "TMCBeans".

Jos teet kurssia kotoa, tulee sinun asentaa koneellesi sekä tuki Java-ohjelmien kehittämiselle, että ohjelmien kehittämiseen käytettävä NetBeans with TMC-ympäristö.

  • Javan asentaminen: lataa uusin Javan kehitysympäristö (Java SE Development Kit 8u112) osoitteesta http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html. Lataamasi versio riippuu käytössäsi olevasta käyttöjärjestelmästä, esimerkiksi Macintosh-käyttäjät lataavat tiedoston jdk-8u112-macosx-x64.dmg ja 64-bittisen Windows-käyttöjärjestelmän käyttäjät lataavat tiedoston jdk-8u112-windows-x64.exe. Kun olet ladannut tiedoston, asenna se koneellesi.
  • NetBeans with TMC:n asentaminen: Mene osoitteeseen http://update.testmycode.net/installers/tmc-netbeans_org_mooc/. Osoitteessa on listattuna eri asennusohjelmat eri käyttöjärjestelmille -- valitse listalla olevista sopivin ja lataa se. Esimerkiksi Windows-käyttäjät lataavat tiedoston http://update.testmycode.net/installers/tmc-netbeans_org_mooc/tmc-netbeans_org_mooc_tmcbeans-windows.exe ja Linuxilla http://update.testmycode.net/installers/tmc-netbeans_org_mooc/tmc-netbeans_org_mooc_tmcbeans-windows.sh jne. Kun tiedoston lataaminen on valmis, asenna sovellus koneellesi.

(*) Linux-koneilla OpenJDK:n asentaminen on todennäköisesti helpompaa kuin yllämainitun Oraclen Java-version. OpenJDK:n asennus tapahtuu Ubuntussa komentoriviltä seuraavalla komennolla:

sudo apt-get install openjdk-8-jdk

Joissain Linux-koneissa tulee lisäksi NetBeans with TMC:n asennuksen yhteydessä asettaa ensiksi ladatulle asennuspaketille suoritusoikeudet. Tämä tapahtuu klikkaamalla asennuspakettia oikealla hiirennapilla ja valitsemalla Properties. Valitse tämän jälkeen Permissions, ja aseta Allow executing file as a program -ruutuun ruksi. Ohjelman asennuksen pitäisi tämän jälkeen käynnistyä kun tuplaklikkaat tiedostoa ja valitset Run.

Kun olet saanut kurssin työvälineet asennettua, seuraava askel on kurssin valinta ohjelmointiympäristössä.

Oikean kurssin valinta ohjelmointiympäristössä

Helsingin yliopiston syksyn 2017 kurssi Web-palvelinohjelmointi (kurssi https://courses.helsinki.fi/fi/node/4487696/). Jos teet kurssia Helsingin yliopistolla, valitse TMC:n asetuksista palvelimen osoitteeksi (server address) https://tmc.mooc.fi/org/hy/courses/266. Kurssin nimi on tällöin hy-wepa-s17.

Ylläolevat asetukset saa asetettua NetBeans with TMC:n valikosta TMC -> Settings. TMC:hen asetettava käyttäjätunnus on aiemmin luomasi TMC-tunnus, ja salasana on luomallesi tunnuksellesi asettamasi salasana.

Analytiikkadatan keräämisestä ja kurssilla tehtävästä tutkimuksesta

Analytiikkadatan kerääminen ja arvostelu

Kurssin aikana tehdyistä tehtävistä kerätään tietoa. Kerätty tieto sisältää materiaalissa olevia kyselyitä, ohjelmointitehtävien vastauksia, sekä kurssimateriaalin käyttöä. Jos et hyväksy tiedon keräämistä, kurssin pisteytyksessä ei voida ottaa näihin liittyviä suorituksia huomioon. Tallennettu tieto sisältää henkilökohtaisen tunnisteen, jonka perusteella ei voida suoraan päätellä henkilöllisyyttäsi. Tieto ei esimerkiksi siis sisällä nimeäsi tai sähköpostiosoitettasi.

Varmista että TMC:n asetuksissa (Valikko TMC -> Settings) kohdassa "Send snapshots of your progress for study" on ruksi.

Jos olet opiskelijana Helsingin yliopistolla ja et halua että työstämistäsi tehtävistä kerätään ajoittaista dataa kurssiarvostelua varten, voit vaihtoehtoisesti suorittaa kurssin niin, että arvostelu perustuu kurssikokeeseen (70%) sekä projektiin ja vertaisarviointeihin (30%). Analytiikkadataa kerätään vain kurssiin liittyvistä tehtävistä, ei muista projekteistasi tai muualta koneeltasi.

Kurssilla tehtävästä tutkimuksesta

Kurssilla tehdään oppimiseen liittyvää tutkimusta. Tällä tutkimuksella on useampia tavoitteita: (1) lähestyä tilannetta, missä oppimateriaali ja tehtävät osaavat ottaa oppijoiden yksilölliset erot paremmin huomioon ja reagoida niihin tarjoten kohdennetumpaa opetusta, (2) kehittää digitaalisissa ympäristöissä tapahtuvaan oppimiseen liittyvää ymmärrystä ja tietoa, sekä (3) tukea tutkimustiedon kautta muita oppimaterialien kehittäjiä ja oppimisen tutkijoita. Tutkimusdatan hallinnasta vastaa Helsingin yliopiston tietojenkäsittelytieteen laitoksen Agile Education Research -ryhmän Arto Hellas. Anonymisoimattomaan tutkimusdataan eivät pääse käsiksi muut tutkijat. Voit myös pyytää milloin tahansa sinusta kerätyn datan poistamista lähettämällä sähköpostin osoitteeseen arto.hellas@cs.helsinki.fi

Työskentelystä kerättyä tietoa käytetään tutkimuksessa jos sallit. Tutkimuksemme päätavoitteena on osaamisen kehittymisen arviointi tekemisen arvioinnin sijaan, mikä mahdollistaisi yksilöllistä osaamista parhaiten kehittävien vinkkien ja tehtävien tarjoamisen. Tutkimustuloksista ei pystytä tunnistamaan yksittäisiä opiskelijoita. Jos et salli kurssin aikana kerättyjen tietojen käyttämistä tutkimuksessa, siitä ei tule minkäänlaisia seuraamuksia.

Kurssilla tehdään lisäksi tutkimusta, joka voi vaikuttaa kurssikokemukseen (esim. kurssisisältö). Jos osallistut tutkimukseen, saatat saada esimerkiksi uusia ominaisuuksia materiaaliin. Jos et halua osallistua tutkimukseen, saat kurssin sisällöstä perusversion. Tutkimukseen osallistuminen ei vaikuta loppuarvosanaan.

Sitten materiaaliin...

Löydät tämän sivun ylälaidasta linkin "Osa 1", jolla pääset ensimmäiseen osaan käsiksi. Siirtyminen onnistuu myös tästä painamalla.

Kurssimateriaalin tekijät ja lisenssi

Kurssimateriaalin on tehnyt Arto Hellas (né Vihavainen) ja Agile Education Research -tutkimusryhmä. Materiaalin syntyyn ja muovautumiseen ovat vaikuttaneet kurssin edelliset versiot, niiden osallistujat, sekä kurssien assistentit.

Tämä materiaali on lisensoitu Creative Commons BY-NC-SA-lisenssillä, joten voit käyttää ja levittää sitä vapaasti, kunhan alkuperäisten tekijöiden nimiä ei poisteta. Jos teet muutoksia materiaaliin ja haluat levittää muunneltua versiota, se täytyy lisensoida samalla lisenssillä. Materiaalien käyttö kaupalliseen tarkoitukseen on ilman erillistä lupaa kielletty.

Voit osallistua kurssimateriaalin parantamiseen myös itse. Jokaisen sivun alalaidassa on linkit, joilla pääset ehdottamaan muutoksia. Muutosten ehdottaminen vaatii Github-tunnuksen.

Sisällysluettelo