Civilingenjör i mjukvaruutveckling 300 hp
Anmälan öppnar 2019-03-15
Andelen mjukvara i världen växer explosionsartat. Med mjukvara som kompetens kan du arbeta med avancerad teknik inom vilket område som helst. Efter utbildningen kan du exempelvis arbeta som mjukvaruutvecklare, systemarkitekt, konsult eller projektledare. Du kan också arbeta med teknologi för sjukvården, i utvecklingsprojekt och inom många andra områden. Utbildningen gör dig attraktiv på stora delar av den tekniska arbetsmarknaden.
Mjukvara är den största drivkraften för innovation och påverkar vårt vardagsliv och samhället varje dag. Med goda kunskaper om mjukvaruutveckling kan du göra skillnad och blir extremt attraktiv inom vilket område som helst på en global arbetsmarknad. Du kan jobba med allt ifrån spel och musikstreaming, till att ta fram smarta lösningar för hållbar energikonsumtion. Då mjukvara styr nästan allt i vårt samhälle har en mjukvaruingenjör möjligheten att påverka allt, till det bättre. Typiska yrkesroller är t ex systemarkitekt, projektledare, produktutvecklare med kundfokus eller mjukvaruutvecklare i globala företag som Volvo, Sony eller Saab och Ericsson.
Mjukvaruingenjör är ett kreativt yrke som innebär gränsöverskridande samarbeten och problemlösning. En dag kan du jobba med bränsleoptimering i en motor för att spara miljön, och en annan med att utveckla en produkt som erbjuder smarta streaminglösningar.
Utbildningen är ny och ger dig breda ingenjörskunskaper som förbereder dig väl inför arbetsmarknaden. Den har många valbara kurser och varvar matematik, programmering och databasteknik med industriell ekonomi, samhällsutveckling, projektledning och studentprojekt.
Med denna breda utbildning skaffar du dig en god, flexibel, grund inför ett arbetsliv som vi med dagens snabba utveckling ännu inte kan överblicka. Du kan arbeta som konsult eller projektledare, systemarkitekt, chef eller expert. Du kan också arbeta med teknologi för sjukvården, i utvecklingsprojekt och inom många andra områden.
Utbildningen omfattar 300 högskolepoäng och leder fram till en civilingenjörsexamen i mjukvaruutveckling.
Programinnehåll
Utbildningen har ett upplägg som gör att du varvar olika typer av kurser. På det sättet läser du till exempel inte två matematikkurser samtidigt. Avgörande är att du kommer i kontakt med näringslivet. Många kurser är valbara för att du ska kunna sätta ihop en kombination av kurser som passar dig.
Första året börjar du studera grunderna till att bli civilingenjör, då du inleder med att läsa ingenjörsarbete, programmering i C++ samt matematisk problemlösning. Under vårterminen fördjupar du dig i spännande områden som teknikhistoria och samhällsutveckling.
Under andra året fördjupar du dina mjukvarukunskaper genom databasteknik, systemteknik och testning av mjukvara. Under tredje årets hösttermin får du läsa en kurs i artificiell intelligens samt en översiktskurs i industriell ekonomi. Året avslutas med fortsatt mjukvaruutveckling samt säkerhet och mjukvaruutveckling.
Fjärde året får du lära dig mer om projektledning och ledarskap. Du deltar i ett avancerat mjukvaruprojekt ute i näringslivet och lär dig om agil mjukvaruutveckling – alltså hur man arbetar genom utvärderingar av arbetsresultat. Under våren lär du dig hur man utvecklar och underhåller en mjukvara samt forskningsmetodik. Du kan välja att fördjupa dig i robotik, system-av-system eller avancerade webbteknologier för att förstå hur vi kan designa och utveckla denna typ av system. Du kan också välja att fördjupa dig i områden som människan i mjukvaruutveckling, värdedriven mjukvaruutveckling och datadriven mjukvaruutveckling.
På höstterminen under femte året kan du välja fortsatt fördjupning eller dig i olika områden: användarupplevelse i mjukvaruutveckling, strategier för mjukvaruutvecklande företag och maskininlärning. Därefter kan du välja antingen att fördjupa dig inom entreprenörskap eller göra yrkespraktik.
Under våren knyts utbildningen ihop med ett examensarbete som löper under hela vårterminen. Här förenar du dina kunskaper i ett projekt som kan utföras i samarbete med industrin. Examensarbetet kan på så sätt bli en första ingång till arbetslivet eller kanske en väg att förverkliga ett eget entreprenörsprojekt som du fått inspiration till under utbildningen.
Programvärderingar och programråd
Utbildningsprogrammet utvärderas kontinuerligt genom de enskilda kursernas kursvärderingar som genomförs efter avslutad kurs med återkoppling till studenterna. Kursvärderingarna redovisas och diskuteras av kurs- och programansvariga, varefter förändringar i programmet kan bli aktuella.
Programmet är kopplat till ett programråd som behandlar frågor rörande kvalitets- och utvecklingsfrågor. I programrådet eller i olika utskott till programrådet är externa ledamöter, studentrepresentanter samt alumni knutna för diskussioner om programmets utveckling, kvalitet och relevans för arbetsmarknaden.
Om programmet
Här kan du se mer om programmet Civilingenjör i mjukvaruutveckling!
Innehåll
Fakta
- Undervisningsform: Campus, dagtid, heltid
- Anmälningskod: BTH-86964
- Period: 2019 vecka 35 till 2024 vecka 22
- Nivå: Grundnivå och avancerad nivå
- Utbildningsplan: Ladda ner
- Anmälan: Anmälan öppnar 2019-03-15
- Välkomstbrev: Länk till välkomstbrev från ansvarig lärare finns här senast 3 veckor innan kursstart.
- Ort: Karlskrona
- Språk: Undervisningen ges normalt på svenska men undervisning på engelska kan förekomma.
- Förkunskapskrav: Grundläggande behörighet samt Matematik 4, Fysik 2, och Kemi 1.
Vid antagningen till ett utbildningsprogram ska högst 67 % av platserna fördelas i ett betygsurval och minst 33 % i ett provurval. Sökande som uppfyller kraven för flera urvalsgrupper ska ingå i samtliga. Meritpoäng inför urval enligt Områdesbehörighet A9/9.
Antagningsordning
Examen
Utbildningen leder fram till följande examen på avancerad nivå: Civilingenjörsexamen i mjukvaruutveckling
Motsvarande benämning på engelska är: Degree of Master of Science in Engineering: Software Engineering
Lärandemål
Kunskap och förståelse
- visa fördjupad teknikkunskap inom mjukvaruutveckling, system- och programvaruteknik såväl som breda kunskaper inom datavetenskap och kännedom om maskininlärning och människa-dator-interaktion.
- visa kunskap och förståelse för matematiska metoder och deras koppling till ett ingenjärsmässigt arbetssätt och deras tillämpning vid utveckling av komplexa mjukvarusystem.
- visa fördjupad kunskap om metoder, språk, processer och verktyg inom datavetenskap och mjukvaruutveckling samt under vilka omständigheter dessa kan tillämpas och vilken påverkan tillämpningen kan ha på användare, organisationer och företag.
- visa fördjupad kunskap om ingenjörsmässighet samt vetenskapliga metoder inom mjukvaruutveckling.
Färdigheter och förmågor
- visa förmåga att utforma, designa, implementera, testa, driftsätta, och underhålla mjukvaruvarusystem.
- visa förmåga att använda systemtänkande för att analysera komplexa system och för att identifiera, modellera och designa mjukvarulösningar och integrera dem i sådana system.
- visa förmåga att konceptualisera, abstrahera och utveckla modeller från verkliga problem eller fenomen, och använda dem för att stödja simulering och/eller byggandet av mjukvarulösningar för dessa problem/fenomen.
- visa förmåga att identifiera avvägningar mellan konkurrerande lösningar och att kritiskt utvärdera dem även med begränsad information.
- visa förmåga att identifiera, utvärdera och tillämpa forskningsresultat från relaterade vetenskapliga fält.
- visa förmåga till lagarbete och samverkan i grupper med olika sammansättning, och
- visa förmåga att i såväl nationella som internationella sammanhang muntligt och skriftligt i dialog med olika grupper klart redogöra för och diskutera sina slutsatser och den kunskap och de argument som ligger till grund för dessa.
Värderingsförmåga och förhållningssätt
- visa förmåga att göra informerade bedömningar om utmaningar, möjligheter och risker när man utvecklar mjukvarusystem, både på produkt-, process- och systemnivå, baserat på relevanta ekonomiska, etiska, miljömässiga och sociala aspekter.
- visa förståelse för teknikens möjligheter och begränsningar, dess roll i samhället och individens ansvar för hur det används, inklusive såväl sociala som ekonomiska aspekter samt miljö och arbetsmiljöaspekter samt ta hänsyn till säkerhet och personlig integritet, särskilt hantering av personuppgifter.
- visa förmåga att identifiera sitt behov av ytterligare kunskap och att fortlöpande utveckla sin kompetens.
Kurser i detta program
Obligatoriska kurser
Syftet med kursen är kunskap i objektorienterad programmering, dels för fortsatta studier inom datavetenskap och dels för att kunna lösa generella programmeringsuppgifter i arbetslivet.
Läs merKursens syfte är att ge en introduktion till matematikstudier på universitetsnivå. Kursen genomsyras av ett undersökande matematiskt arbetssätt via problemlösningsaktiviteter. I kursen ingår studieteknik där studenten tränas i att reflektera över sitt eget arbetssätt och studieupplägg i matematik.
Läs merKursen lär ut strukturerad programmering och problemlösning med programsspråket Python.
Läs merKursen syftar till att ge introduktion till och kunskap om ingenjörsarbete och en grund för studenternas fortsatta utveckling som ingenjörer inom ICT-området genom att: @@ ge studenterna en introduktion till området informations- och kommunikationsteknologi (ICT), områdets utveckling, central terminologi samt aktuella utmaningar. @@ ge studenterna inblick i och förståelse för ingenjörsmässiga metoder och arbetssätt inom ICT-området samt olika yrkesroller relevanta inom ämnesområdet. @@ stimulera studenternas initiativförmåga och kreativitet i ingenjörsmässiga problem. @@ introducera grunderna för muntlig och skriftlig kommunikation. @@ ge studenterna kunskap om och förståelse för vikten av professionella färdigheter och förhållningssätt. @@ ge studenterna förståelse om personlig ledning: planering, prioritering, uppföljning, tidsstudie. @@ ge studenterna en introduktion till hållbar utveckling.
Läs merKursen syftar till att deltagarna inhämtar de grundläggande kunskaper inom linjär algebra som fordras inom tekniska utbildningsprogram.
Läs merObligatoriska kurser
Kursen syftar till att ge en övergripande förståelse för effekter av teknisk utveckling inom företag, branscher och samhället i stort. Beskrivningen av historiska perspektiv är centrala i kursen men tyngdpunkten ligger på modern teknikutveckling, och där framför allt hur digitaliseringen av samhället omvandlar och har påverkar företag, arbetsmarknaden, samhället och individen.
Läs merKursens syfte är att ge studenten grundläggande kunskap om hur utveckling av stora programvarusystem sker. Syftet är även att ge studenten sådan kunskap om utvecklingsprocessen, kravhantering, testning, arkitekturdesign, projektplanering och projektuppföljning, att han/hon kan delta i planeringen av ett mindre projekt. Kursen syftar till teoretisk kunskapsinhämtning och praktisk tillämpning.
Läs merKursens syfte är att ge en introduktion till matematiska begrepp, metoder och problemställningar inom diskret matematik. Den diskreta matematiken utgör en viktig bas för studier inom datavetenskap och många digitala tillämpningsområden.
Läs merArkitekturen och designen av ett mjukvarusystem påverkar i hög grad kvaliteten på systemet och kostnaden för utvecklingen. Utgående från grundläggande objektorienterade begrepp och designprinciper analyseras och modelleras ett systems struktur och beteende med hjälp av modelleringsspråket UML (Unified Modelling Language) i en strukturerad arbetsmetodik, Unified Process. Arbetsmetodiken utgår från en beskrivning av kundkrav och bygger en spårbar kedja via olika UML-modeller hela vägen fram till implementation och testning. Den strukturerade arbetsmetodiken och modelleringsspråket UML ger ett stöd till designarbetet, men för att skapa en hållbar programvarudesign krävs också en förståelse för grundläggande designprinciper och designmönster. Designmönster är generella lösningsförslag på vanligt förekommande problem, och som mjukvaruutvecklare förväntas man känna till och kunna anpassa dessa generella lösningar till de konkreta utmaningar man försöker lösa. Grundläggande designprinciper beskriver hur man fördelar olika typer av ansvar mellan klasser för att få löst kopplad och lättunderhållen programvarukod.
Läs merKursens syfte är att ge en introduktion till algoritmer och datastrukturer när det gäller såväl teoretiska aspekter som implementeringsaspekter.
Läs merObligatoriska kurser
Ett operativsystem utgör gränssnittet mellan mjukvaruapplikationer och hårdvara både i traditionella datorsystem och mobila enheter såsom moderna mobiltelefoner. Operativsystemet hanterar och fördelar datorsystemets resurser och påverkar därför alla mjukvaruapplikationers prestanda. Det är därför nödvändigt att mjukvaruutvecklare har god förståelse för hur ett operativsystem fungerar.
Läs merKursen syftar till att ge en introduktion till hur ett datorsystem fungerar på maskinspråksnivå. Det är viktigt att ha kännedom om de tekniska förutsättningarna i en dator när man arbetar med programmering. Kursen syftar till att ge en utökad förståelse kring datorns logiska funktion på låg nivå för att lättare kunna förstå och hantera datorn även när man använder högnivåspråk.
Läs merKursens syfte är att studenten ska skaffa sig grundläggande kunskaper i mekanik som en bas för fortsatta studier inom ingenjörsvetenskap. Studenten tränar ingenjörsmässigt modelltänkande och förmåga till problemlösning samt utvecklar sin förståelse för matematisk modellering av naturen.
Läs merKursen syftar till att studenten skall skaffa sig grundläggande förståelse för matematisk analys i en variabel med tillämpningar inom framför allt tekniska ämnesområden.
Läs merSyftet med kursen är att studenten ska förstå och lära sig modellera och implementera en databas och dess applikationer.
Läs merObligatoriska kurser
Kursen syftar till att studenten skall skaffa sig grundläggande förståelse för matematisk analys i en variabel med tillämpningar inom framför allt tekniska ämnesområden.
Läs merKursens syfte a¨r att erbjuda grundla¨ggande och fo¨rdjupade kunskaper och fa¨rdigheter inom kontinuerlig kravhantering och produkthantering i storskalig utveckling av mjukvaruintensiva system och produkter i en fo¨ra¨ndringsbena¨gen och kostnadska¨nslig verklighet. Kursen ger ba°de teoretisk analysfo¨rma°ga inom området och praktisk tilla¨mpning av metoder och tekniker fo¨r kravhantering och produkthantering.
Läs merKursen syftar till att, så nära det är möjligt, efterlikna ett systemteknikprojekt, med tonvikt på mjukvara, som det normalt kan bedrivas ute i industrin. I denna kurs praktiserar studenten metoder som understödjer detta ingenjörsmässiga arbetssätt. Utvecklingsarbete i grupp ställer dessutom krav på organisation, ledning, samarbetsförmåga och muntlig såväl som skriftlig kommunikation med medarbetare, kunder och andra intressenter. Inom ramen för denna kurs ges studenten möjlighet att vidareutveckla sina kunskaper inom dessa mjukare bitar av konsten att lyckas med programutveckling. Sammantaget utvecklar studenten sina förmågor inom mjukvaruutveckling för att ytterligare förbereda sig inför sin yrkesverksamhet.
Läs merTestning är en central aktivitet i mjukvaruutveckling, men det är ofta en utmaning att testa programvara på ett effektivt och ändamålsenligt sätt. Syftet med kursen är att få deltagarna att inse hur testning kan förbättra programvarans kvalitet om den effektivt integreras i mjukvaruutvecklingsprocesserna och förstå hur detta kan åstadkommas med hjälp av både etablerade och nya tekniker inom mjukvarutestning. Syftet är också att förmedla praktisk erfarenhet av verktyg som stödjer och automatisera dessa tekniker.
Läs merKursen syftar till att förmedla kunskap, kompetens och praktisk erfarenhet gällande kommunikation, samarbete och koordinering av programvaruutvecklingsprojekt utifrån det globala perspektivet. Kursen syftar även till att lära studenterna olika sätt att kommunicera i ett globalt nätverk, i ett globalt team och hur de ska tolka och lyhört utnyttja mångfald i sina yrkesmässiga liv.
Läs merObligatoriska kurser
Artificiell intelligens i olika former finns i en allt större del av de datoriserade system vi använder - optimeringstekniker inom logistik, datorstyrda karaktärer i datorspel, beslutsstödsystem, bildbehandlingsalgoritmer och mobila robotar. Kursen syftar till att introducera området artificiell intelligens och några av dess tillämpningsområden.
Läs merProgramvaruarkitektur är ett viktigt tekniskt koncept i modern, storskalig programvaruutveckling, där programvaruarkitektur tjänar flera syften: planering av utvecklingsresurser; analys av problemdomänen från flera olika perspektiv med hjälp av arkitekturella vyer, samt abstraktion av stora mängder information för att uppnå en användbar översikt av systemet. Dessutom är programvaruarkitekturen och de beslut som fattats angående dess konstruktion nyckelkomponenter för att planera och åstadkomma specifika nivåer av kvalitet i det färdiga systemet och därmed också avgörande för systemets framgångsmöjligheter. I kursen förväntas studenten skaffa sig detaljerad kunskap om programvaruarkitektur och kvalitet, om programvaruarkitektur och dess relaterade beslutseffekter på kvaliteten på den utvecklade programvaran. Studenten förväntas uppnå detaljerad förståelse om hur: i) programvaruarkitektur av befintliga programvarusystem dokumenteras; ii) programvaruarkitekturer konstrueras baserat på moderna metoder och idéer, tex. arkitekturstilar, -mönster och taktiker, genom att ta hänsyn till den önskade programvaran, den omgivande teknologin och utvecklingsorganisationen; iii) resonera sakligt och faktabaserat om en specifik programvaruarkitekturs lämplighet för en viss produkt eller tjänst.
Läs merKursens syfte är att de studerande ska få en introduktion till industriell ekonomi samt en översiktlig bild över hur dess delområden hänger samman.
Läs merKursens syfte är att studenterna skall skaffa sig kunskaper i såväl sannoliketsteori som statistisk teori och metodik. Tonvikten ligger på sannolikhetsteori med tekniska tillämpningar som grund för fortsatta studier i tekniska ämnen, t.ex. tillförlitlighetsteknik, signalbehandling och telekommunikation samt även ekonomi.
Läs merKursen syftar till att studenten skall skaffa sig grundläggande förståelse för matematisk analys i flera variabler med tillämpningar inom framför allt tekniska ämnesområden.
Läs merObligatoriska kurser
Kursens syfte är att ge fördjupad kunskap inom fysik med relevans för mjukvaruutveckling.
Läs merKursen syftar till att ge kunskap om design av interaktionssystem. Kursen lyfter fram tillvägagångssätt och begrepp inom bedömning av användbarhet och interaktionsdesign. Vidare introducerar kursen till området människa-datorinteraktion (HCI) och olika utvecklingsmetoder.
Läs merKursen syftar till att ge kunskap om olika perspektiv på hållbarhet inom mjukvaruutveckling: i) Hållbarhet i utvecklingsprocessen, som innefattar utveckling med ansvarsfull användning av ekologiska, mänskliga och ekonomiska resurser. ii) Hållbarhet vid underhållsprocessperspektivet, under driften av systemet och före systemavveckling, inklusive kontinuerlig övervakning av kvalitets- och kunskapshantering. iii) Hållbarhet i systemproduktionsperspektivet, som täcker användningen av resurser för produktion och installation av systemet och exempelvis uppnås genom att använda gröna IT-principer, hållbart producerade hårdvarukomponenter och optimering av den nödvändiga logistiken för montering. iv) Hållbarhet i användarperspektivet, som handlar om mjukvarusystemet som produkt med hänsyn till ansvaret för miljöpåverkan och utformning av gröna affärsprocesser.
Läs merKursen syftar till att ge en introduktion till IT-och mjukvaruutmaningar inom säkerhet och proaktivt introducera säkerhetsproblem i utvecklingsprocessen. Huvudsyftet är att införa metoder och tekniker för att samla säkerhetskrav och att integrera säkerhetsproblemen i hela utvecklingsprocessen för att kunna utveckla säker mjukvara.
Läs merSyftet med denna kurs är att studenterna ska lära sig hur man skriver en kompilator. En kompilator består av tre delar: parsning, tolkning (interpretering) och kodgenerering. Parsning är användbart bland annat i samband med att man läser och skriver olika filformat. Kunskap om interpretering ökar förståelsen för semantiken i programmeringsspråk, till exempel när man behöver förstå specifikationen till programmeringsspråket C++. Kunskap om kodgenerering hjälper programmeraren förstå hur olika konstruktioner i ett högnivåspråk motsvarar exekverbar lågnivåkod. God förståelse av vilken lågnivåkod som genereras är viktigt vid felsökning (debugging) och prestandaoptimering, samt vid så kallad reverse-engineering av exekveringsflödet i ett program, vilket bland annat behövs för att analysera skadliga program (malware).
Läs merSyftet med kursen är att ge studenten en introduktion till multiprocessorsystem, deras arkitektur och uppbyggnad, olika programmeringsmodeller, samt viss praktisk erfarenhet att utveckla enkla parallella program.
Läs merObligatoriska kurser
Kursen syftar till detaljerad förståelse av programvarukvalitet och utmaningar för att uppnå hög kvalitet. Dessutom diskuteras ämnen såsom kvalitetstyrning av programvara och dess roll inom ramen för programvaruutveckling och de aktiviteter, tekniker och modeller som är centrala för att säkra programvarukvalitet. Deltagarna ska under kursen utveckla en medvetenhet om rådande state-of-the-art och inom mjukvaruindustrin.
Läs merKursen syftar till att binda ihop tidigare kunskaper inom ramen för ett grupprojekt där en omfattande programvara skall utvecklas. Kursen är upplagd för att, så nära det är möjligt, efterlikna ett projekt som det normalt kan bedrivas ute i industrin. Att utveckla programvara ställer stora krav på tekniskt kunnande. Det krävs att vara duktig programmerare, att förstå design av större programvaror, och att ha kunskap om tredjeparts programvaror och att integrera dessa med egen programvara. Programvaruutveckling innebär att tillämpa systematiska, disciplinerade och mätbara metoder för utvecklande, användande och underhåll av programvara. I denna kurs praktiserar studenten metoder som understödjer detta ingenjörsmässiga arbetssätt. Programvaruutveckling i grupp ställer dessutom krav på organisation, ledning, samarbetsförmåga och muntlig såsom skriftlig kommunikation med medarbetare, kunder och andra intressenter. Sammantaget utvecklar studenten sina förmågor inom programutveckling för att vara väl förberedd inför en yrkesverksamhet inom programutvecklingsindustrin, alternativt en akademisk karriär.
Läs merKursen syftar till att studenten ska utveckla bred kunskap om och förståelse av teoretiska grunder för olika typer av ledarskap och ledning av grupper i kunskapsintensiva miljöer såsom mjukvaruintensiva företag och projekt. Studenten skall speciellt utveckla förståelse och förmåga att balansera en ledarskaps- och entreprenöriell roll i relation till en operativ roll där teknisk utveckling är ett centralt element för organisationen.
Läs merUtveckling av programvara är en betydande investering. Av denna anledning är det viktigt att rätt produkt eller tjänst utvecklas på ett kostnadseffektivt sätt och levereras till kunder och användare i rätt tid, kvalite´ och pris. Merparten av programvaran utvecklas i team så därför är det mycket viktigt att utvecklare har ingående kunskaper och färdigheter i att leda och arbeta effektivt i projektteam. Denna kurs syftar till att ge studenterna en solid teoretisk kunskapsbas om olika processer och metoder för agile/lean projektstyrning.
Läs merValbara kurser
Kursen syftar till att ge en detaljerad förståelse för människor som är centrala för att mjukvaruprojekt ska bli framgångsrika. Det innefattar en förståelse för beteende och sociala aspekter hos människor som individer eller grupper, som deltar i och driver mjukvaruutveckling och relationen mellan organisatoriska och tekniska strukturer. Eftersom mjukvaran växer i storlek och komplexitet har mjukvaruingenjörer större svårigheter att förstå hur det fungerar som helhet och det blir svårare för dem att förstå vilka konsekvenser som följer av olika beslut att ändra programvaran. Med ökad interaktion mellan produkter, mjukvaruingenjörens aktiviteter under utvecklingen av en produkt kan också påverka andra produkter. När mjukvaran utvecklas över organisationsgränser sträcker sig effekterna av förändringar också bortom nämnda gränser. Detta innebär ett behov av interaktion mellan utvecklare eftersom de måste förhandla om utvecklingsåtgärder mellan grupper och till och med över organisationer i ett ekosystem av mjukvaruprodukter. Denna kurs kompletterar teknik- och processfokus som dominerar programvaruteknikområdet idag. Fokus ligger på individer och grupper inom mjukvaruutveckling och behandlar översiktligt även vissa aspekter på organisationsnivå.
Läs merärdet i allmänhet påverkar de beslut som fattas vid utveckling av mjukvaruintensiva produkter och tjänster. Värdet kan brytas ner vad det gäller; produktvärde(vad gäller egenskaper eller funktionalitet), processen, och praxis och principer för själva produktutvecklingsorganisationen. Varje beslut läggs till eller drar ifrån på värdet från ett av dessa perspektiv. Kursens mål är att ge en helhetsmodell av värdet i mjukvaruutvecklingsorganisationer, nedbrytningen av det organisatoriska värdet länkar samman de grundläggande affärsmodellerna i mjukvaruutvecklingen och de olika värderingsmodellerna i varje affärsmodell och denna värdekedja kan anpassas till kundens/användarens egen värdekedja. Dessa begrepp kommer att tillämpas på ett antal representativa fallstudier.
Läs merKursens syfte är att ge förståelse för designprinciperna för robotar och andra autonoma fordon. Kursen innehåller en introduktion till de grundläggande kinematiska och dynamiska grunderna som reglerar armrobotar men även självkörande fordon, design och simulering av både armrobotar och hjulburna autonoma robotar samt tillämpning av innehållet i kursen i ett tillämpat "autonom robot"-projekt.
Läs merSyftet med kursen är att ge en översikt av olika webbteknologier och hur dessa kan kombineras med olika databasteknologier. Kursen ger grundlig introduktion och orientering i de tekniker som används för att skapa avancerade webbplatser.
Läs merGrundkonceptet i datadriven mjukvaruuteckling är att utnyttja data som grund för beslut som fattas vid varje tillfälle i utvecklingsprocessen. Användare har alltmer tillgång till programvaruprodukter som svarar på deras krav/användningsbehov snabbt och utan fel (till exempel på app-marknader där vi förväntar oss att den nya versionen av vår favoritapp adresserar de krav/behov vi skickade in som app recensioner). Att möjliggöra ett datadrivet tillvägagångssätt i utvecklingsprocessen som gör det möjligt att analysera stora mängder data för att göra förutsägelser, simuleringar eller dra slutsatser för att stödja de tekniska besluten och utvecklingsprocessen i allmänhet är den enda lösningen för att hantera dessa utmaningar. Kursens mål är att ge förståelse för hur man tillämpar maskininlärning och AI-tekniker för att berika utvecklingsprocessen med aggregerade data: Utföra A/B-testning för att testa hypoteser, samla krav från app-recensioner med hjälp av behandling av naturligt språk,
Läs merMjukvaruföretag arbetar inte som isolerade organisationer där allt utvecklas internt, utan allt fler komplexa system som byggs utvecklas som en kombination av många andra system och tjänster. Kursens syfte är att introducera olika modeller av digitala ekosystem, utmaningarna i att bygga system-av-system, hur man designar, utvecklar och publicerar mjukvaru-API:er, orkestrering och koreografi av mjukvarutjänster och system och hur man övervinner utmaningarna för underhåll och förbättrar interoperabiliteten. Kursen kommer även att innefatta utveckling av API:er som exponerar funktionalitet samt att bygga ett system av system genom att integrera befintliga tjänster eller mjukvarusystem.
Läs merObligatoriska kurser
Syftet med kursen är att introducera, diskutera och träna ett vetenskapligt förhållningssätt, att bekanta sig med aktuell forskning inom ett valt område och att träna vetenskapligt skrivande. En nyckelfråga i forskningen inom programvaruteknik och datavetenskap är framtagning, utvärdering och jämförelse av metoder, verktyg, språk, modeller/design och algoritmer och hur dessa påverkar olika system, organisationer och människor. I denna kurs får studenten en förståelse för forskningsmetodik som gör en sådan utvärdering och jämförelse möjlig. Studenten får också en introduktion till samhälleliga och etiska aspekter av sådan forskning och utvärdering och får första erfarenheter av att planera, genomföra och rapportera ett forskningsprojekt.
Läs merEvolution och underhåll av mjukvara handlar om att kontinuerligt korrigera, anpassa och förbättra mjukvaran. Detta arbete medför särskilda utmaningar, till exempel måste man ofta förstå den existerande kodbasen utan att ha tillgång till de ursprungliga utvecklarna, för att göra förändringar behöver man förstå vilka följdeffekter dessa förändringar kommer ha, man behöver modernisera bruket av till exempel enhetstester, och man behöver ta sig tid att fräscha upp kodbasen enligt goda programmeringsprinciper. Men det räcker inte att sätta sig in i och förstå programvarukoden i sig, man behöver också en förståelse för hur programvaran är lagrad i ett konfigurationshanteringssystem, och hur man föreslår, granskar, inför, och testar förändringar i programvaran och i konfigurationshanteringssystemet. Syftet med denna kurs är att, genom ett praktiskt fall, skapa en djupare insikt och förståelse för bland annat ovanstående utmaningar.
Läs merValbara kurser
Det huvudsakliga syftet med kursen är att introducera teori och metod från maskininlärning (machine learning) samt praktiska tillämpningar inom informationsutvinning (data mining). Den teknologiska utvecklingen har bidragit till att vi blivit mer beroende av databaser för lagring och databehandling. Antalet databaser och mängden innehåll i dessa växer snabbt. I takt med denna tillväxt blir det svårare att manuellt finna användbar information från den stora mängden data. Vi behöver därför semiautomatiska och automatiska metoder för att använda, aggregera, analysera och extrahera sådan information. Metoder och tekniker från maskininlärning, informationsutvinning, och artificiell intelligens har visat sig användbara för detta syfte.
Läs merKursen syftar till att ge studenten en mo¨jlighet att pröva och utveckla sina ingenjörskunskaper inom mjukvaruutveckling i ett företag eller annan organisation. Varje student kommer att fa° en handledare tilldelad på arbetsplatsen. Normalt förväntas studenten själv föreslå en arbetsplats, vilken ska godkännas av kursansvarig i förväg.
Läs merKursens syfte är att ge kunskap om flera interaktionsscenarier där människor och datorer är involverade. Kursen orienterar studenterna inom forskningsområdet Människa-dator interaktion (MDI).
Läs merKursen behandlar de speciella förutsättningarna ur vilka högteknologiska företag uppstår och verkar, med särskild tyngdpunkt på ICT-industrin. Detta inbegriper riskkapital och värdering av idéer och intellektuella rättigheter, partnerskap med andra företag, strategier för uppskalning av verksamheter samt betydelsen av omgivande entreprenöriella ekosystem.
Läs merSyftet med kursen är att ge en detaljerad introduktion till djup maskininlärning. De senaste åren har djupa neuronnät dramatiskt förbättrat prestandan inom en rad olika områden inklusive talförståelse, datorseende och maskinöversättning. Vi fokuserar principerna för hur djupa nätverk är uppbyggda och hur de tränas, och vi går även igenom en rad tekniker som är centrala i olika tillämpningar (t.ex. "convolutional neural networks", "recurrent neural networks" och "deep belief networks"). Den huvudsakliga målsättningen är att ge en god förståelse för varför och när djup maskininlärning är användbart, samt hur denna teknik kan användas i praktiska tillämpningar.
Läs merKursen introducerar teorier, begrepp, metoder och teknik inom användarupplevelse (UX). Studenterna kommer att mäta, identifiera och beskriva tekniska och miljömässiga utmaningar inom UX. Vidare ska varje student utvärdera och reflektera över olika designlösningar baserade på flera kommersiella och icke-kommersiella UX-aspekter.
Läs merKursens mål är att förstå hur man designar autonoma system som måste aggregera, filtrera och integrera stora mängder data, som kommer från olika interna och externa källor for att styra systemet på bästa möjliga sätt. Kursen innehållar en introduktion till sensorer och aktuatorer (ställdon), begränsningar i datainsamling, tekniker för datafusion, data integration, och tillämpning av AI och maskinlärningstekniker för styrning av autonoma system.
Läs merI dagens mobila uppkopplade värld genereras stora mängder data som behöver hanteras, analyseras, och länkas samman. Detta görs på en stor mängd servrar på det så kallade Molnet. Utvecklingen, driftsättningen, och hanteringen av dessa kallas Cloud Computing. Syftet med den här kursen är att ge en bred bakgrund om att designa, utveckla, driftsätta, testa, och övervaka en cloud-lösning, specifikt med fokus på stora datamängder. Kursen ger en översikt över populära cloud-plattformar samt design och driftsättning av cloud-applikationer. Vidare introducerar kursen MapReduce, nosql-databaser, och verktyg för storskalig distribuerad dataanalys såsom Hadoop, och hur dessa kan driftsättas i en cloud applikation.
Läs merSyftet med kursen är att kursdeltageren ska inhämta färdigheter i att utveckla applikationer (appar) med god användbarhet för handhållna enheter.
Läs merSyftet med kursen är att den studerade skall utveckla kunskap i form av teorier och modeller för att förstå strategiarbetet hos programutvecklande företag.
Läs merObligatoriska kurser
Syftet med kursen är att studenten tränar sin förmåga att definiera, planera, genomföra och redovisa ett självständigt forsknings- och utvecklingsarbete inom huvudämnet för civilingenjörsprogrammet. Examensarbetet innebär en tillämpning och syntes av de under utbildningen förvärvade kunskaper och ska visa studentens förmåga att arbeta självständigt som civilingenjör.
Läs mer