Selainpään ohjelmointikielen perusteetLaajuus (5 op)
Tunnus: 4A00HB46
Laajuus
5 op
Osaamistavoitteet
Opintojakson tavoitteena on varustaa opiskelijat syvällisellä ymmärryksellä selainpään ohjelmointikielestä, tarjoten vankan perustan tehokkaalle ohjelmointitaidolle ja pohjan modernien web-sovellusten kehittämiselle.
Opintojakson suoritettuaan opiskelija
• osaa luoda ja ylläpitää projektirakenteita, ymmärtäen projektien hallinnan merkityksen ohjelmistokehityksessä.
• hallitsee koodin laadunvarmistuksen periaatteet, osaten ottaa käyttöön ja hyödyntää työkaluja koodin virheiden tunnistamisessa ja tyylisääntöjen noudattamisessa.
• tuntee kielen perusteet, mukaan lukien syntaksin, muuttujat, tietotyypit ja perusrakenteet, vahvistaen perustaa laadukkaalle koodikirjoitukselle.
• kehittää valmiuksia olioiden ja funktioiden hyödyntämiseen, kapseloiden tietorakenteita ja toiminnallisuuksia tehokkaasti.
• ymmärtää ja soveltaa asynkronista ohjelmointia, halliten tapahtumapohjaisen ohjelmoinnin mallit ja asynkronisten toimintojen hallinnan.
• syventää ymmärrystään olio-ohjelmoinnin periaatteista, mukaan lukien olioiden, luokkien ja periytymisen käsitteet, soveltaen niitä käytännön ohjelmointitehtävissä.
• käsittelee moduuleja, edistäen koodin modularisointia ja jälleenkäytettävyyttä, mikä parantaa ohjelmiston ylläpidettävyyttä ja laajennettavuutta.
• analysoi ja soveltaa periytymisen ja prototyyppiketjun konsepteja, muodostaen vahvan pohjan olioiden välisten suhteiden ymmärtämiselle ja ominaisuuksien perimiselle ohjelmistokehityksessä.
Sisältö
Opintojakson sisältö keskittyy yleisiin ohjelmistokehityksen periaatteisiin ja käytäntöihin, jotka sisältävät:
• Projektien hallinta ja ylläpito
• Koodin laadun tarkistus ja standardien noudattaminen
• Ohjelmointikielen keskeiset rakenteet ja paradigmat
• Koodin modularisointi, uudelleenkäyttö ja ylläpidettävyys
• Asynkronisen ohjelmoinnin perusteet ja käytännöt
• Olio-ohjelmoinnin keskeiset konseptit ja suunnitteluperiaatteet
Esitietovaatimukset
Johdatus ohjelmointiin
Arviointikriteerit, tyydyttävä (1-2)
Opiskelija osaa käyttää perusteellisesti opetettavan ohjelmointikielen syntaksia ja rakenteita. Hän ymmärtää moduulien, olioiden ja funktioiden peruskäsitteet ja pystyy toteuttamaan yksinkertaisia asynkronisia toimintoja. Opiskelija osoittaa kykynsä perustason koodin laadunvarmistukseen ja projektin hallintaan.
Arviointikriteerit, hyvä (3-4)
Opiskelija hallitsee opetettavan ohjelmointikielen kehittyneet ominaisuudet ja ymmärtää syvällisemmin asynkronisen ohjelmoinnin periaatteet. Hän pystyy sujuvasti soveltamaan olio-ohjelmoinnin periaatteita ja modulaarista ohjelmointia, jolloin koodin uudelleenkäyttö ja ylläpidettävyys ovat tehokkaita. Opiskelija osoittaa kyvyn soveltaa koodin laadunvarmistusmenetelmiä monimutkaisissa ympäristöissä ja hallitsee projektien hallinnan vaativissa tilanteissa.
Arviointikriteerit, kiitettävä (5)
Opiskelija osoittaa syvällisen ymmärryksen opetettavan ohjelmointikielen taustalla olevista konsepteista ja periaatteista. Tämä ymmärrys mahdollistaa monimutkaisten ongelmien ratkaisemisen. Opiskelija soveltaa vaivattomasti erilaisia ohjelmointimalleja ja -tekniikoita, ja hallitsee koodin laadunvarmistuksen sekä projektien hallinnan korkeimmalla tasolla. Asynkronisen ohjelmoinnin ja modulaarisen suunnittelun syvällinen ymmärrys tekee opiskelijasta kykenevän toteuttamaan ja optimoimaan monimutkaisia sovelluksia.
Ilmoittautumisaika
09.06.2025 - 07.09.2025
Ajoitus
01.08.2025 - 31.12.2025
Laajuus
5 op
Toteutustapa
Lähiopetus
Yksikkö
Tietojenkäsittely
Toimipiste
TAMK Pääkampus
Opetuskielet
- Suomi
Koulutus
- Tietojenkäsittelyn tutkinto-ohjelma
Opettaja
- Jussi Pohjolainen
Vastuuhenkilö
Teemu Heinimäki
Ryhmät
-
24TIKOOT12024 Tietojenkäsittely, ohjelmistotuotannon opintosuunta, ryhmä 1
Tavoitteet (OJ)
Opintojakson tavoitteena on varustaa opiskelijat syvällisellä ymmärryksellä selainpään ohjelmointikielestä, tarjoten vankan perustan tehokkaalle ohjelmointitaidolle ja pohjan modernien web-sovellusten kehittämiselle.
Opintojakson suoritettuaan opiskelija
• osaa luoda ja ylläpitää projektirakenteita, ymmärtäen projektien hallinnan merkityksen ohjelmistokehityksessä.
• hallitsee koodin laadunvarmistuksen periaatteet, osaten ottaa käyttöön ja hyödyntää työkaluja koodin virheiden tunnistamisessa ja tyylisääntöjen noudattamisessa.
• tuntee kielen perusteet, mukaan lukien syntaksin, muuttujat, tietotyypit ja perusrakenteet, vahvistaen perustaa laadukkaalle koodikirjoitukselle.
• kehittää valmiuksia olioiden ja funktioiden hyödyntämiseen, kapseloiden tietorakenteita ja toiminnallisuuksia tehokkaasti.
• ymmärtää ja soveltaa asynkronista ohjelmointia, halliten tapahtumapohjaisen ohjelmoinnin mallit ja asynkronisten toimintojen hallinnan.
• syventää ymmärrystään olio-ohjelmoinnin periaatteista, mukaan lukien olioiden, luokkien ja periytymisen käsitteet, soveltaen niitä käytännön ohjelmointitehtävissä.
• käsittelee moduuleja, edistäen koodin modularisointia ja jälleenkäytettävyyttä, mikä parantaa ohjelmiston ylläpidettävyyttä ja laajennettavuutta.
• analysoi ja soveltaa periytymisen ja prototyyppiketjun konsepteja, muodostaen vahvan pohjan olioiden välisten suhteiden ymmärtämiselle ja ominaisuuksien perimiselle ohjelmistokehityksessä.
Sisältö (OJ)
Opintojakson sisältö keskittyy yleisiin ohjelmistokehityksen periaatteisiin ja käytäntöihin, jotka sisältävät:
• Projektien hallinta ja ylläpito
• Koodin laadun tarkistus ja standardien noudattaminen
• Ohjelmointikielen keskeiset rakenteet ja paradigmat
• Koodin modularisointi, uudelleenkäyttö ja ylläpidettävyys
• Asynkronisen ohjelmoinnin perusteet ja käytännöt
• Olio-ohjelmoinnin keskeiset konseptit ja suunnitteluperiaatteet
Esitietovaatimukset (OJ)
Johdatus ohjelmointiin
Arviointikriteerit, tyydyttävä (1-2) (OJ)
Opiskelija osaa käyttää perusteellisesti opetettavan ohjelmointikielen syntaksia ja rakenteita. Hän ymmärtää moduulien, olioiden ja funktioiden peruskäsitteet ja pystyy toteuttamaan yksinkertaisia asynkronisia toimintoja. Opiskelija osoittaa kykynsä perustason koodin laadunvarmistukseen ja projektin hallintaan.
Arviointikriteerit, hyvä (3-4) (OJ)
Opiskelija hallitsee opetettavan ohjelmointikielen kehittyneet ominaisuudet ja ymmärtää syvällisemmin asynkronisen ohjelmoinnin periaatteet. Hän pystyy sujuvasti soveltamaan olio-ohjelmoinnin periaatteita ja modulaarista ohjelmointia, jolloin koodin uudelleenkäyttö ja ylläpidettävyys ovat tehokkaita. Opiskelija osoittaa kyvyn soveltaa koodin laadunvarmistusmenetelmiä monimutkaisissa ympäristöissä ja hallitsee projektien hallinnan vaativissa tilanteissa.
Arviointikriteerit, kiitettävä (5) (OJ)
Opiskelija osoittaa syvällisen ymmärryksen opetettavan ohjelmointikielen taustalla olevista konsepteista ja periaatteista. Tämä ymmärrys mahdollistaa monimutkaisten ongelmien ratkaisemisen. Opiskelija soveltaa vaivattomasti erilaisia ohjelmointimalleja ja -tekniikoita, ja hallitsee koodin laadunvarmistuksen sekä projektien hallinnan korkeimmalla tasolla. Asynkronisen ohjelmoinnin ja modulaarisen suunnittelun syvällinen ymmärrys tekee opiskelijasta kykenevän toteuttamaan ja optimoimaan monimutkaisia sovelluksia.
Aika ja paikka
Ks. kalenteri
Tenttien ja uusintatenttien ajankohdat
Tentit pidetään viikoilla 43 - 48. Tentti suoritetaan exam.tuni.fi - palvelussa, josta opiskelija voi varata itselleen sopivan ajankohdan kyseiseltä ajanjaksolta.
Arviointimenetelmät ja arvioinnin perusteet
YLEISKUVAUS
Opintojakso sisältää
1️⃣ TENTTI
2️⃣ HARJOITUKSET
Opintojakson läpäisemiseksi opiskelijan tulee suorittaa vähintään 50 % harjoituksista, mikä itsessään antaa arvosanan 1.
Tentti tarjoaa mahdollisuuden nostaa arvosanaa asteikolla 1 - 5.
• Harjoitukset: Jos opiskelija suorittaa vähintään 50 % harjoituksista, hän saa tästä automaattisesti arvion 1
• Vapaavalinnainen tentti: Arvioidaan 1 - 5 ja muodostaa opintojakson kokonaisarvion.
⚠️ Mikäli opiskelija ei ole suorittanut vaadittua määrää harjoituksia, niin tenttiin on osallistuttava ja se on läpäistävä. Opiskelija voi siis osallistua suoraan tenttiin tekemättä harjoituksia tai jos opiskelija ei saa tarvittavaa harjoitusmäärää tehtyä.
1️⃣ TENTTI
• Alusta: Tentti suoritetaan exam.tuni.fi-palvelussa syyskauden lopussa.
• Materiaalit: Tentissä sinulla on pääsy JavaScript-kirjaan (PDF) lisämateriaalina: https://eloquentjavascript.net/Eloquent_JavaScript.pdf
• Työkalut tentissä: Visual Studio Code (VS Code), Node-kääntäjä
• Internet-yhteys: Tentissä ei ole käytettävissä internet-yhteyttä.
• Aika: 2 tuntia 55 minuuttia tai jos sinulla on terveydellisiä syitä, 3 tuntia 55 minuuttia.
• Kaikki tentit, mukaan lukien uusintatentit ovat suoritettava ajanjaksolla: viikko 43 - viikko 48. Jätä opettajalle viikko aikaa tenttisi tarkistamiseen.
• Jos et läpäise, voit suorittaa hylätyn tentin kahdesti uudelleen.
• Jos läpäiset, voit yrittää parantaa arvosanaasi kerran.
Lisäpistejärjestelmä:
• Lisäpisteitä myönnetään sen perusteella, kuinka suuren osuuden harjoituksista olet suorittanut ennen tenttiä. Näitä pisteitä myönnetään vain, jos osallistut lähiopetukseen.
• Harjoitusten suoritusprosentti [70%, 80%[: +1 piste
• Harjoitusten suoritusprosentti [80%, 90%[: +2 pistettä
• Harjoitusten suoritusprosentti [90%, 100%]: +3 pistettä
Tentin pisteytys:
• Arvosana 1 edellyttää vähintään 9,6 pistettä (40 %).
• Arvosana 2 edellyttää vähintään 14,4 pistettä (60 %).
• Arvosana 3 edellyttää vähintään 16,8 pistettä (70 %).
• Arvosana 4 edellyttää vähintään 19,2 pistettä (80 %).
• Arvosana 5 edellyttää vähintään 21,6 pistettä (90 %).
Tentin maksimipistemäärä on 24 pistettä.
⚠️ Lisäpisteet eivät vaikuta tentin läpäisyyn, joten tentistä on saatava vähintään 9,6 pistettä. Sen jälkeen lisäpisteet lisätään saatuun pistemäärään.
2️⃣ HARJOITUKSET
LÄSNÄOLO JA TÄSMÄLLISYYS
✅ Varmista, että saavut lähiopetukseen ajoissa.
✅ Lähiopetuksen ensimmäisten 15 minuutin aikana (esim. 12.15–12.30 tai 8.45–9.00):
1. Kirjaa fyysinen läsnäolosi annettuun Google Sheets -taulukkoon
2. Merkitse myös harjoituksesi Google Sheets -taulukkoon
3. Laita ratkaisusi GitHub repoon, mikäli et ole vielä tehnyt niin
⚠️ Google Sheets lukitaan 15 minuutin jälkeen (12:30 tai 9:00) ja koodikatselmointi alkaa. Myöhästyneet eivät voi merkitä läsnäoloaan, eivätkä he saa pisteitä. Opettaja saattaa satunnaisesti valita opiskelijoita keskustelemaan ratkaisuistaan ja tämä satunnaisvalinta tehdään niiden opiskelijoiden kesken jotka ovat ajoissa paikalla ja itsensä Google Sheetsiin merkinneet.
⚠️ Huomautus: Merkitse itsesi läsnäolevaksi vain, jos olet fyysisesti paikalla. Jos merkintä tehdään etänä vaikka ei olla paikalla, tämä tulkitaan vilpilliseksi toiminnaksi.
KOODIKATSELMOINTI
✅ Valmistaudu esittelemään ja selittämään ratkaisusi luokalle.
⚠️ Jos opiskelija ei pysty selittämään koodinsa toimintaa, se viittaa siihen, ettei hän ole itse tuottanut sitä tai ymmärtänyt sen toimintaperiaatteita. Tämä voidaan tulkita vilpilliseksi toiminnaksi.
TYÖN AITOUS
✅ Kaikkien harjoitusten tulee olla omaa alkuperäistä työtäsi.
⚠️ Voit pyytää apua muilta opiskelijoilta tai tekoälyltä, mutta kopiointi ja liittäminen ovat ehdottomasti kiellettyjä.
⚠️ TAMK edellyttää opiskelijoiden käyttävän tekoälypohjaisia sovelluksia vastuullisesti ja eettisesti opinnoissaan. Esimerkiksi mainitse palautetussa tehtävässä tekoälyn käytöstä ja kuvaa, miten sitä on käytetty. Vilpillistä on esimerkiksi esittää tekoälyn tuottama teksti, kuva tai muu tuotos omanaan ( https://intra.tuni.fi/opetus/opintohallinnon-kaytannot/opiskelun-etiikka-1/tekoalysovellusten-kaytto )
⚠️ Opettaja voi käyttää plagioinnin tunnistusohjelmaa. Havaitut plagioidut harjoitukset voidaan katsoa vilpilliseksi toiminnaksi.
ℹ️ Suositus: älä käytä tekoälyä. Kun perusteet ovat opittu, tekoäly on tämän jälkeen oiva väline koodin generoimiseen. Ohjelmoinnin alkeiden opiskelussa tekoäly saattaa auttaa "liikaa" ja tuottaa liian valmiita vastauksia.
POISSAOLOT
ℹ️ Jos sinulla on hyväksyttävä syy (esim. lääkärikäynti) jättää lähiopetus väliin, ilmoita siitä opettajalle ennen lähiopetuksen alkua - mieluiten Slackin kautta. Tämä mahdollistaa harjoituksen palauttamisen etänä.
ℹ️ Jos myöhästyt lähiopetuksesta odottamattoman ja hyväksyttävän syyn vuoksi (esim. rengasrikko tai muu yllättävä este), ilmoita asiasta välittömästi, kun tilanne on tiedossa. Tämä voi mahdollistaa harjoituksen palauttamisen etänä.
⚠️ Lähiopetuksen jälkeen tehtyjä ilmoituksia ei pääsääntöisesti hyväksytä.
⚠️ Älä välitä Slackin kautta kuitenkaan arkaluontoisia asioita, esim sairauslomatodistuksia tms, välitä nämä sähköpostitse (tietoturva).
⚠️ Lomamatkat ja vastaavat henkilökohtaiset menot eivät ole hyväksyttäviä syitä poissaoloon. Lähiopetukseen tulee suhtautua samalla vakavuudella kuin työssäkäyntiin – poissaolot ovat sallittuja ainoastaan perustelluista ja painavista syistä.
Arviointiasteikko
0-5
Opiskelumuodot ja opetusmenetelmät
Opintojakson opetuksessa yhdistyvät luennot, kotiharjoitukset ja tentti. Luennoilla käsitellään 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 ohjelmointitenttiin, joka mittaa keskeisten periaatteiden ja käytäntöjen ymmärtämistä.
Oppimateriaalit
Pääasiallisena oppimateriaalina käytetään luennoilla ja harjoituksissa jaettavia materiaaleja.
Kyle Simpson, You Don't Know JS Yet:
https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/README.md
Marjin Haverbeke, Eqloquent JavaScript:
https://eloquentjavascript.net/Eloquent_JavaScript.pdf
Opiskelijan ajankäyttö ja kuormitus
Opintojakso vaatii opiskelijalta keskimäärin 135 tunnin työpanoksen (5 op). Opintojakso alkaa viikolla 36 ja päättyy viikolla 43, kesto on kahdeksan työviikkoa. Opiskelijan laskennallinen keskimääräinen viikoittainen työmäärä on noin 17 tuntia.
Sisällön jaksotus
Viikko 36 - JavaScriptin perusteet
- Kielen rakenne ja ohjelmoinnin perusperiaatteet (muuttujat, funktiot, loogiset rakenteet)
- NPM Projektin rakentaminen
Viikko 37 - Funktionaalinen ohjelmointi
- Funktiot ensimmäisen luokan kansalaisina
- map, filter, reduce ja korkeamman asteen funktiot
- Immutabiliteetti ja selkeä koodirakenne
Viikko 38 - Asynkroninen ohjelmointi ja tapahtumien käsittely
- Tapahtumapohjaisuus ja ei-blokkaava malli
- Callbackit ja callback-helvetti
- Lupaukset (Promise) ja virheiden käsittely .then() / .catch()
- async / await -syntaksi käytännössä
Viikko 39 - "this"-avainsana eri konteksteissa
- Mikä on "this" ja miten se määräytyy?
- "this" funktioissa, olioissa, tapahtumankäsittelijöissä
- Ero nuolifunktion ja perinteisen funktion välillä
- bind, call ja apply
Viikko 40 - Prototyyppiperintä, rakenteiden hajottaminen ja spread/rest-operaattorit
- Objektien ja taulukoiden hajottaminen (destructuring)
- Spread (...) ja rest (...) käytännössä
- JavaScriptin periytymismalli: prototyyppi vs. luokat
- Objektien luonti: Object.create, konstruktorifunktiot
- class, constructor, extends, super
- Ominaisuuksien ja metodien periyttäminen
Viikko 41 - Kohti Reactia: komponenttiajattelu ja yhteenveto
- Funktionaalinen ajattelu Reactin näkökulmasta
- Miten kurssin teemat tukevat React-komponenttien rakentamista
- JSX-valmistautuminen: muuttujien, tilojen ja funktioiden käyttö käyttöliittymässä
- Yhteenveto: kurssin keskeiset opit
Viikko 42: Tenttiin opiskelua
Viikko 43: Tentit
Toteutuksen valinnaiset suoritustavat
Ei valinnaisia suoritustapoja.
Harjoittelu- ja työelämäyhteistyö
Tämä opintojakso on suunniteltu ohjelmoinnin 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.
Ilmoittautumisaika
09.06.2025 - 07.09.2025
Ajoitus
01.08.2025 - 31.12.2025
Laajuus
5 op
Toteutustapa
Lähiopetus
Yksikkö
Tietojenkäsittely
Toimipiste
TAMK Pääkampus
Opetuskielet
- Suomi
Koulutus
- Tietojenkäsittelyn tutkinto-ohjelma
Opettaja
- Jussi Pohjolainen
Vastuuhenkilö
Jussi Pohjolainen
Ryhmät
-
24TIKOOT22024 Tietojenkäsittely, ohjelmistotuotannon opintosuunta, ryhmä 2
Tavoitteet (OJ)
Opintojakson tavoitteena on varustaa opiskelijat syvällisellä ymmärryksellä selainpään ohjelmointikielestä, tarjoten vankan perustan tehokkaalle ohjelmointitaidolle ja pohjan modernien web-sovellusten kehittämiselle.
Opintojakson suoritettuaan opiskelija
• osaa luoda ja ylläpitää projektirakenteita, ymmärtäen projektien hallinnan merkityksen ohjelmistokehityksessä.
• hallitsee koodin laadunvarmistuksen periaatteet, osaten ottaa käyttöön ja hyödyntää työkaluja koodin virheiden tunnistamisessa ja tyylisääntöjen noudattamisessa.
• tuntee kielen perusteet, mukaan lukien syntaksin, muuttujat, tietotyypit ja perusrakenteet, vahvistaen perustaa laadukkaalle koodikirjoitukselle.
• kehittää valmiuksia olioiden ja funktioiden hyödyntämiseen, kapseloiden tietorakenteita ja toiminnallisuuksia tehokkaasti.
• ymmärtää ja soveltaa asynkronista ohjelmointia, halliten tapahtumapohjaisen ohjelmoinnin mallit ja asynkronisten toimintojen hallinnan.
• syventää ymmärrystään olio-ohjelmoinnin periaatteista, mukaan lukien olioiden, luokkien ja periytymisen käsitteet, soveltaen niitä käytännön ohjelmointitehtävissä.
• käsittelee moduuleja, edistäen koodin modularisointia ja jälleenkäytettävyyttä, mikä parantaa ohjelmiston ylläpidettävyyttä ja laajennettavuutta.
• analysoi ja soveltaa periytymisen ja prototyyppiketjun konsepteja, muodostaen vahvan pohjan olioiden välisten suhteiden ymmärtämiselle ja ominaisuuksien perimiselle ohjelmistokehityksessä.
Sisältö (OJ)
Opintojakson sisältö keskittyy yleisiin ohjelmistokehityksen periaatteisiin ja käytäntöihin, jotka sisältävät:
• Projektien hallinta ja ylläpito
• Koodin laadun tarkistus ja standardien noudattaminen
• Ohjelmointikielen keskeiset rakenteet ja paradigmat
• Koodin modularisointi, uudelleenkäyttö ja ylläpidettävyys
• Asynkronisen ohjelmoinnin perusteet ja käytännöt
• Olio-ohjelmoinnin keskeiset konseptit ja suunnitteluperiaatteet
Esitietovaatimukset (OJ)
Johdatus ohjelmointiin
Arviointikriteerit, tyydyttävä (1-2) (OJ)
Opiskelija osaa käyttää perusteellisesti opetettavan ohjelmointikielen syntaksia ja rakenteita. Hän ymmärtää moduulien, olioiden ja funktioiden peruskäsitteet ja pystyy toteuttamaan yksinkertaisia asynkronisia toimintoja. Opiskelija osoittaa kykynsä perustason koodin laadunvarmistukseen ja projektin hallintaan.
Arviointikriteerit, hyvä (3-4) (OJ)
Opiskelija hallitsee opetettavan ohjelmointikielen kehittyneet ominaisuudet ja ymmärtää syvällisemmin asynkronisen ohjelmoinnin periaatteet. Hän pystyy sujuvasti soveltamaan olio-ohjelmoinnin periaatteita ja modulaarista ohjelmointia, jolloin koodin uudelleenkäyttö ja ylläpidettävyys ovat tehokkaita. Opiskelija osoittaa kyvyn soveltaa koodin laadunvarmistusmenetelmiä monimutkaisissa ympäristöissä ja hallitsee projektien hallinnan vaativissa tilanteissa.
Arviointikriteerit, kiitettävä (5) (OJ)
Opiskelija osoittaa syvällisen ymmärryksen opetettavan ohjelmointikielen taustalla olevista konsepteista ja periaatteista. Tämä ymmärrys mahdollistaa monimutkaisten ongelmien ratkaisemisen. Opiskelija soveltaa vaivattomasti erilaisia ohjelmointimalleja ja -tekniikoita, ja hallitsee koodin laadunvarmistuksen sekä projektien hallinnan korkeimmalla tasolla. Asynkronisen ohjelmoinnin ja modulaarisen suunnittelun syvällinen ymmärrys tekee opiskelijasta kykenevän toteuttamaan ja optimoimaan monimutkaisia sovelluksia.
Aika ja paikka
Ks. kalenteri
Tenttien ja uusintatenttien ajankohdat
Tentit pidetään viikoilla 43 - 48. Tentti suoritetaan exam.tuni.fi - palvelussa, josta opiskelija voi varata itselleen sopivan ajankohdan kyseiseltä ajanjaksolta.
Arviointimenetelmät ja arvioinnin perusteet
YLEISKUVAUS
Opintojakso sisältää
1️⃣ TENTTI
2️⃣ HARJOITUKSET
Opintojakson läpäisemiseksi opiskelijan tulee suorittaa vähintään 50 % harjoituksista, mikä itsessään antaa arvosanan 1.
Tentti tarjoaa mahdollisuuden nostaa arvosanaa asteikolla 1 - 5.
• Harjoitukset: Jos opiskelija suorittaa vähintään 50 % harjoituksista, hän saa tästä automaattisesti arvion 1
• Vapaavalinnainen tentti: Arvioidaan 1 - 5 ja muodostaa opintojakson kokonaisarvion.
⚠️ Mikäli opiskelija ei ole suorittanut vaadittua määrää harjoituksia, niin tenttiin on osallistuttava ja se on läpäistävä. Opiskelija voi siis osallistua suoraan tenttiin tekemättä harjoituksia tai jos opiskelija ei saa tarvittavaa harjoitusmäärää tehtyä.
1️⃣ TENTTI
• Alusta: Tentti suoritetaan exam.tuni.fi-palvelussa syyskauden lopussa.
• Materiaalit: Tentissä sinulla on pääsy JavaScript-kirjaan (PDF) lisämateriaalina: https://eloquentjavascript.net/Eloquent_JavaScript.pdf
• Työkalut tentissä: Visual Studio Code (VS Code), Node-kääntäjä
• Internet-yhteys: Tentissä ei ole käytettävissä internet-yhteyttä.
• Aika: 2 tuntia 55 minuuttia tai jos sinulla on terveydellisiä syitä, 3 tuntia 55 minuuttia.
• Kaikki tentit, mukaan lukien uusintatentit ovat suoritettava ajanjaksolla: viikko 43 - viikko 48. Jätä opettajalle viikko aikaa tenttisi tarkistamiseen.
• Jos et läpäise, voit suorittaa hylätyn tentin kahdesti uudelleen.
• Jos läpäiset, voit yrittää parantaa arvosanaasi kerran.
Lisäpistejärjestelmä:
• Lisäpisteitä myönnetään sen perusteella, kuinka suuren osuuden harjoituksista olet suorittanut ennen tenttiä. Näitä pisteitä myönnetään vain, jos osallistut lähiopetukseen.
• Harjoitusten suoritusprosentti [70%, 80%[: +1 piste
• Harjoitusten suoritusprosentti [80%, 90%[: +2 pistettä
• Harjoitusten suoritusprosentti [90%, 100%]: +3 pistettä
Tentin pisteytys:
• Arvosana 1 edellyttää vähintään 9,6 pistettä (40 %).
• Arvosana 2 edellyttää vähintään 14,4 pistettä (60 %).
• Arvosana 3 edellyttää vähintään 16,8 pistettä (70 %).
• Arvosana 4 edellyttää vähintään 19,2 pistettä (80 %).
• Arvosana 5 edellyttää vähintään 21,6 pistettä (90 %).
Tentin maksimipistemäärä on 24 pistettä.
⚠️ Lisäpisteet eivät vaikuta tentin läpäisyyn, joten tentistä on saatava vähintään 9,6 pistettä. Sen jälkeen lisäpisteet lisätään saatuun pistemäärään.
2️⃣ HARJOITUKSET
LÄSNÄOLO JA TÄSMÄLLISYYS
✅ Varmista, että saavut lähiopetukseen ajoissa.
✅ Lähiopetuksen ensimmäisten 15 minuutin aikana (esim. 12.15–12.30 tai 8.45–9.00):
1. Kirjaa fyysinen läsnäolosi annettuun Google Sheets -taulukkoon
2. Merkitse myös harjoituksesi Google Sheets -taulukkoon
3. Laita ratkaisusi GitHub repoon, mikäli et ole vielä tehnyt niin
⚠️ Google Sheets lukitaan 15 minuutin jälkeen (12:30 tai 9:00) ja koodikatselmointi alkaa. Myöhästyneet eivät voi merkitä läsnäoloaan, eivätkä he saa pisteitä. Opettaja saattaa satunnaisesti valita opiskelijoita keskustelemaan ratkaisuistaan ja tämä satunnaisvalinta tehdään niiden opiskelijoiden kesken jotka ovat ajoissa paikalla ja itsensä Google Sheetsiin merkinneet.
⚠️ Huomautus: Merkitse itsesi läsnäolevaksi vain, jos olet fyysisesti paikalla. Jos merkintä tehdään etänä vaikka ei olla paikalla, tämä tulkitaan vilpilliseksi toiminnaksi.
KOODIKATSELMOINTI
✅ Valmistaudu esittelemään ja selittämään ratkaisusi luokalle.
⚠️ Jos opiskelija ei pysty selittämään koodinsa toimintaa, se viittaa siihen, ettei hän ole itse tuottanut sitä tai ymmärtänyt sen toimintaperiaatteita. Tämä voidaan tulkita vilpilliseksi toiminnaksi.
TYÖN AITOUS
✅ Kaikkien harjoitusten tulee olla omaa alkuperäistä työtäsi.
⚠️ Voit pyytää apua muilta opiskelijoilta tai tekoälyltä, mutta kopiointi ja liittäminen ovat ehdottomasti kiellettyjä.
⚠️ TAMK edellyttää opiskelijoiden käyttävän tekoälypohjaisia sovelluksia vastuullisesti ja eettisesti opinnoissaan. Esimerkiksi mainitse palautetussa tehtävässä tekoälyn käytöstä ja kuvaa, miten sitä on käytetty. Vilpillistä on esimerkiksi esittää tekoälyn tuottama teksti, kuva tai muu tuotos omanaan ( https://intra.tuni.fi/opetus/opintohallinnon-kaytannot/opiskelun-etiikka-1/tekoalysovellusten-kaytto )
⚠️ Opettaja voi käyttää plagioinnin tunnistusohjelmaa. Havaitut plagioidut harjoitukset voidaan katsoa vilpilliseksi toiminnaksi.
ℹ️ Suositus: älä käytä tekoälyä. Kun perusteet ovat opittu, tekoäly on tämän jälkeen oiva väline koodin generoimiseen. Ohjelmoinnin alkeiden opiskelussa tekoäly saattaa auttaa "liikaa" ja tuottaa liian valmiita vastauksia.
POISSAOLOT
ℹ️ Jos sinulla on hyväksyttävä syy (esim. lääkärikäynti) jättää lähiopetus väliin, ilmoita siitä opettajalle ennen lähiopetuksen alkua - mieluiten Slackin kautta. Tämä mahdollistaa harjoituksen palauttamisen etänä.
ℹ️ Jos myöhästyt lähiopetuksesta odottamattoman ja hyväksyttävän syyn vuoksi (esim. rengasrikko tai muu yllättävä este), ilmoita asiasta välittömästi, kun tilanne on tiedossa. Tämä voi mahdollistaa harjoituksen palauttamisen etänä.
⚠️ Lähiopetuksen jälkeen tehtyjä ilmoituksia ei pääsääntöisesti hyväksytä.
⚠️ Älä välitä Slackin kautta kuitenkaan arkaluontoisia asioita, esim sairauslomatodistuksia tms, välitä nämä sähköpostitse (tietoturva).
⚠️ Lomamatkat ja vastaavat henkilökohtaiset menot eivät ole hyväksyttäviä syitä poissaoloon. Lähiopetukseen tulee suhtautua samalla vakavuudella kuin työssäkäyntiin – poissaolot ovat sallittuja ainoastaan perustelluista ja painavista syistä.
Arviointiasteikko
0-5
Opiskelumuodot ja opetusmenetelmät
Opintojakson opetuksessa yhdistyvät luennot, kotiharjoitukset ja tentti. Luennoilla käsitellään 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 ohjelmointitenttiin, joka mittaa keskeisten periaatteiden ja käytäntöjen ymmärtämistä.
Oppimateriaalit
Pääasiallisena oppimateriaalina käytetään luennoilla ja harjoituksissa jaettavia materiaaleja.
Kyle Simpson, You Don't Know JS Yet:
https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/README.md
Marjin Haverbeke, Eqloquent JavaScript:
https://eloquentjavascript.net/Eloquent_JavaScript.pdf
Opiskelijan ajankäyttö ja kuormitus
Opintojakso vaatii opiskelijalta keskimäärin 135 tunnin työpanoksen (5 op). Opintojakso alkaa viikolla 36 ja päättyy viikolla 43, kesto on kahdeksan työviikkoa. Opiskelijan laskennallinen keskimääräinen viikoittainen työmäärä on noin 17 tuntia.
Sisällön jaksotus
Viikko 36 - JavaScriptin perusteet
- Kielen rakenne ja ohjelmoinnin perusperiaatteet (muuttujat, funktiot, loogiset rakenteet)
- NPM Projektin rakentaminen
Viikko 37 - Funktionaalinen ohjelmointi
- Funktiot ensimmäisen luokan kansalaisina
- map, filter, reduce ja korkeamman asteen funktiot
- Immutabiliteetti ja selkeä koodirakenne
Viikko 38 - Asynkroninen ohjelmointi ja tapahtumien käsittely
- Tapahtumapohjaisuus ja ei-blokkaava malli
- Callbackit ja callback-helvetti
- Lupaukset (Promise) ja virheiden käsittely .then() / .catch()
- async / await -syntaksi käytännössä
Viikko 39 - "this"-avainsana eri konteksteissa
- Mikä on "this" ja miten se määräytyy?
- "this" funktioissa, olioissa, tapahtumankäsittelijöissä
- Ero nuolifunktion ja perinteisen funktion välillä
- bind, call ja apply
Viikko 40 - Prototyyppiperintä, rakenteiden hajottaminen ja spread/rest-operaattorit
- Objektien ja taulukoiden hajottaminen (destructuring)
- Spread (...) ja rest (...) käytännössä
- JavaScriptin periytymismalli: prototyyppi vs. luokat
- Objektien luonti: Object.create, konstruktorifunktiot
- class, constructor, extends, super
- Ominaisuuksien ja metodien periyttäminen
Viikko 41 - Kohti Reactia: komponenttiajattelu ja yhteenveto
- Funktionaalinen ajattelu Reactin näkökulmasta
- Miten kurssin teemat tukevat React-komponenttien rakentamista
- JSX-valmistautuminen: muuttujien, tilojen ja funktioiden käyttö käyttöliittymässä
- Yhteenveto: kurssin keskeiset opit
Viikko 42: Tenttiin opiskelua
Viikko 43: Tentit
Toteutuksen valinnaiset suoritustavat
Ei valinnaisia suoritustapoja.
Harjoittelu- ja työelämäyhteistyö
Tämä opintojakso on suunniteltu ohjelmoinnin 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.