Osaavat ohjelmoijat: Ohjelmistotuotanto alkeista lähtien, 40 opintopistettä sekä 15 op harjoitustyö yrityksiin Opiskelijapaikkoja: 20 Esitietovaatimukset: English skills. No other skills required. Kurssit 812341A 812339A 815311A 817602S 811391A Uusi kurssi 811375A 815303A Olio-ohjelmointi Olio-ohjelmoinnin jatkokurssi Software Quality and Testing Software Development in Global Environments Vaatimusmäärittely Artificial intelligence seminaari Käyttöliittymäohjelmointi Embedded Software Development Environments Kurssikuvaukset: 812341A Olio-ohjelmointi suomi Kurssin suoritettuaan opiskelija osaa selittää olio-ohjelmointiparadigman yleiset tavoitteet ja tekniikat. Lisäksi opiskelija osaa kuvata olio-ohjelmoinnin käsitteiden merkityksen käytännössä. Opiskelija osaa soveltaa periytymistä, koostumista ja monimuotoisuutta Java-kielellä laatimissaan ohjelmissa. Olio-ohjelmoinnin tavoitteet, Java-kielisen ohjelmoinnin perusteet, koostuminen, periytyminen ja monimuotoisuus, Javan kokoelmat, poikkeusten käsittely. Luennot 32 h, harjoitukset 21 h sekä viikkotehtävät ja itsenäinen työskentely 82 h. Timothy Budd: Introduction to object-oriented programming, 3rd edition. Vesterholm Kyppö: Java-ohjelmointi 6. tai uudempi painos, luvut 1-11. Kurssin verkkomateriaali. Hyväksytysti palautetut viikkotehtävät (suositeltu) tai tentti + harjoitustyö. 812339A Olio-ohjelmoinnin jatkokurssi Kurssin suoritettuaan opiskelija osaa soveltaa periytymistä, koostumista ja monimuotoisuutta laatimissaan ohjelmissa. Opiskelija kykenee laatimaan annettuja UML-kaavioita vastaavia ohjelmia ja tuottamaan ohjelmakoodia vastaavia kaavioita. Hän osaa laatia geneerisyyttä soveltavia ohjelmia sekä soveltaa kirjastokomponentteja omissa ohjelmissaan. Opiskelija osaa kuvata tavallisimpia suunnittelumalleja sekä suunnitella ja laatia kurssilla esitettyjen suunnittelumallien mukaisia ohjelmia. Lisäksi hän osaa
versionhallinnan perusteet, soveltaa yksikkötestauksen periaatteita olioparadigman mukaiseen ohjelmaan, hallitsee ohjelman dokumentoinnin ja osaa analysoida ohjelmia työkaluja käyttäen. Ohjelmistokehitystyökalut, olio-ohjelmoinnin perusteet, dokumentointi, yksikkötestaus, koostuminen, poikkeukset, muistinhallinta, periytyminen, monimuotoisuus, UML-kaavioiden yhteys koodiin, geneerisyys, kirjastot, tietosäiliöt ja suunnittelumallit. Luennot 32 h, harjoitukset 24 h sekä viikkotehtävät ja itsenäinen työskentely 72 h. Bruce Eckel: Thinking in C++ Volume 1, 2nd edition Bruce Eckel: Thinking in C++ Volume 2. Kurssilla käytettävien työkalujen manuaalit. Muu kurssilla ilmoitettava materiaali. Hyväksytysti palautetut viikkotehtävät (suositeltu) tai akvaariotentti + harjoitustyö. 815311A Software Quality and Testing English The student understands different views on software quality and the role of testing as a part of software engineering validation and verification activities, and defect identification / removal techniques. The student knows testing levels, strategies and techniques, can create test cases and conduct unit testing with appropriate testing tools. The student knows the basics of test driven development and test automation. Software quality and quality assurance. Software quality management and metrics. Fundamental concepts of software testing. Functional and structural testing. Unit, integration, system, acceptance and regression testing. Hands on test-driven development. Test automation. Lectures 24 h, exercises / assignments 24 h, weekly study 42 h, term project 42 h. Pezze M.,Young M., Software Testing and Analysis: Process, Principles and Techniques, John Wiley&Sons, 2008 *** Lasse Koskela, Test Driven: Practical TDD and Acceptance TDD for Java Developers, Manning Publications, 2007 *** Galin D., Software Quality Assurance: From theory to implementation, Addison- Wesley, 2004. Active Participation to lectures and exercises. Final grade is composed of attendance, assignments and term project.
817602S Software Development in Global Environments English After completing the course, the student can define the key success factors of Global Software Design (GSD) and the potential problems in coordination of projects where teams are separated by physical and / or temporal distance; can define and evaluate the collaborative technologies, which in the best way support distributed software development; can choose the methods and tools for distributed software development; can apply the practices of GSD in a student project and use the supporting tools throughout the project life cycle. Some of the topics covered are strategic issues in distributed development (off-shoring, near-shoring, outsourcing, OSS); cost-benefit-risk analysis; the triad of coordination, control and communication; team building (e.g. virtual teams); software process paradigms in the global environment (planned, agile); methods and tools for distributed software development; issues related to allocation of tasks; communication issues that arise due to distance and time zone differences; infrastructure support; geographical dispersion; lack of information communication; coordination complexity; cultural issues; technical issues related to information and artefact sharing; architectural design; and finally knowledge management issues. The lectures and seminars also review current research aspects of the GSD and related case studies from industry. The exercises demonstrate distributed software development as a virtual team with the support of appropriate methods and tools. Lectures and seminars involving all the students as well as lecture assignments (reading articles and writing analyses) 70 h (20 h lecture attendances, 30 h lecture assignments, 20 h additional reading), and exercises 65 h. For lecture assignments each student will read, summarize and analyse selected academic articles. The exercises include laboratory demonstrations of different supporting tools for distributed software development. The students train in project software development and planning practices in a distributed environment. The student project groups are organised into virtual (distributed) teams of 4 students. To be announced during the course implementation. By active participation or alternatively exam, based on the course study materials.
811391A Vaatimusmäärittely Kurssin suoritettuaan opiskelija osaa tarkastella vaatimuksia problem domain- ja solution domain - näkökulmista ja ymmärtää näkökulmien asettamat erityispiirteet vaatimuksille. Opiskelija ymmärtää, mikä rooli problem ja solution -domainissa esitetyillä vaatimuksilla on asiakkaan ja toimittajan näkökulmasta; kykenee tunnistamaan erilaisia projektityyppejä ja tietää millaiset vaatimukset mikäkin projektityyppi edellyttää. Opiskelija hallitsee useita vaatimusmäärittelyjen kuvaustapoja, niiden hyviä ja huonoja puolia eri näkökannoilta, ja osaa käyttää muutamia tärkeimpiä kuvaustekniikoita. Opiskelija hallitsee useita vaatimusten tunnistus-/hankintatekniikoita ja osaa käyttää niistä tavanomaisimpia. Lisäksi opiskelija hallitsee vaatimusten hallinnan sekä vaatimusten validoinnin ja verifioinnin periaatteet tuotteen elinkaaren aikana. Vaatimusten käyttötarkoituksia. Vaatimusmäärittelyjen keruu-, analysointi- ja kuvaustekniikat. Vaatimusten validointi ja verifiointi. Vaatimuksista neuvottelu ja priorisointi. Julkaisun suunnittelu. Vaatimusten hallinta tuotteen elinkaaren aikana. Luennot 32 h, viikkotehtävät ja harjoitustyö n. 102 h. S. Lauesen, Software Requirements Styles and Techniques. Pearson Education 2002. A.M. Davis, Just Enough Requirements Management, Dorset House Publishing 2005. Luentokalvot. Kurssin suorittamiseen on kaksi vaihtoehtoista tapaa: 1) Aktiivinen osallistuminen: viikkotehtävät ja harjoitustyö; 2) Tentti. Uusi kurssi Artificial intelligence-seminaari Kurssin sisältö on vielä kehityksen ja suunnittelun alla, valmistuu kevään 2019 aikana. 811375A Käyttöliittymäohjelmointi Opintojakson suoritettuaan opiskelija osaa toteuttaa graafisen käyttöliittymän sisältävän ohjelman, jossa on sovellettu käytäntöön käytettävyyden suunnittelun periaatteita kehitysprosessin alusta asti. Käyttöliittymän elementit, käyttöliittymäkirjastojen ohjelmoinnin perusteet, käyttöliittymän suunnitteluperiaatteita, käyttöliittymän taitto, käyttöliittymien suhde ohjelmisto-arkkitehtuuriin, tapahtumaohjattu ohjelmointi, web-käytettävyys, käyttöliittymien rakentaminen www-ympäristöön, webohjelmointi. Harjoitukset 24 h, harjoitustyö 75 h, itsenäinen materiaaliin perehtyminen 35 h.
Jaetaan kurssilla. Lisäksi esim. Kosonen, Peltomäki & Silander (2005). Java 2 ohjelmoinnin peruskirja. Docendo. Lisäksi Lauesen, S. 2005. User Interface Design: A Software Engineering Perspective. Kurssi suoritetaan hyväksytyllä harjoitustyöllä, joka määritellään tarkemmin kurssin aikana. 815303A Embedded Software Development Environments English. After completing the course, a student is able to work with the essential software development tools of a selected embedded platform. The student is able to implement memory and power efficient applications by exploiting existing libraries and knowledge of the programming interfaces provided by the platform. The focus of the course is in the software development environments and tools for mobile and embedded platforms, such as Android and ios. In addition, the course covers memory and power management, core services of the platform, networking and the utilisation of existing libraries. One platform will be selected for deeper study, and the course introduces its essential software development tools and libraries. The emphasis is on application development for the platform as an exercise. Lectures and exercises about 40 h, exercises and exercise work 93 h. Course material, the documentation of selected technologies, and other related literature. Exercise work.