Fundamentals of Client-Side Programming Language (5 cr)
Code: 4A00HB46-3001
General information
- Enrolment period
- 04.06.2025 - 07.09.2025
- Registration for the implementation has begun.
- Timing
- 01.08.2025 - 31.12.2025
- The implementation has not yet started.
- Credits
- 5 cr
- Mode of delivery
- Contact learning
- Unit
- Business Information Systems
- Campus
- TAMK Main Campus
- Teaching languages
- Finnish
- Degree programmes
- Degree Programme in Business Information Systems
Objectives (course unit)
The aim of the course is to equip students with a profound understanding of a front-end programming language, providing a solid foundation for effective programming skills and the development of modern web applications.
Upon completing the course, the student will be able to:
• Create and maintain project structures, understanding the significance of project management in software development.
• Master the principles of code quality assurance, being able to implement and utilize tools for identifying code errors and adhering to style guidelines.
• Understand the basics of the language, including syntax, variables, data types, and basic structures, reinforcing the foundation for quality code writing.
• Develop skills in utilizing objects and functions, effectively encapsulating data structures and functionalities.
• Understand and apply asynchronous programming, mastering event-driven programming paradigms and the management of asynchronous operations.
• Deepen understanding of object-oriented programming principles, including concepts of objects, classes, and inheritance, applying them in practical programming tasks.
• Handle modules, promoting code modularization and reusability, enhancing software maintainability and scalability.
• Analyze and apply concepts of inheritance and prototype chain, forming a strong foundation for understanding relationships between objects and inheritance of properties in software development.
Content (course unit)
The course content focuses on general principles and practices of software development, which include:
• Project management and maintenance
• Code quality checking and adherence to standards
• Key structures and paradigms of the programming language
• Code modularization, reusability, and maintainability
• Fundamentals and practices of asynchronous programming
• Key concepts of object-oriented programming and design principles
Prerequisites (course unit)
Introduction to Programming
Assessment criteria, satisfactory (1-2) (course unit)
The student can thoroughly use the syntax and structures of the programming language taught. They understand the basic concepts of modules, objects, and functions, and can implement simple asynchronous operations. The student demonstrates their ability in basic code quality assurance and project management.
Assessment criteria, good (3-4) (course unit)
The student masters the advanced features of the programming language taught and has a deeper understanding of the principles of asynchronous programming. They can proficiently apply the principles of object-oriented programming and modular programming, ensuring efficient code reuse and maintainability. The student demonstrates the ability to apply code quality assurance methods in complex environments and manages projects effectively in demanding situations.
Assessment criteria, excellent (5) (course unit)
The student demonstrates a profound understanding of the concepts and principles underlying the programming language being taught. This understanding enables the student to solve complex problems effortlessly. They adeptly apply various programming paradigms and techniques and master code quality assurance and project management at the highest level. A deep understanding of asynchronous programming and modular design empowers the student to implement and optimize complex applications.
Location and time
Ks. kalenteri
Exam schedules
Tentit pidetään viikoilla 43 - 48. Tentti suoritetaan exam.tuni.fi - palvelussa, josta opiskelija voi varata itselleen sopivan ajankohdan kyseiseltä ajanjaksolta.
Assessment methods and criteria
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
Ks ohjeet: https://github.com/pohjus/common-course-assets/blob/main/exercise-points-guidelines.md
Assessment scale
0-5
Teaching methods
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ä.
Learning materials
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
Student workload
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.
Content scheduling
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
Completion alternatives
Ei valinnaisia suoritustapoja.
Practical training and working life cooperation
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.
International connections
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.