Web-palvelinohjelmointi

582353
5
Ohjelmistojärjestelmät
Aineopinnot
Kurssilla tutustutaan nykyaikaisten, skaalautuvien ja virheenkestävien web-sovellusten toteuttamiseen, testaamiseen ja julkaisemiseen. Kurssilla keskitytään palvelinpuolen toiminnallisuuden toteuttamiseen. Kurssi korvaa aiemman kurssin "Web-sovellusohjelmointi". Kurssista ei järjestetä erilliskokeita. Uusintakokeisiin osallistuminen edellyttää kurssin harjoitustehtävien tekemistä kurssin aikataulussa.

Koe

16.10.2012 16.00 A111
Vuosi Lukukausi Päivämäärä Periodi Kieli Vastuuhenkilö
2012 syksy 03.09-09.10. 1-1 Suomi Arto Hellas

Luennot

Aika Huone Luennoija Päivämäärä
Ti 10-12 D123 Arto Vihavainen 11.09.2012-10.10.2012
Ke 10-12 CK112 Arto Vihavainen 11.09.2012-10.10.2012

Huom! Kurssin ensimmäinen luento on poikkeuksellisesti vasta keskiviikkona 5.9. klo 10-12 auditoriossa CK112.

Yleistä

HUOM! Viimeinen luento järjestetään tiistaina 9.10. Keskiviikkona 10.10. ei ole enää luentoa.

Kurssilla tutustutaan nykyaikaisten, skaalautuvien ja virheenkestävien web-sovellusten toteuttamiseen, testaamiseen ja julkaisemiseen. Kurssilla keskitytään palvelinpuolen toiminnallisuuden toteuttamiseen: kurssilla rakennettavat käyttöliittymät tulevat olemaan suurilta osin hyvin rumia. Kurssin suoritus perustuu vahvasti tehtävien tekemiseen: kurssilla opetellaan sitä, miten asioita oikeasti tehdään, eikä sitä miten asiat teoriassa toimivat kliinisessä laboratorioympäristössä.

Kurssin pääohjelmointikieli on Java: käytämme esimerkeissä Spring-sovelluskehystä. Teemaan liittyviä buzzwordeja: MVC, N-TIER, REST, ORM, SOA, NOSQL, OWASP, IAAS, PAAS, SAAS ja HTTP.

Kurssi ei ole johdatuskurssi selainohjelmointiin ja käyttöliittymäsuunnitteluun; HTML:n ja CSS:n rooli kurssilla on hyvin vähäinen. Selainohjelmointiin tutustutaan toisella periodilla järjestettävässä kurssissa web-selainohjelmointi.

 

Tuleehan tällä kurssilla muutakin kuin servlettejä? -- Joo. Ensimmäinen viikko toimii yleiskatsauksena ja kertauksena, jossa käydään läpi HTTP:tä, client-server -ideologiaa, request-response -paradigmaa ja yleistä asiaa web-kehitykstä: tässä servletit toimivat yhtenä hyvänä esimerkkinä.

 

Kannattaa tutustua myös keväällä järjestetyn kurssin "Web-sovellusohjelmointi" kurssipalautteeseen.

 

Esitietovaatimukset

  • XML:n luku- ja kirjoitustaito.
  • Omatoiminen tiedon hakeminen ja omaksuminen..
  • Tietokoneen käytön perusteet. Luovit lähes sujuvasti komentotulkissa (terminal) ja et tarvitse tarkempia ohjeita seuraavaan askelsarjaan:  "mene komentotulkkia käyttäen omaan kotikansioosi, luo uusi kansio nimeltä "Projekti", mene juuri luotuun kansioon, kopioi osoitteessa http://www.cs.helsinki.fi/u/avihavai/pom.xml oleva tiedosto kansioosi ja suorita komento "mvn clean""
  • Tietokantojen perusteet: olet kirjoittanut SQL:ää, suunnitellut tietokannan rakenteen ja ymmärrät käsitteet tietokanta, tietokantakysely ja transaktio.
  • Kypsyys muiden kirjoittaman koodin lukemiseen ja kolmannen osapuolen tarjoamien komponenttien käyttämiseen.
  • Tietokantasovellus-kurssin suorittamisesta on huomattavasti hyötyä, mutta se ei ole pakollinen.
  • Pystyt lukemaan ylläolevan tekstin, ymmärrät sen, etkä välitä mahdollisista kirjoitusvirheistä.

 

Kurssin suorittaminen

Kurssista on mahdollista saada neljästä kuuteen opintopistettä. Viidennen ja kuudennen opintopisteen saamiseen vaaditaan erillinen harjoitustyö, jonka tekeminen aloitetaan kurssin neljännellä viikolla.

Harjoitustyön ohje ja vaatimukset löytyy osoitteesta http://docs.google.com/document/d/1kOrKTw-qFa9CILJcARD_XchMnpERUR3lkiePZpwN2LA/view

Kurssilla on viikoittain 4 tuntia luentoja. Alustavasta aikataulusta poiketen luennot järjestetään tiistaisin ja keskiviikkoisin klo 10-12. Tiistaisin luento on salissa D123, keskiviikkoisin salissa CK112.

Viikon ensimmäisellä luennolla käydään läpi pääosin teoriaa, toisella pääosin työstettyjä esimerkkejä. Pääpaino kurssilla on harjoitustehtävissä ja niiden tekemisessä. Harjoitustehtävien tekemiseen tarjotaan tukea ohjelmointisaleissa kurssilla sovittuina aikoina. Kurssin harjoitukset alkavat jo ensimmäisellä viikolla.

Harjoitusajat

Kurssin harjoitukset järjestetään pajamuotoisina, joissa tehtäviä tehdään paikan päällä ohjaajien avustamana. Harjoitukset järjestetään seuraavina aikoina:

  • ti 12-16, B221
  • to 14-18, B221
  • pe 12-16, B221

Deadlinet ovat aina maanantai-aamuna 06:00.

IRC

#wad @ IRCNet
Ohjeet IRC:n käyttöön selaimen kautta http://mooc.cs.helsinki.fi/content/irc-ohjeet ( huom! vaihda #mooc.fi -kanava muotoon #wad )
IRC-logi (intranetissä, käyttöön tarvitsee TKTL:n tunnukset):  http://www.cs.helsinki.fi/i/avihavai/wepa-2012.log

Koe

Kurssikoe järjestetään tiistaina 16.10. klo 16:00 salissa A111/B123.

Arvostelu

Kurssin arvosana koostuu tehtäväpisteistä ja koepisteistä. Tehtävistä voi saada 36 pistettä, kokeesta 24 pistettä. Arvosanan 5 voi saada 51 pisteellä, arvosanaan 1 riittää 31 pistettä.

Kurssilla on käytössä koeleikkuri, eli kokeesta täytyy saada vähintään puolet pisteistä päästäkseen kurssista läpi.

Tehtävistä saatavat kurssipisteet määräytyvät tehtyjen tehtävien mukaan. Jokaiselta viikolta voi saada maksimissaan 6 kurssipistettä. Pistemäärä lasketaan lineaarisesti mahdollisten tehtäväpisteiden mukaan. Saadakseen viikolta täydet kurssipisteet, tulee kerätä vähintään 90% viikolla saatavista tehtäväpisteistä.

Huom! Tehtäväpisteitä laskettaessa kukin tehtävän alikohta lasketaan omaksi tehtäväpisteeksi. Esimerkiksi tehtävässä 6 on 3 alikohtaa, joista jokaisesta saa erillisen tehtäväpisteen.

Erilliskokeet

Kurssista ei järjestetä erilliskokeita. Uusintakokeita järjestetään TKTL:n koeaikataulun mukaisesti. Uusintakokeissa kokeen maksimipistemäärä on 24p, loput pisteet tulevat kurssin aikana tehdyistä tehtävistä.

Kirjallisuus ja materiaali

Kurssilla käsiteltävään laajahkoon aihealueeseen ei ole olemassa yksittäistä hyvää oppikirjaa. Kurssilla käytettävällä luentomateriaalilla ja aktiivisella omatoimisella tiedon etsimisellä pärjää kurssilla hyvin.

Kurssimateriaali ja tehtävät päivittyy osoitteeseen http://www.cs.helsinki.fi/group/java/s12-wepa/

Kurssin viikoittaiset korkean tason teemat

  • VK1: Webin perusteet, HTTP, Servlet-sovellusten ohjelmointi, MVC
  • VK2: JSP-sivut, JSTL/EL, Front-controller pattern, SOLID, DI ja IoC, Springin alkeet Web-sovelluskehityksessä, MVC
  • VK3: Tietokannan käyttö ja Domain Driven Design, JDBC, DAO-pattern ja ORM + JPA, Spring Data JPA, Kerrosarkkitehtuuri (N-TIER), Tietokantoihin liittyvää tietoturvaa
  • VK4: Kerrosarkkitehtuurin jatkoa, REST + JSON, Palveluorientoituneiden arkkitehtuurien perusteet (SOA), Asynkroniset metodikutsut
  • VK5: Palveluorientoituneet arkkitehtuurit jatkoa (SOA), skaalautuvuus, pilvipalvelut (IAAS, PAAS, SAAS)
  • VK6: Kirjautuminen, lokalisointi, reikien tilkitsemistä ja makupala selainohjelmoinnista