- Programmeringsmodeller och -språk: imperativ programmering, objekt-orienterad programmering, funktionell programmering, parallell programmering. Introduktion till centrala egenskaper, fördelar, samt typiska applikationsområden.
- Programmering i C++: i jämförelse till Java. Centrala skillnader. Relation till C. Grunder: datatyper, kontrollstrukturer, objekt, klasser, arv, objekt-baserad polymorfism. Avancerat: parameter-överföring, referenser, pekare och explicit minneshantering, parametrisk polymorfism via mallar (templates).
- Parallellprogrammering: paradigm (delade datastrukturer kontra meddelandesändning), tekniker, och koncept ("safety", "liveness", "concurrency control", tjänster).
- Funktionell- och parallell-programmering i Erlang: rekursion, listhantering, "pattern matching", meddelandesänding, "safety", ("mutual exclusion"), "liveness" ("concurrency adaptor", "message ordering").
- Pragmatiska aspekter: utvecklings-verktyg och -miljöer, att testa, debugga, och profilera.
Kursens allmänna mål är att förmedla den nödvändiga kunskapen inom programmerings-modeller, -koncept, -språk, och -miljöer som behövs i modern mjukvarukonstruktion. Några få exempel på applikationsområden är att skapa webb-baserade, inbäddade, eller distribuerade system.
Efter fullgjord kurs skall teknologen:
- känna till grundläggande egenskaper och centrala koncept inom vanligt förekommande programmeringsmodeller (objekt-orienterad, imperativ, funktionell, och parallell programmering) samt känna till vanliga programmeringsspråk som implementerar dessa modeller.
- analysera programmeringsuppgifter och identifiera aspekter som gör dem lämpade för de ovan nämnda programmeringsmodellerna.
- kunna tillämpa objekt-orienterade koncept från Java i C++: klasser, arv, objekt-baserad polymorfism, samt undantag.
- förstå och kunna tillämpa koncept från C++ som implementerar programmerings modeller för objekt-orienterad och imperativ programmering: parameter-överföring, pekare och referenser, explicit minneshantering, överlagring, parametrisk polymorfism via mallar (templates).
- kunna konfigurera, kompilera, samt använda sig av mjukvarubiliotek skrivna i C++.
- kunna designa, strukturera, debugga, testa, samt profilera mellanstora program skrivna i C++.
- kunna tillämpa grundläggande funktionella programmeringstekniker i Erlang: rekursion, "pattern matching", listhantering.
- förstå och kunna identifiera "safety" och "liveness" egenskaper hos parallella program.
- kunna tillämpa "mutual exclusion", "message ordering", och "concurrency adaptor" som vanligt förekommande mönster för synkronisering i parallella program.
- kunna strukturera parallella applikationer i form av kommunicerande och samarbetande parallella komponenter.