Fullstack-ohjelmointi (5op)
Toteutuksen tunnus: 4A00HB49-3001
Toteutuksen perustiedot
- Ilmoittautumisaika
- 24.11.2025 - 11.01.2026
- Ilmoittautuminen toteutukselle ei ole vielä alkanut.
- Ajoitus
- 01.01.2026 - 31.07.2026
- Toteutus ei ole vielä alkanut.
- Laajuus
- 5 op
- Toteutustapa
- Lähiopetus
- Yksikkö
- Tietojenkäsittely
- Toimipiste
- TAMK Pääkampus
- Opetuskielet
- suomi
- Paikat
- 0 - 50
- Koulutus
- Tietojenkäsittelyn tutkinto-ohjelma
- Opettajat
- Jussi Pohjolainen
- Vastuuhenkilö
- Jussi Pohjolainen
- Ryhmät
-
24TIKOOT12024 Tietojenkäsittely, ohjelmistotuotannon opintosuunta, ryhmä 1
-
24TIKOOT22024 Tietojenkäsittely, ohjelmistotuotannon opintosuunta, ryhmä 2
- Opintojakso
- 4A00HB49
Osaamistavoitteet (Opintojakso)
Opintojakson tavoitteena on antaa opiskelijalle taidot palvelinpuolen tekniikoista, joilla toteutetaan moderneja full-stack web-sovelluksia. Opintojakson aikana tutustutaan dynaamisten web-sovellusten suunnitteluun, rakentamiseen ja toteuttamiseen. Opintojakson aikana opiskelijat tutustuvat hyväksi havaittuihin ohjelmistokehityksen ja julkaisuihin liittyviin tekniikoihin.
Opintojakson suoritettuaan opiskelija
• osaa toteuttaa full-stack web-sovelluksia.
• osaa käyttää moderneja web-kehityksen teniikoita.
• osaa toimia projektimuotoisessa ohjelmistokehityksessä.
• osaa julkaista ohjelmistoja käyttäen hyväksi esim. pilvipalveluja.
Sisältö (Opintojakso)
• Dynaamiset full-stack web-sovellukset
• Projektimuotoinen ohjelmistokehitys
• Ohjelmistojen julkaisu
Esitietovaatimukset (Opintojakso)
Johdatus ohjelmointiin
Tietokantojen jatkokurssi
Arviointikriteerit, tyydyttävä (1-2) (Opintojakso)
Opiskelija
• osaa rakentaa pienimuotoisia full-stack -sovelluksia.
• osaa toimia projektissa ja julkaista ohjelmistoja.
Arviointikriteerit, hyvä (3-4) (Opintojakso)
Opiskelija
• osaa rakentaa monipuolisia full-stack -sovelluksia, jotka käyttävät teknologioita monipuolisesti.
• osaa toimia projektissa aktiivisessa roolissa kehittäen toimintatapoja.
• osaa vastata ohjelmiston julkaisujen suunnittelusta ja toteuttamisesta.
Arviointikriteerit, kiitettävä (5) (Opintojakso)
Opiskelija
• osaa rakentaa laaja-alaisia full-stack -sovelluksia, jotka käyttävät erittäin laajasti ja monipuolisesti erilaisia teknologioita autentikoinnista tietovarantojen käsittelyyn (esim. ORM).
• osaa arvioida ja ottaa käyttöön laaja-alaisesti eri teknologioita projektin tarpeisiin liittyviin toimintoihin (esim. versionhallinta, testaus, julkaisu, virtualisointi, kontit).
Aika ja paikka
Ks. kalenteri
Tenttien ja uusintatenttien ajankohdat
Opintojaksolla exam.tuni.fi tentti joka aukeaa viikolla 10 ja päättyy viikkoon 14. Opiskelija voi tästä aikaikkunasta valita itselleen sopivan tenttiajan.
Arviointimenetelmät ja arvioinnin perusteet
Arviointi koostuu seuraavista osa-alueista
- Harjoitukset
- Projekti
- Tentti
Kokonaisarvio keskiarvo harjoituksista, projektista ja tentistä.
HARJOITUKSET
Arvosanan 1 saa, kun vähintään 40 % harjoituksista on tehty.
Arvosanan 2 saa, kun vähintään 55 % harjoituksista on tehty.
Arvosanan 3 saa, kun vähintään 65 % harjoituksista on tehty.
Arvosanan 4 saa, kun vähintään 75 % harjoituksista on tehty.
Arvosanan 5 saa, kun vähintään 90 % harjoituksista on tehty.
Harjoitukset otetaan vastaan ainoastaan jos opiskelija on ajoissa koodikatselmuksessa ja osallistuu koodikatselmukseen.
TENTTI
Tentti tehdään exam.tuni.fi palvelussa ja tentti koostuu monivalintakysymyksistä.
Arvosanan 1 saa, kun vähintään 40 % tehtävistä on oikein.
Arvosanan 2 saa, kun vähintään 55 % tehtävistä on oikein.
Arvosanan 3 saa, kun vähintään 65 % tehtävistä on oikein.
Arvosanan 4 saa, kun vähintään 75 % tehtävistä on oikein.
Arvosanan 5 saa, kun vähintään 90 % tehtävistä on oikein.
PROJEKTITYÖ
Itsenäisesti tehtävä fullstack - sovelluksen toteutus.
Hylätty (0)
- Ei täytä minimivaatimuksia.
- Sovellus ei käänny tai käynnisty. Toteutuksessa on merkittäviä virheitä.
Tyydyttävä (1 - 2)
- Vähimmäistasoinen toteutus, joka perustuu harjoituksissa tehtyyn työhön.
- Puutteellinen dokumentaatio.
- Selkeitä bugeja toteutuksessa.
- Heikot Git-commitit (vähän ja/tai epäselvät viestit).
- Puutteelliset julkaisut.
Hyvä (3 - 4)
- Hyvin kommentoitu ja dokumentoitu koodi.
- Huomio käyttökelpoisuudessa (usability).
- REST-rajapinta noudattaa hyvää käytäntöä, sisältäen selkeät virheilmoitukset ja statuskoodit.
- Riittävä määrä laadukkaita Git-commitointeja.
- Sovellus hyödyntää npm workspaces -rakennetta frontin ja backin hallinnassa.
- Hyvät julkaisut.
Erinomainen (5)
- Sovellus on julkaistu pilveen (esim. AWS, Google Cloud, Azure, Heroku, Render.com, Railway).
- Erinomainen käyttökokemus ja viimeistelty käyttöliittymä.
- Erittäin laadukkaat Git-commitit (tiheä tahti ja selkeät viestit).
- Kokonaisuudessaan siisti, ylläpidettävä ja loppuun asti rakennettu ratkaisu.
- Ympäristön hallinnassa käytetään npm workspaces + Docker -yhdistelmää.
- Toteutuksessa on testausratkaisu REST-rajapinnalle (esim. Jest + Supertest tai Mocha + Chai-http).
- Erittäin hyvä dokumentaatio, mukana myös README ja screencast.
- Erittäin laadukkaat julkaisut.
Arviointiasteikko
0-5
Opiskelumuodot ja opetusmenetelmät
Opintojakson opetuksessa yhdistyvät luennot, kotiharjoitukset, projekti ja tentti. Luennoilla käsitellään fullstack - ohjelmoinnin keskeisiä käsitteitä ja periaatteita esimerkkien avulla. Viikoittaisissa kotiharjoituksissa opiskelijat tekevät ohjelmointitehtäviä ja harjoittelevat koodikatselmointia vertaisarvioinnin periaatteiden mukaisesti. Koodikatselmointi tukee laadukkaan ja luettavan koodin tuottamista sekä parantaa ongelmanratkaisutaitoja. Kurssi päättyy tenttiin, joka mittaa keskeisten periaatteiden ja käytäntöjen ymmärtämistä. Projektityön toteutus antaa opiskelijalle kokonaiskuvan fullstack - sovelluksen tuottamisesta ja julkaisusta.
Oppimateriaalit
Ensisijaisena oppimateriaalina luennot (ja näiden tallenteet).
Referenssit:
- Node.js Documentation: https://nodejs.org/en/docs
- Express.js Guide: https://expressjs.com/en/guide/
- MySQL Reference Manual: https://dev.mysql.com/doc/
- Docker Docs: https://docs.docker.com/
- Render.com Documentation: https://render.com/docs
Täydentävä kirjallisuus:
Node.js Design Patterns (3rd edition), Mario Casciaro & Luciano Mammino
Linkki: https://www.oreilly.com/library/view/nodejs-design-patterns/9781839214110/
Opiskelijan ajankäyttö ja kuormitus
Yhteensä 5 op * 27h = 135h
Jakautuminen esimerkiksi seuraavsti:
- Viikot 03 - 07 (tekniikan opettelu): 8–10 h / viikko
- Viikko 08 (vierasluento + projektin aloitus): 8 h
- Viikko 09 (itsenäinen viikko): 11–12 h
- Viikot 10–14 (projekti): 12–14 h / viikko
Sisällön jaksotus
Viikko 03: Node.js Database Connection
Viikko 04: Node.js Restful API using Express.js
Viikko 05: Node.js RESTful and Databases
Viikko 06: Connection Pool, CORS, Frontend Implementation
Viikko 07: Docker, Continuous Delivery (CD), Deploying to Render.com
Viikko 08: Vierasluennoitsija, Project Work Introduction
Viikko 09: Itsenäisen opiskelun viikko
Viikko 10: Projektityön toteutus,
Viikko 11: Projektityön toteutus, julkaisu 1
Viikko 12: Projektityön toteutus, julkaisu 2
Viikko 13: Projektityön toteutus
Viikko 14: Projektityön toteutus, julkaisu (3)
Toteutuksen valinnaiset suoritustavat
Ei valinnaisia suoritustapoja
Harjoittelu- ja työelämäyhteistyö
Tämä opintojakso on suunniteltu fullstack - perusteiden opetteluun, eikä se sisällä varsinaista työharjoittelua tai suoraa yhteistyötä työelämän kanssa. Kurssin sisältö kuitenkin heijastaa alan nykyvaatimuksia. Luennoissa ja kotiharjoituksissa keskitytään käytännönläheisiin ohjelmointitehtäviin, jotka kehittävät opiskelijoiden ongelmanratkaisutaitoja ja tarjoavat valmiuksia jatkokoulutukseen sekä työelämän haasteisiin. Opetuksessa painotetaan alan parhaita käytäntöjä ja työelämässä käytössä olevia ohjelmointikonsepteja, mikä tukee opiskelijoiden sujuvaa siirtymistä työelämään.
Kansainvälisyys
Tällä opintojaksolla ei ole käytössä erityisiä kansainvälisiä yhteistyökuvioita tai ulkomaan harjoittelumahdollisuuksia. Kurssin sisältö perustuu kuitenkin kansainvälisesti tunnustettuihin ohjelmointikäytäntöihin ja -standardeihin, mikä valmentaa opiskelijoita työympäristön vaatimuksiin. Opiskelijoita kannustetaan myös hyödyntämään kansainvälisiä resursseja ja verkostoja oman osaamisensa laajentamiseksi.
Lisätietoja opiskelijoille
Opintojakso edellyttää hyvää JavaScript - kielen hallintaa.