studiehandbok@lith
 

Tekniska högskolan vid Linköpings universitet

 
År: 2017
 
Civilingenjörsutbildning i Mjukvaruteknik, 300 hp
/ Computer Science and Software Engineering /
 
Programmets syfte/vision
Mjukvaruteknikprogrammet kommer förse studenter med en bred och solid uppsättning praktiska och teoretiska färdigheter och kompetenser inom datavetenskap, programmering och programvaruteknik. Dessa färdigheter ger förmågan att utveckla både små och storskaliga integrerade mjukvarusystem och driva teknologisk innovation associerad med deras användning i samhället och i industrin framåt. Programmet är till stor del projektdrivet, där projekt binder samman teori och praktik i aktuella och framtida applikationsområden genom hela utbildningen. Specifika ämnesområden som kommer tas upp är bland annat mjukvaruintensiva system, inbyggda system, mobila plattformar, mobilitet och Internet, mjukvara för robotar, artificiell intelligens, sociala nätverk och interaktion, datornät, datadrivet beslutsfattande, storskaliga distribuerade system och hållbara mjukvarusystem för framtiden. Programmet kommer göra studenterna till ytterst kompetenta programmerare, innovatörer och utvecklare av integrerade mjukvarusystem och ge grunden för en livslång högintressant karriär med ett försprång i den utmanade globala arbetsmarknaden både i dag och i framtiden.
 
Programmål
Efter genomgången utbildning förväntas en civilingenjör från mjukvaruteknikprogrammet ha följande kunskaper och färdigheter:
  • Matematiska, naturvetenskapliga och teknikvetenskapliga kunskaper

    Kunskaper i grundläggande matematiska och naturvetenskapliga ämnen:
    En mjukvaruingenjör har en bred matematisk bas baserad på både kontinuerlig och diskret matematik inklusive logik, formella språk, automatateori, statistik, sannolikhetslära samt grundläggande naturvetenskapliga kunskaper anpassade för programmets teknikområde. Mjukvaruingenjören kan använda matematiken som verktyg för att beräkna, strukturera, abstrahera och modellera datavetenskapliga och mjukvarutekniska problem.

    Kunskaper i teknikvetenskapliga ämnen:
    En mjukvaruingenjör skall ha breda kunskaper inom datavetenskap (computer science) och programvaruteknik (software engineering) omfattande flera programspråk och -paradigm, flera utvecklingsmetodiker, distribuerade och inbyggda system, mjukvaruintensiva system, användbarhet och människa-dator-interaktion samt artificiell intelligens. Mjukvaruingenjören kan designa, utveckla, verifiera och underhålla bland annat storskaliga distribuerade och inbyggda system samt avancerade mobila och sociala applikationer. Mjukvaruingenjören har en helhetsförståelse för mjukvaruutvecklingens alla dimensioner och aspekter.

    Fördjupade kunskaper i något/några tillämpade ämnen:
    En mjukvaruingenjör har fördjupade kunskaper inom datavetenskap och programvaruteknik och har i huvudområdet tillgodogjort sig de kunskaper som behövs för en fortsättning på forskarutbildningsnivå.

  • Individuella och yrkesmässiga färdigheter och förhållningssätt

    Ingenjörsmässigt tänkande och problemlösning:
    Mjukvaruingenjören kan med stöd av verktyg och metoder från matematik, datavetenskap och den tekniska kunskapen identifiera, formulera, modellera och lösa komplexa tekniska problem. Detta innefattar att göra såväl kvalitativa som kvantitativa uppskattningar, göra relevanta antaganden och rimlighetsbedömningar samt beakta osäkerheter. Mjukvaruingenjören är särskilt bra på att ta fram exekverbara modeller i former av program för att undersöka och lösa problem (”computational thinking”).

    Experimenterande och kunskapsbildning:
    En mjukvaruingenjör äger förmåga att tillägna sig ny kunskap genom att formulera hypoteser och utvärdera dessa genom experimentell implementering av programvara. Detta innefattar att formulera abstrakta modeller, använda relevant metodik för att utföra experiment eller motsvarande, analysera resultat samt redovisa resultatet. Mjukvaruingenjören har även förmåga att skaffa sig ny kunskap genom att söka relevant kunskap inom det aktuella området.

    Systemtänkande:
    Mjukvaruingenjören har förmåga att använda systemtänkande för att modellera, analysera och utveckla datatekniska system och processer. Detta innebär att kunna definiera systemgränser, göra abstraktioner, se såväl helheter som delsystem och beskriva samverkan mellan dessa samt göra prioriteringar av avvägningar.

    Individuella färdigheter och förhållningssätt:
    En mjukvaruingenjör visar initiativförmåga och har förmåga till ett självständigt, kreativt och kritiskt tänkande. Detta innefattar också självkännedom samt förmåga och vilja till personlig utveckling och livslångt lärande. Mjukvaruingenjören har också förmåga att planera sin tid och sina resurser.

    Professionella färdigheter och förhållningssätt:
    Mjukvaruingenjören kännetecknas av ansvarstagande, pålitlighet och professionellt uppträdande. Detta innefattar även att vara medveten i sin karriärplanering och hålla sig informerad om professionens utveckling.

  • Förmåga att arbeta i grupp och kommunicera

    Att arbeta i grupp:
    Mjukvaruingenjören ska ha kunskap om vilka olika roller som finns i en projektgrupp, hur dessa roller samverkar, vad som kännetecknar en effektiv grupp och därigenom förmåga att sätta samman olika roller på ett ändamålsenligt sätt. Genom att ha deltagit i flertalet större grupp-projekt är mjukvaruingenjören förberedd att agera i olika grupproller och efter viss yrkeserfarenhet framförallt växa i projektledarrollen eller andra ansvarsfyllda roller. Mjukvaruingenjören har även en god grund för att kunna initiera, planera, leda och utvärdera tekniska utvecklingsprojekt.

    Att kommunicera:
    En mjukvaruingenjör har goda färdigheter i muntlig och skriftlig kommunikation. Detta innebär att kunna presentera resultatet av tekniskt utvecklingsarbete på ett strukturerat sätt och med relevanta tekniska hjälpmedel i såväl tal som skrift och på såväl svenska som engelska.

    Att kommunicera på främmande språk:
    Studenten skall på engelska kunna läsa texter inom det egna teknikområdet samt kunna presentera projektresultat såväl skriftligt som muntligt.

  • Planering, utveckling, realisering och drift av tekniska system med hänsyn till affärsmässiga och samhälleliga krav

    Samhälleliga villkor inklusive ekonomiskt, socialt och ekologiskt hållbar utveckling:
    En mjukvaruingenjör har perspektiv på teknikens betydelse och sin egen roll som ingenjör i samhället, både nationellt och globalt, och beaktar hållbar tillämpning av teknik.

    Företags- och affärsmässiga villkor:
    En mjukvaruingenjör har insikter i de affärsmässiga och företagsmässiga villkoren för utveckling och införande av ny teknik.

    Att planera system:
    Mjukvaruingenjören har kunskap och färdighet i att kravsätta system och produkter så att han/hon kan medverka i och snabbt förstå industrins egna processer för detta och modellera produkter/system samt utvärdera dessa mot krav.

    Att utveckla system:
    En mjukvaruingenjör har, inom sitt teknikområde, generella kunskaper om lämpliga utvecklingsprocesser för olika typer av system och kan snabbt kan sätta sig in i industrins olika specifika utvecklingsprocesser. Mjukvaruingenjören har stor färdighet i att tillämpa kunskaperna från sin teknikspecialitet vid utvecklingsarbete.

    Att realisera system:
    En mjukvaruingenjör känner till utformning och ledning av realiseringsprocessen test, verifiering och validering.

    Att ta i drift och använda system:
    Mjukvaruingenjören har kännedom om utformning, och ledning, igångsättande, drift och underhåll samt systemavveckling av avancerade tekniska system.
 
Gemensamma bestämmelser
Gemensamma bestämmelser avseende särskild behörighet, anstånd, studieuppehåll, studieavbrott samt antagning till del av utbildningsprogram finns sammanställda i avsnitten b1-b6.
 
Beaktande av särskilda perspektiv
Enligt styrelsens direktiv.
 
Programmets organisation
Under de tre första åren är programmet organiserat så att man vanligen läser tre kurser parallellt under en period, där en av kurserna är av matematisk natur och en av kurserna är ett projekt eller en kurs med projektdel. Dessutom läses också en liten strimma ingenjörsproffesionalism varje termin utöver de större kurserna.

Programmet innehåller många kurser med laborativa och projektorienterade moment. Speciellt genomförs fem obligatoriska grupprojekt där teori och praktik integreras för att förstärka och fördjupa ämnesförståelsen. Flera av projekten kommer att genomföras enligt ett industriellt arbetssätt. Projektet under första terminen är till för att ge perspektiv på ämnesområdet och avslutas med en konferens. Andra terminen ska en mobil eller social applikation utvecklas i en mindre grupp. Fjärde och femte terminen görs projekt inom distribuerade och inbyggda system respektive AI/robotik enligt en lättrörlig (agil) metodik. Sjätte terminen görs ett större projekt i grupper om 5-7 studenter med en extern kravställande kund som beställare där utvecklingsmetodik väljs utifrån projektets förutsättningar. I dessa kurser utvecklas både förmågan att arbeta i grupp och den kommunikativa förmågan genom muntliga presentationer och skriftliga tekniska rapporter.

Under de avslutande två åren kommer många kurser att vara gemensamma med masterprogram och kommer därför ofta att ges på engelska.

I programplanen finns angivet vilka kurser som är obligatoriska, valbara eller frivilliga i respektive termin. De obligatoriska kurserna måste ingå i examen, de valbara får ingå i examen medan kurser klassade som frivilliga inte kan räknas in i civilingenjörsexamen från mjukvaruteknikprogrammet. Programnämnden bestämmer vilka kurser som skall vara obligatoriska och vilka som för skilda studerandegrupper inom utbildningen utgör valbara alternativ. Kurser som överlappar varandra får ej ingå i examen samtidigt. Andra kurser kan efter beslut av programnämnden räknas som valfri kurs.

En profil består av ett antal profilkurser samt ett regelverk för profilen och hur val av dess profilkurserna skall göras. En profil påbörjas vanligen termin 7. För varje profil utses en profilansvarig. Uppfyller man kraven för en profil anges denna profil i examensbeviset för civilingenjörsexamen.

Profilkurser kommer i möjligaste mån att i programplanen placeras så att profilkurserna kan läsas i lämplig ordning och placeras i olika schemablock för att undvika schemakollisioner.
 
Programmets innehåll
Mjukvaruteknikprogrammet har en obligatorisk del som ges under de tre första åren. Den obligatoriska delen innehåller:
  • ett teknikblock med datavetenskap (computer science) och programvaruteknik (software engineering). Kurserna i datavetenskap skall ge en förståelse av olika programspråk och -paradigm, datastrukturer och algoritmer, artificiell intelligens, användbarhet och människa-dator-interaktion, sociala och mobila applikationer, mjukvaruintensiva system, operativsystem, distribuerade system, inbyggda system, databassystem samt mobila och sociala applikationer. Kurserna i programvaruteknik skall ge en förståelse av olika modeller för programutvecklingsmetodik och utveckling av storskaliga mjukvarusystem.
  • ett matematikblock bestående av diskret matematik, logik, formella språk och automatateori, kontinuerlig matematik med analys och linjär algebra samt tillämpad matematik i form av matematisk statistik, och sannolikhetslära.
  • dator- och systemtekniska kurser som ger grunderna i datorsystem och reglerteknik.
  • naturvetenskapliga kurser som ger grunderna i mekanik och fysik.
Under de två avslutande åren ges en stor valfrihet för att dels kunna fördjupa sig inom ett mjukvarutekniskt område och dels kunna bredda sig genom att välja kurser inom angränsande områden eller kurser mer för den personliga utvecklingen av mjukvaruingenjören. Inom programmet erbjuds ett antal profiler med ämnesfördjupning. Under dessa två år på den avancerade nivån skall studenten välja kurser så att man uppfyller masterexamens krav på ämnesmässig fördjupning inom ett huvudområde.

I programplanen för programmet framgår för varje år de kurser, som planeras att ges, och i vilken programtermin de är placerade i och deras tidsmässiga placering under året.

Varje kurs beskrivs i en kursplan där bland annat kursens mål och innehåll är beskrivet och de särskilda förkunskaper som erfordras för att kunna tillgodogöra sig kursen. I kursplanen anges kursens nivå, grundläggande nivåer; G1, G2 eller avancerad nivå A samt det huvudområde kursen tillhör.

Ett obligatoriskt kandidatprojekt ingår under termin 6.
 
Bestämmelser för uppflyttning till högre årskurs
För att den studerande ska kunna tillgodogöra sig fortsatta studier på de senare terminerna gäller följande:
  • För tillträde till kandidatprojektkursen på programmet gäller:
    • Den studerande skall ha minst 90hp godkänt i kurser inom programtermin 1-4 (frivilliga kurser inräknas ej). Detta krav ska vara uppfyllt senast 3 veckor in i läsperiod 2 ht höstterminen före kandidatprojektet skall utföras.
    • Den studerande skall ha slutfört de specifika ämneskurser som anges i kursplanen för respektive kandidatprojektkurs. Detta krav ska vara uppfyllt senast 3 veckor in i läsperiod 2 höstterminen före kandidatprojektet skall utföras.
  • För tillträde till termin 7 krävs vid terminsstart minst 150 hp inom programmets första 6 terminer. De studenter som inte uppfyller kraven ska göra en individuell plan hos studievägledaren. I första hand ska de icke avklarade kurserna från termin 1-6 inplaneras. Planering ska ske enligt programnämndens riktlinjer.
  • För tillträde till examensarbetet på masternivå krävs minst 240 högskolepoäng inom programmet. Dessutom krävs att samtliga obligatoriska kurser i termin 1 till och med 6 är avslutade samt 30 hp på avancerad nivå inom huvudområdet för examensarbetet.
 
Profiler/inriktningar
De ämnesfördjupande profilerna påbörjas termin 7 och innehåller vanligen flera kurser att välja bland. Varje profil har ett regelverk som bestämmer hur profilkurser kan väljas. Examensbeviset anger namnet på profilen som inriktning. Profiler kan med tiden variera och aktuella profiler fastställs inför termin 7 i programplanen. Huvudområdet för profilen beror på vilket val av valbara kurser som gjorts inom profilen. Tillåtna huvudområden för programmet, se avsnitt Examenskrav.

Profiler och profilregler
  • AI och maskininlärning
    Obligatoriska och valbara kurser i profilen, minst 36 hp varav 30 hp på avancerad nivå
  • Industriell ekonomi
    Obligatoriska kurser i profilen
  • International Software Engineering (endast för antagna till utbytesstudier termin 8 till Harbin Institute of Technology, Kina)
    Obligatoriska kurser samt tillgodoräknade utbytesstudier omfattande minst 30 hp
  • Programmering och algoritmer
    Valbara kurser i profilen, minst 36 hp varav 30 hp på avancerad nivå
  • Spelprogrammering
    Obligatoriska och valbara kurser i profilen, minst 36hp varav 30hp på avancerad nivå
  • Storskalig mjukvaruutveckling
    Valbara kurser i profilen, minst 36 hp varav 30 hp på avancerad nivå
    TDDD46 tillgodoräknas som TDDD37
  • Säkra system
    Obligatoriska kurser
    Minst en kurs av TDDD27, TDDD38, TDTS21
    Minst en kurs av TDDD97, TDTS06, TDDD37 eller en till av TDDD27, TDDD38, TDTS21
    TDDD46 tillgodoräknas som TDDD37
 
Forskarutbildningskurser
Vissa forskarutbildningskurser är öppna för teknologer. Kontakta forskarstudierektor på respektive institution. För att få räkna med en sådan kurs, som valfri, i civilingenjörsexamen lämnas en ansökan in till programnämnden för beslut om kursplan.
 
Examensarbete
Studerande, som vill ha en profil angiven i examensbeviset, bör för civilingenjörsexamen välja sådant examensarbete som motsvarar profilens allmänna inriktning. För kandidat- och masterexamen skall examensarbetet göras inom huvudområdet.

För tillträde till examensarbetet se Bestämmelser för uppflyttning till högre årskurs.

Tillåtna huvudområden för den masterexamen som krävs för civilingenjörsexamen från programmet är Datavetenskap, Datateknik och Informationsteknologi.

Vid vilka institutioner/ämnesområden/forskarutbildningsområden vid LiU ett examensarbete inom ovanstående huvudområden kan utföras framgår av gemensamma regelverket för examensarbete.
 
Examenskrav
För att uppfylla krav för civilingenjörsexamen i Mjukvaruteknik, 300hp, skall studenten ha fullgjort:
  • kursfordringar med godkänt resultat innefattande samtliga obligatoriska kurser och valfria kurser ur programplanen inklusive examensarbete så att 300hp uppnås. Efter särskilt beslut av programnämnden kan andra kurser inräknas.
  • kursfordringar om minst 90hp på avancerad nivå. Däri skall ingå:
    • kurser om minst 30hp på avancerad nivå inom huvudområdet.
    • examensarbete på 30hp på avancerad nivå inom huvudområdet.
    • examensarbete examinerat vid Tekniska högskolan vid Linköpings universitet.
    • minst 45hp sammantaget från kurser på grundnivå (G1, G2) och avancerad nivå (A) i matematik/tillämpning inom matematik, se fastställd förteckning över kurser med tillämpning inom matematik.

Minst en av följande kurser vara avklarad med godkänt resultat:
  • TAOP33 Kombinatorisk optimering gk
  • TAOP07 Optimeringslära grundkurs
För studier inom LiTHs utbytesprogram görs en helhetsbedömning att motsvarande nivå uppnåtts. Detta innebär inga specifika kurskrav, kurserna skall läsas i linje med programmets inriktning.

Kurser som överlappar varandra innehållsmässigt får ej ingå i examen samtidigt. Om kurser delvis överlappar varandra kan del av kurs få räknas in. Beslut i dessa fall görs av programnämnden.

När kraven för civilingenjörsexamen i Mjukvaruteknik är uppfyllda är även kraven för teknologie masterexamen inom ett huvudområde uppfyllt och därmed utfärdas två examina.

Examensbenämningar är Civilingenjör i Mjukvaruteknik och Teknologie master i Datavetenskap, Datateknik eller Informationsteknologi.
 

Tekniska högskolan vid Linköpings universitet


Informationsansvarig: TFK , val@tfk.liu.se