
CT60A4160 Ohjelmistotestauksen periaatteet - Monimuoto-opetus, suomeksi 2.9.2024-20.10.2024
Ohjelmistotestauksen tekniikat, tasot, automatisointi, työkalut, toimiminen testaustiimissä testaajana.
- Responsible teacher: Erno Vanhala
- Teacher: Ilpo Kainulainen
- Teacher: Oliver Kuosmanen
- Teacher: Eero Suomalainen

CT60A4160 Fundamentals of Software Testing - Blended teaching, in English, Lahti 2.9.2024-20.10.2024
Ohjelmistotestauksen tekniikat, tasot, automatisointi, työkalut, toimiminen testaustiimissä testaajana.
- Responsible teacher: Azeem Akbar
- Teacher: Saad Farooq

CT60A4002 Software Engineering - Contact teaching, in English, Lahti 2.9.2024-15.12.2024
Johdanto, ohjelmistontuotannon rooli erilaisten organisaatioiden toiminnassa, ohjelmistotuotantoprosessi, vaatimusmäärittely, mallinnus, UML, arkkitehtuurit, prosessin kehittäminen, projektinhallinta, GDPR, etiikka.
- Responsible teacher: Micheal Tuape
- Teacher: Jussi Kasurinen
- Teacher: Andrey Saltan

CT60A4002 Ohjelmistotuotanto - Monimuoto-opetus, suomeksi 2.9.2024-15.12.2024
Johdanto, ohjelmistontuotannon rooli erilaisten organisaatioiden toiminnassa, ohjelmistotuotantoprosessi, vaatimusmäärittely, mallinnus, UML, arkkitehtuurit, prosessin kehittäminen, projektinhallinta, GDPR, etiikka.
- Responsible teacher: Jussi Kasurinen
- Teacher: Ville Felin
- Teacher: Ville Felin
- Teacher: Oskari Lehtonen
- Teacher: Oskari M. Lehtonen
- Teacher: François Pakkanen
- Teacher: Francois Pakkanen

CT60A2412 Olio-ohjelmointi - Monimuoto-opetus, suomeksi 6.1.2025-20.4.2025
Oliopohjaisuus, luokat, periytyminen, luokkamallintamisen perusteet, Javan periaatteet, lauseet ja perustietorakenteet, abstraktit tietotyypit, poikkeukset, graafinen käyttöliittymä.
- Responsible teacher: Erno Vanhala
- Teacher: Ilpo Kainulainen
- Teacher: Santeri Kainulainen
- Teacher: Roope Luukkainen
- Teacher: Joona Nykänen
- Teacher: Elias Syyrilä

CT60A2412 Object-Oriented Programming - Blended teaching, in English, Lahti & Online 6.1.2025-20.4.2025
Oliopohjaisuus, luokat, periytyminen, luokkamallintamisen perusteet, Javan periaatteet, lauseet ja perustietorakenteet, abstraktit tietotyypit, poikkeukset, graafinen käyttöliittymä.
- Responsible teacher: Janne Parkkila
- Teacher: Erno Vanhala

CT60A0250 Fundamentals of Programming for international programs - Blended teaching 2.9.2024-15.12.2024
The topics of the course include but are not limited to:
Week 1: Python interpreter, basic datatypes (int, float, string)
Week 2: More on strings and printing
Week 3: Boolean values and conditional structures (if - then - else)
Week 4: Loops
Week 5: Functions
Week 6: Objects and Lists
Week 7: Files
Week 8: Errors and exception handlin + project work starts
Week 9: Modules
Week 10: Dictionaries and Json, writing own modules
Week 11: Sets, tuples, installing packages with pip
Week 12: Recursive programs and algorithm design
Week 13: User Interfaces
Week 14: Last lecture + self-service exam opens
- Responsible teacher: Jouni Järvinen
- Responsible teacher: Janne Parkkila
- Teacher: Ilpo Kainulainen
- Teacher: Quan Nguyen
- Teacher: Quan Nguyen

CT60A0203 Ohjelmoinnin perusteet - Monimuoto-opetus 2.9.2024-15.12.2024
Ohjelmoinnin perusteet: Ohjelmoinnin taustaa, historiaa, käsitteitä; käyttäjän tarve ja ohjelma; kirjastot ja uudelleenkäytön hyötyjä sekä ongelmia; laadunvarmistus, testaaminen; data-analytiikka ohjelmoijan näkökulmasta; ohjelmointityylit; ohjelmien tehokkuus, algoritmi, pseudokoodi, rekursio, kääntäjä ja tulkki; tiedon esitysmuodot, ASCII ja muut merkkitaulukot, kantaluvut ja niiden muunnokset; käyttöliittymät, dokumentointi, kuvaustekniikat, graafinen ja komentorivikäyttöliittymä.
Python-ohjelmoinnin perusteet: Syöttö, tulostus ml. muotoiltu tulostus, tietotyypit, muuttujat, muuttujien roolit, tyyppimuunnokset, laskenta, merkkijonot; valintarakenne, ehdollinen koodi, haarautuminen, koodilohko, loogiset operaattorit, valikkopohjainen ohjelma; toistorakenteet, alkuehtoinen ja askeltava toisto; ohjelman rakenne, aliohjelmien määrittely ja kutsuminen, tiedonvälitys ohjelmien välillä, nimiavaruudet; tiedostonkäsittely, jäsenmuuttujat ja -funktiot; rakenteiset tietorakenteet, lista, luokka, olio, sanakirja, tuple; kirjastot; poikkeukset, virheet, debuggaus.
- Responsible teacher: Uolevi Nikula
- Teacher: Ilpo Kainulainen
- Teacher: Aku Kauria
- Teacher: Roope Luukkainen
- Teacher: Emma Niemenmaa
- Teacher: Joona Nykänen
- Teacher: Rami Saarivuori
- Teacher: Nadia Sina
- Teacher: Elias Syyrilä
- Teacher: Demo Teacher1
- Teacher: Demo Teacher2
- Teacher: Demo Teacher3
- Teacher: Demo Teacher4
- Teacher: Demo Teacher5
- Teacher: Demo Teacher6
- Teacher: Demo Teacher7
- Teacher: Demo Teacher8
- Teacher: Erno Vanhala

CT30A8922 User Experience Design - Blended teaching 6.1.2025-20.4.2025
The course will cover the following topics. 1. Design theories, principles and methods: what are the different ways to approach a design task? What methods can be used?2. User experience in design practices. How can we design for a better user experience?3. Co-design. How and why should we involve different stakeholders in the design process?4. Ideation. What tools and techniques can we use to help understand a problem?5. Prototyping. What are the different stages of prototyping and what can we find out from different types of prototype?6. End-user evaluation. What evaluation techniques should we use with end usersto get feedback on design ideas?7. Expert evaluation. How can design experts contribute to evaluation of prototypes?8. Usability studies and usability techniques. How can we conduct studies that determine the usability of a new product? Can people use it as planned? Do they want to?In groups, students are asked to develop and validate a design for a new software product or service. In each session, students will learn and apply methods to their design and iteratively improve and develop their design to a working prototype for usability testing. The course focuses on 'beyond the desktop' and non screen-based interfaces and prototyping with physical materials may be part of the group work.
- Responsible teacher: Annika Wolff
- Teacher: Tamara Ahmed
- Teacher: Ajesh Kumar

CT30A8912 Software and system architectures - Online teaching 6.1.2025-20.4.2025
The course centers around software architecture design and meeting the needs of the stakeholders of the system. The contents include basics of software and systems architecture, identifying architecturally significant requirements, designing software architecture with views, and evaluating software architectures. In addition, wider concepts of enterprise architecture and integration are introduced to put architectures in their context. The course includes a large practical design work that goes through these concepts.
- Responsible teacher: Kari Smolander
- Teacher: Stepan Bakhaev
- Teacher: Roshan Devullapalli
- Teacher: Eerika Peltonen

CT30A3401 Distributed Systems - Blended teaching 6.1.2025-20.4.2025
The course introduces the concepts of distributed systems including (but not limited to) processes, communication, naming, synchronization, and consistency. After the introductory part, design principles underlying the development of distributed systems are discussed followed by more advanced concepts such as fault tolerance and security. Students will also be familiarized with some of the main architectural paradigms in distributed systems: object-based systems, file systems, web-based and coordination-based systems. On the completion of the unit, students will understand the fundamentals of distributed computing and be able to design and develop distributed systems and applications.
- Responsible teacher: Syed Naqvi
- Teacher: Mahyar Mohammadi
- Teacher: Vatsal Rukhaiyar

CT30A3370 Operating Systems and System Programming - Blended teaching in English, Lahti 6.1.2025-20.4.2025
Käyttöjärjestelmän perusrakenteet ja –toiminnot: tiedostojärjestelmä, prosessit, prosessien ajoitus ja hallinta, muistinhallinta, oheislaitteet. Unix-järjestelmän rakenne. C-ohjelmointikieli ja sen ohjelmointiympäristö ja työkalut Unix-järjestelmässä. Unixin komentotulkki-ohjelmointi. Standardi I/O-kirjasto, kehittyneet I/O-toiminnot. Järjestelmätiedot ja –tiedostot. Prosessit, prosessien hallinta, prosessien väliset suhteet. Säikeet ja niiden hallinta. Palveluprosessit. Prosessienvälinen kommunikointi. Signaalit ja niiden hallinta.
- Responsible teacher: Saddam Mukta

CT30A3370 Käyttöjärjestelmät ja systeemiohjelmointi - Monimuoto-opetus, suomeksi 1.8.2024-30.7.2025
Käyttöjärjestelmän perusrakenteet ja –toiminnot: tiedostojärjestelmä, prosessit, prosessien ajoitus ja hallinta, muistinhallinta, oheislaitteet. Unix-järjestelmän rakenne. C-ohjelmointikieli ja sen ohjelmointiympäristö ja työkalut Unix-järjestelmässä. Unixin komentotulkki-ohjelmointi. Standardi I/O-kirjasto, kehittyneet I/O-toiminnot. Järjestelmätiedot ja –tiedostot. Prosessit, prosessien hallinta, prosessien väliset suhteet. Säikeet ja niiden hallinta. Palveluprosessit. Prosessienvälinen kommunikointi. Signaalit ja niiden hallinta.
- Responsible teacher: Jussi Kasurinen
- Teacher: Veikko Moilanen
- Teacher: Veikko Moilanen
- Teacher: Emma Pakarinen
- Teacher: Emma Pakarinen

CT30A3232 Basics of Linux - Monimuoto-opetus 2.9.2024-15.12.2024
Linux-käyttöjärjestelmän asennus ja virtuaalikone, graafiset työpöytäympäristöt, terminaali ja peruskäskyt, komentorivipohjaiset tekstieditorit, komentoriviohjelmat ja niiden asennus, terminaali-I/O ja tiedostonhallintatyökalut, säännölliset lausekkeet, komentoriviohjelmointi, komentorivipohjaiset verkko-ohjelmat, etäkäyttö ja tiedostojen siirto.
- Responsible teacher: Jouni Ikonen
- Teacher: Santeri Kainulainen
- Teacher: Roope Myller
- Teacher: Roope Myller

CT30A3204 Advanced Web Applications - Blended teaching 28.10.2024-23.2.2025
? TypeScript
? Node.js
? Express
? Template engines
? MongoDB
? React
? Authentication and authorization
? APIs
- Responsible teacher: Erno Vanhala
- Teacher: Aleksi Haapalainen
- Teacher: Atte Hiltunen

CT30A2910 Introduction to Web Programming - Blended teaching 2.9.2024-20.10.2024
Web standards: HTTP, HTML, CSS and JavaScript. The browser environment with its Document object model (DOM). Building web sites with commonly used tools.
- Responsible teacher: Erno Vanhala
- Teacher: Aleksi Haapalainen
- Teacher: Atte Hiltunen
- Teacher: Ilpo Kainulainen

CT30A2804 Käyttöliittymät ja käytettävyys - Monimuoto-opetus, suomeksi 6.1.2025-20.4.2025
Web- ja mobiilikäyttöliittymien suunnitteluperiaatteet. Ihmiskeskeinen suunnitteluprosessi. Käyttäjien ymmärtäminen HCI:n perustutkimusmenetelmien avulla ja tämän tiedon soveltaminen suunnittelussa. Suunnittelutekniikat, kuten käyttötapaukset, prototyyppien luominen, tarinankerronta ja käytettävyyden arviointi. Käytettävyys ja käyttäjäkokemus käsitteinä. Käytettävyysstandardit käyttöliittymäsuunnittelussa ja käytettävyystestauksessa. Suunnittelumallit ja nykyaikaisten ohjelmistojärjestelmien käyttöliittymien suunnitteluun liittyvät näkökohdat. Käyttöliittymien front-end-ohjelmoinnin perusteet.
- Responsible teacher: Antti Knutas
- Teacher: Kia Vuorio

CT80A0300 Software and Application Innovation - Blended teaching 6.1.2025-20.4.2025
Theme of the course changes on a yearly basis. This course combines technology and technology management perspectives for cross-scientific approach in software and application innovation process. Course consists of
Basics and use cases of the selected theme and related technologies
User-centric needs based design in software and application development
Innovation management, idea generation and opportunity identification process
(Open) business models and technology commercialization in global markets
Product and service development
- Responsible teacher: Jari Porras

CT30A2804 User Interfaces and Usability - Blended teaching, in English, Lahti 6.1.2025-20.4.2025
Web- ja mobiilikäyttöliittymien suunnitteluperiaatteet. Ihmiskeskeinen suunnitteluprosessi. Käyttäjien ymmärtäminen HCI:n perustutkimusmenetelmien avulla ja tämän tiedon soveltaminen suunnittelussa. Suunnittelutekniikat, kuten käyttötapaukset, prototyyppien luominen, tarinankerronta ja käytettävyyden arviointi. Käytettävyys ja käyttäjäkokemus käsitteinä. Käytettävyysstandardit käyttöliittymäsuunnittelussa ja käytettävyystestauksessa. Suunnittelumallit ja nykyaikaisten ohjelmistojärjestelmien käyttöliittymien suunnitteluun liittyvät näkökohdat. Käyttöliittymien front-end-ohjelmoinnin perusteet.
- Responsible teacher: Inna Sosunova
- Teacher: Essi Aittamaa
- Teacher: Yuxin Du

CT80A0300 Software and Application Innovation - Blended teaching 2.9.2024-15.12.2024
Theme of the course changes on a yearly basis. This course combines technology and technology management perspectives for cross-scientific approach in software and application innovation process. Course consists of
Basics and use cases of the selected theme and related technologies
User-centric needs based design in software and application development
Innovation management, idea generation and opportunity identification process
(Open) business models and technology commercialization in global markets
Product and service development
- Responsible teacher: Sanaul Haque
- Responsible teacher: Jari Porras
- Teacher: Anne Pässilä
- Teacher: Leonardo Triana Cuesta
- Teacher: Ashok Tripathi