
CT60A4500 Fundamentals of Software Testing (Lahti) - Online teaching 1.6.2026-30.7.2026
Software testing techniques, levels, automation, tools, working as a tester in a software testing team.
- Responsible teacher: Azeem Akbar
- Teacher: Mario-Flavius Stanisor
- Teacher: Umandi Weerasekara

CT60A4002 Ohjelmistotuotanto - Verkko-opetus 1.6.2026-30.7.2026
Johdanto, ohjelmistontuotannon rooli erilaisten organisaatioiden toiminnassa, ohjelmistotuotantoprosessi, vaatimusmäärittely, mallinnus, UML, arkkitehtuurit, prosessin kehittäminen, projektinhallinta, GDPR, etiikka.
- Responsible teacher: Jussi Kasurinen
- Teacher: Saku Tarkiainen
- Teacher: Jeremias Wahlsten

CT60A4002 Ohjelmistotuotanto - Monimuoto-opetus, Lpr 1.9.2025-12.12.2025
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: Katja Karhu
- Teacher: Mika Kuittinen
- Teacher: Jere Seilo

CT60A2700 Software development with the C-programming language for international programs - Blended teaching, Lahti 7.1.2026-17.4.2026
Week 1: Data and the memory
Bits, bytes, characters and memory addresses
Representing integers and floats
Pointers
Strings
Week 2: Handling data and I/O in C
Outputting numbers
Outputting text
Inputting numbers
Inputting text
sizeof() operation
Week 3: Structure and Control Flow
Structure of a C program
Conditional statements: if, else, switch
Loops: for, while, do-while
Break and continue
Operations for numbers and Booleans
string.h header file
Week 4: Functions
Declaring and defining functions
Character arrays vs pointers to string literals
Function parameters
Type conversions
Week 5: Data structures and advanced memory management
Arrays
Multidimensional arrays
Pointer arithmetic
Understanding memory allocation: stack vs. heap
Introduction to dynamic memory allocation
Week 6: Dynamic memory allocation
malloc, calloc, realloc and free functions
getline function
Writing text files
Reading text files
Structs
Week 7: Structuring data
Pointers to structures (slides | video)
Linked lists (slides | video)
Queues (slides | video)
Week 8: Development tools I
Project work starts
Memory leaks: using Valgrind
Creating own header files
Week 9: Development tools II
Project work continues
Makefile
Week 10: Advanced pointer topics
Project work continues
Pointers to functions
Week 11: Exploring C header files
Mathematical functions
Time and date functions
Character handling
Some other Important headers:
Week 12: Working with binary data
Binary files
Bit operations
Week 13: Troubleshooting and documentation
Debugging
Man pages
Week 14: Exam
Information about the exam
- Responsible teacher: Jouni Järvinen
- Teacher: Ahmed Abdelsalam
- Teacher: Songnian Han
- Teacher: Rares Radu

CT60A2600 Ohjelmakehitys C-kielellä - Monimuoto-opetus, Lpr 7.1.2026-17.4.2026
C-ohjelmointikielen syöttö ja tulostus sekä tietovirrat; valinta- ja toistorakenteet; teksti- ja binaaritiedostojen käsittely; muuttujat ja vakiot sekä tietotyypit ml. tietue ja taulukot; rakenteinen ohjelmointi, aliohjelmat, parametrit ja paluuarvot, näkyvyys; rekursio ja makro; virheenkäsittely; kirjastot; osoitteet ja osoittimet; komentoriviparametrit; dynaamiset tietorakenteet kuten linkitetyt listat ja puurakenteet; ajan käsittely; dynaaminen muistinhallinta; useista tiedostoista koostuvat ohjelmat; yksityiskohtainen ja arkkitehtuurisuunnittelu; hyvä ohjelmointityyli; C-ohjelmien testaus; esikäsittelijä ja kääntäjä; työkalut kuten debugger, make, versionhallinta, staattinen ja dynaaminen analysaattori.
- Responsible teacher: Uolevi Nikula
- Teacher: Ilpo Kainulainen
- Teacher: Roope Luukkainen
- Teacher: Rami Saarivuori

CT60A2412 Olio-ohjelmointi - Monimuoto-opetus 1.6.2026-30.7.2026
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: Oliver Kuosmanen
- Teacher: Roope Luukkainen
- Teacher: Saku Tarkiainen

CT60A2412 Olio-ohjelmointi - Monimuoto-opetus, Lpr 7.1.2026-17.4.2026
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: Veikko Moilanen
- Teacher: Roope Myller

CT60A2450 Object-Oriented Programming (Lahti&Online) - Blended teaching 1.6.2026-30.7.2026
Object-orientation, classes, inheritance, basics of modelling classes, principles of Java, basic data structures, abstract data types, exceptions, graphical user-interface.
- Responsible teacher: Janne Parkkila
- Teacher: Mario-Flavius Stanisor
- Teacher: Umandi Weerasekara

CT60A0250 Fundamentals of Programming for international programs - Blended teaching, Lpr, Lahti 1.9.2025-12.12.2025
The topics of the course include but are not limited to:
Week 1: Data types, variables, inputting and outputting
Week 2: More on strings and printing
Week 3: Conditional statements and Boolean logic
Week 4: Loops in programming
Week 5: Functions
Week 6: Classes, lists & matrices
Week 7: Dealing with text files
Week 8: Handling errors and exceptions + project work starts
Week 9: Modules
Week 10: Data, Dictionaries, CSV, JSON & own modules
Week 11: Tuples, sets & NumPy. Installing external libraries using pip
Week 12: Data from internet, web user interfaces, video games
Week 13: Recursive functions and algorithm design & analysis
Week 14: Instructions for exam
- Responsible teacher: Jouni Järvinen
- Responsible teacher: Janne Parkkila
- Teacher: Quan Nguyen
- Teacher: Rares Radu

CT60A0203 Ohjelmoinnin perusteet - Verkko-opetus 1.6.2026-30.7.2026
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: Ab Ekong
- Teacher: Ilpo Kainulainen
- Teacher: Roope Luukkainen
- Teacher: Demo Teacher1
- Teacher: Jeremias Wahlsten

CT60A0203 Ohjelmoinnin perusteet - Monimuoto-opetus, Lpr 1.9.2025-12.12.2025
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: Arttu Korpela
- Teacher: Roope Luukkainen
- Teacher: Veikko Moilanen
- Teacher: Roope Myller
- Teacher: Emma Niemenmaa
- Teacher: Joona Nykänen
- Teacher: Demo Teacher1
- Teacher: Demo Teacher2
- Teacher: Demo Teacher3
- Teacher: Demo Teacher4
- Teacher: Demo Teacher5
- Teacher: Demo Teacher6
- Teacher: Demo Teacher7
- Teacher: Demo Teacher8

CT30A8922 User Experience Design - Blended teaching, Lpr, Lahti 7.1.2026-17.4.2026
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: Arsalan Khan
- Teacher: Umandi Weerasekara

CT30A8912 Software and system architectures - Online teaching 7.1.2026-17.4.2026
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: Niloofar Meftahi
- Teacher: Eerika Peltonen

CT30A3401 Distributed Systems - Blended teaching, Lpr, Lahti 7.1.2026-17.4.2026
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: Mario-Flavius Stanisor
- Teacher: Yanli Zhang

CT30A3370 Käyttöjärjestelmät ja systeemiohjelmointi - Verkko-opetus 1.8.2025-30.7.2026
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: Saku Tarkiainen
- Teacher: Jeremias Wahlsten

CT30A3232 Basics of Linux - Blended teaching, Lpr 1.6.2026-30.7.2026
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: Saku Tarkiainen
- Teacher: Jeremias Wahlsten

CT30A3232 Basics of Linux - Blended teaching, Lpr 1.9.2025-12.12.2025
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

CT30A3204 Advanced Web Applications - Online teaching 1.6.2026-30.7.2026
? TypeScript
? Node.js
? Express
? MongoDB
? React
? Authentication and authorization
? APIs
- Responsible teacher: Erno Vanhala
- Teacher: Oliver Kuosmanen
- Teacher: Saku Tarkiainen

CT30A3204 Advanced Web Applications - Blended teaching, Lpr, Lahti 27.10.2025-20.2.2026
? TypeScript
? Node.js
? Express
? MongoDB
? React
? Authentication and authorization
? APIs
- Responsible teacher: Erno Vanhala
- Teacher: Aleksi Haapalainen
- Teacher: Atte Hiltunen
- Teacher: Oskari Suonpää

CT30A2910 Introduction to Web Programming - Online teaching 1.6.2026-30.7.2026
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: Oliver Kuosmanen
- Teacher: Mario-Flavius Stanisor