Bachelor i programvareutvikling - BPU

Innledning

I dagens samfunn er bruk av datateknologi en naturlig og nødvendig del av folks hverdag både privat og i jobb/skole-sammenheng. De aller fleste er vanlige brukere av ulike programvareløsninger, og nøyer seg med å anvende de nye spennende teknologiene.  Bachelorstudiet i Programvareutvikling er derimot for dem som ønsker en yrkeskarriere der man jobber med å forme og utvikle morgendagens IT-løsninger.  I næringsliv og offentlig sektor er det stor og vedvarende etterspørsel etter programvareutviklere. 

Med bakgrunn i utviklingen innen datafagfeltet de siste ti år (dokumentert gjennom IEEE/ACMs Computing Curricula), har vi sett behovet for et studium på bachelornivå med spesialisering innen nettopp programvareutvikling og kan som eneste høgskole/universitet i landet tilby dette.  Etter endt studium sitter kandidatene med etterspurt kompetanse og vil oppleve faglig utfordrende oppgaver i jobbsammenheng.

Studiets varighet, omfang og nivå

Studiet er en 3-årig utdanning (180 studiepoeng) på lavere grad (Syklus 1) der kandidatene tildeles graden Bachelor i programvareutvikling (engelsk: Bachelor of Science in Software Engineering). Studiet går over seks semestre, og hvert semester består av tre til fire emner som undervises parallelt.  Første studieår har så mye felles med de øvrige informatikkrettede bachelorstudiene ved Høgskolen, at det er gode muligheter for overgang mellom studiene. 

Etter endt studium er man kvalifisert til å jobbe med utvikling og vedlikehold av ulike typer programvare, alt fra mobil-apper til tyngre forretningsapplikasjoner. Studiet kvalifiserer til opptak ved en rekke IT-relaterte masterstudier i Norge, deriblant både master i Applied Computer Science, Informasjonssikkerhet og Interaksjonsdesign ved Høgskolen i Gjøvik. Siden hele studiet er bygd opp med utgangspunkt i internasjonale standarder for tre-årige laveregrads datautdanninger, er det også meget godt tilpasset mastergradsstudier utenlands.

Forventet læringsutbytte

Kandidaten opparbeider i studiet kunnskaper om og ferdigheter innen hvordan man i profesjonell sammenheng jobber seg fra en idé via ulike utviklingsstadier frem til velfungerende programvare.  De to områdene kandidaten oppnår stor faglige fordypning innen er systemutvikling og programmering. 

Kunnskaper:  

Systemutvikling: Kandidaten kan gjøre rede for profesjonell arbeidsmetodikk for utvikling av datasystemer.  Kandidaten har inngående kunnskap om alternative systemutviklingsprosesser og hvordan man analysere problemområdet og dokumenterer krav til en programvare.  Man har innsikt hvordan designe programvare på basis av forståelse for programvarearkitektur, design patterns, internetteknologi, databaser, informasjonssikkerhet og utforming av gode brukergrensesnitt.  Videre har kandidaten innblikk i mulighetene som ligger i både å utvikle og anvende åpen kildekode, og kjenner nødvendigheten av å sikre forretningsmessig forankring av IT-prosjekter.

Programmering: Kandidaten har evne til å skrive effektiv programkode og kan både strukturert og objektorientert programmering i ulike programmeringsspråk.  Videre har man kunnskap til å undersøke og videreutvikle eksisterende kildekode og kan anvende integrerte utviklingsmiljøer (IDE).  Kandidaten har også innblikk i programvareutvikling for mobile plattformer. 

Som grunnlag for å drive systemutvikling og programmering er kandidaten kjent med hovedtrekk innen informatikkrelatert matematikk, datakommunikasjon, operativsystemer og informasjonssikkerhet, og har innblikk i den historiske utviklingen og nye trender innen programvareutvikling. Kandidatene kjenner vurderinger som gjøres rundt bruk av standardprogramvare kontra egenutvikling og nødvendigheten av avklaringer rundt lisensiering ved bruk og videreutvikling av programvare.

Ferdigheter:

Kandidaten kan utforme IT-løsninger som tilfredsstiller krav fra brukerne gjennom opparbeidede ferdigheter innen systematisering av kravene, analyse av alternative teknologianvendelser og design av programvare.  Kandidaten kan skrive effektiv kildekoden for løsningen, og er i stand til å se utviklingsoppdraget i forhold til økonomiske og tidsmessige rammer.  

I store prosjekter kan kandidaten bidra i alle ledd i prosessen og være en kjerneressurs innen programmering av løsningen, mens man i mindre prosjekter har ferdigheter til å lede deler av utviklingsarbeidet og ha ansvaret for programmeringen. Kandidaten kan å etablere et teknologisk utviklingsmiljø, sikre god kvalitet med bruk av konfigurasjonsstyringssystemer og behersker aktuelle verktøy som støtter utvikling av datasystemer.

Kandidaten kan argumentere skriftlig og muntlig rundt valg mellom alternative programvareløsninger på bakgrunn av systematiske søk i relevante faglige kilder og innblikk i et spekter av alternative tilnærminger.

Generell kompetanse

Kandidaten er kompetent til å fylle en rolle som brobygger mellom datateknologien, brukerne og beslutningstakerne i virksomheter. Erfaringer fra prosjekter i studiet har gitt kandidaten grunnleggende ferdigheter innen styring av prosjekter og håndtering risikoer i mindre utviklingsoppdrag.

Kandidaten er bevisst på nødvendigheten av stadig å sette seg inn i nye teknologier og er i stand til å utvide egen kunnskap, og er bevisst på økonomiske, etiske og miljømessige vurderinger som må gjøres i forbindelse med utøvelse av sitt fremtidige yrke.

Internasjonalisering

Studentene kan velge å ta 3. eller 4. semester ved en av HiGs samarbeidsinstitusjoner i utlandet.  Øvrige studiesteder vurderes etter søknad.  Forutsetningen er at man finner et studiested som dekker de emnene som inngår i studieplanen det aktuelle semesteret.

5. semester er tilrettelagt for tilreisende internasjonale studenter innen informatikk.  Studenter vil ha et utvalg av informatikkemner som undervises på engelsk.  Hvilke emner tilbys i er presisert i emnebeskrivelsene.

Målgruppe

Studiet passer for alle som har interesse av å lære seg programvareutvikling.  Man bør ha interesse for å sette seg inn i brukernes behov og teknologiens muligheter samt et ønske om å jobbe med utforming av programmene som forener dette.  Det stilles ikke krav om spesielle forhåndskunnskaper innen data. Det er derimot viktige at man er motivert for ivareta en fremtidig rolle som brobygger mellom datateknologi og brukere/virksomheter.

Studiet passer både elever som kommer rett fra videregående skole og søkere som etter noen år i yrkeslivet har fattet interesse for utvikling av datasystemer.

Opptakskrav og rangering

Opptakskrav til studiet er generell studiekompetanse med fordypning i Matematikk R1 (2MX, 2MY eller 3MZ) eller Matematikk (S1 + S2) (se Forskrift om opptak til høyere utdanning § 4-3).

Søkere som mangler fordypningen i matematikk kan søke opptak under forutsetning av at man gjennomfører høgskolens R1-kurs i matematikk som starter noen uker før ordinær studiestart.

Studiets innhold, oppbygging og sammensetning

Enkelte emner er felles grunnlagsemner innen informatikk, mens øvrige emner er studiespesifikke og gir studentene som uteksamineres en klar faglig profil. Programvareutvikling dreier seg om å lage dataprogrammer som er stabile, effektive og brukervennlige levert til rett tid og kostnad. En programvareutvikler må kunne analysere en bedrifts IT-behov og designe en arkitektur for løsningen som skal leveres. Utviklingen av et ferdig produkt består som oftest av programmering, bruk av programvarebiblioteker og integrering mot eksisterende løsninger.

Studiet har derfor hovedfokus på programmering og systemutvikling, men dekker hele spekteret fra tekniske til anvendelsesorienterte datafag. Datatekniske emner som Datakommunikasjon og Operativsystemer skal gi forståelse for den underliggende teknologiske plattformen de ulike systemene kjøres på.  Parallelt med denne teknologiske tilnærmingen utvikles kandidatenes ferdigheter til også å se IT fra et anvendelsesorientert ståsted. Emner som IT-ledelse, Innføring i informasjonssikkerhet, Datamodellering og databasesystemer gir forståelse for IT fra brukernes og oppdragsgivernes ståsted.

Programmeringsferdighetene bygges steg for steg opp gjennom hele studiet i emner som Grunnleggende programmering, Objektorientert programmering, Algoritmiske metoder, Mobilutvikling og Programutvikling. Studentene utfordres til å sette seg inn i ulike programmeringsspråk og det legges vekt på at studentene programmerer mye.

Systemutviklingskompetansen får studentene utviklet gjennom studiet med emnene  Systemutvikling, Ergonomi i digitale medier, WWW-teknologi, Objektorientert systemutvikling og ikke minst Bacheloroppgaven.  Fokus er rettet mot utvikling av helhetlig og profesjonelt anvendbar programvare og favner hele syklusen fra kravspesifisering og løsningsdesign til utvikling av reelle applikasjoner med bruk av moderne utviklingsrammeverk.  Sammenhengen mellom enkeltemnene som inngår i studiet kan betraktes slik :

Emnebeskrivelse  
For hvert av emnene i tabellen under er det utarbeidet en detaljert emnebeskrivelse. Denne gir en beskriver av læringsutbytte og innhold i emnet. Av denne fremgår også om emnet bygger på bestemte forkunnskaper.

Bachelor i programvareutvikling har felles første semester med Bachelor i informasjonssikkerhet og Bachelor i drift av nettverk og datasystemer, og stor likhet med Bachelor i spillprogrammering.  Overgang mellom disse studiene er godt tilrettelagt, forutsatt ledig kapasitet ved de studiene.

Arbeids- og undervisningsformer:  
I studiet er det lagt vekt på at studentene skal erfare et mangfold av arbeids- og undervisningsformer. Gjennom studiet vil de oppleve varierte læringsformer basert på kvalitetsreformen for høyere utdanning.
 

Undervisningsformer som anvendes er:

  •  Forelesninger
  •  Mindre prosjektarbeid og øvingsoppgaver integrert i ordinære emner
  •  Store utviklingsorienterte prosjektarbeider
  •  Mappearbeid og essayskriving

I tilknytning til dette vil studentene også erfare ulike vurderingsformer som dagseksamener, prosjektkarakterer og mappevurdering. 

Tekniske forutsetninger

Det forutsettes at studentene disponerer egen bærbar datamaskin.

Emnetabeller

1. studieår Bachelor i programvareutvikling

Emnekode Emnets navn O/V *) Studiepoeng pr. semester
  S1(H) S2(V) S3(H) S4(V) S5(H) S6(V)
IMT1031 Grunnleggende programmering O 10          
REA1101 Matematikk for informatikkfag O 10          
IMT1121 Innføring i informasjonssikkerhet O 10          
IMT1082 Objekt-orientert programmering O   10        
IMT2243 Systemutvikling O   10        
IMT2431 Datakommunikasjon og nettverkssikkerhet O   10        
Sum: 30 30 0 0 0 0
*) O - Obligatorisk emne, V - Valgbare emne

2. studieår Bachelor i programvareutvikling

Emnekode Emnets navn O/V *) Studiepoeng pr. semester
  S1(H) S2(V) S3(H) S4(V) S5(H) S6(V)
IMT2072 Ergonomi i digitale medier O     10      
IMT2571 Datamodellering og databasesystemer O     10      
IMT2021 Algoritmiske metoder O     10      
IMT2282 Operativsystemer O       10    
IMT2291 WWW-Teknologi O       10    
IMT3681 IT-ledelse O       5    
Valgemne, 5 st.p. V       5    
Sum: 0 0 30 30 0 0
*) O - Obligatorisk emne, V - Valgbare emne

3. studieår Bachelor i programvareutvikling

Emnekode Emnets navn O/V *) Studiepoeng pr. semester
  S1(H) S2(V) S3(H) S4(V) S5(H) S6(V)
IMT3281 Applikasjonsutvikling O         10  
IMT3102 Objektorientert systemutvikling O         10  
Valgemne, 10 st.p. V         10  
IMT3912 Bacheloroppgave IMT O           20
IMT3673 Mobile/Wearable Programming O           10
Sum: 0 0 0 0 30 30
*) O - Obligatorisk emne, V - Valgbare emne

Anbefalte valgemner

Emnekode Emnets navn O/V *) Studiepoeng pr. semester
  S1(H) S2(V) S3(H) S4(V) S5(H)
REA1081 Statistikk V       5  
IMT3441 Database- og applikasjonsdrift V       10  
IMT3591 Kunstig intelligens V       10  
IMT3541 Veiledet praksis i medie- og informatikkfag V       10  
IMT3501 Programvaresikkerhet V         10
SMF1042 Økonomistyring V         10
IMT2531 Grafikkprogrammering V         10
IMT2681 Cloud Technologies V         10
Sum: 0 0 0 0 0
*) O - Obligatorisk emne, V - Valgbare emne