TAG | programmering
13
Interessert i programmering/web/prosjektarbeid – hvilke fag skal du velge?
Innspill: 2 kommentarer · Kategori: Studier · Tagger: databaser, fag, programmering, prosjekt, samhandling, studieleder

Av: Svend Andreas Horgen, studieprogramleder nettbaserte fag, NTNU
Dette blogginnlegget er langt, men trolig oppklarende. Det er myntet på alle som har interesse for et eller flere av temaene programvareutvikling, webutvikling, programmering, informasjonsbehandling og prosjektarbeid. Mange kommer nemlig borti ulike former for utviklingsarbeid i jobbsammenheng, og lurer på hvilke fag de bør ta for å styrke sin kompetanse og evne til å bidra i slikt arbeid. Ved å lese dette blogginnlegget får du en gjennomgang av hva vi tilbyr og hvilke fag som hører godt sammen. Du vil kanskje få noen aha-opplevelser av å lese innlegget. Det er langt, men det er fordi vi har prøvd å tenke helhetlig. Så selv om du kanskje har programmering eller webutvikling som primærinteresse, bør du også lese de andre avsnittene for å sette alt inn i en helhetlig sammenheng. Du som ender opp med å ta bare ett eller noen få fag, kan uansett ha nytte av å kjenne til relaterte områder.
Innhold i dette innlegget
- Programmeringsfag
- Webutviklingsfag
- Databaser og databehandling
- Prosjektarbeid, administrasjon, ledelse og økonomiforståelse
- Andre støttefag
1: Programmeringsfag
Mange som jobber i arbeidslivet med utviklingsprosjekter kan ha nytte av å få en viss forståelse for programmering for å kunne bidra mer konstruktivt i slikt arbeid. Andre ønsker å spisse kompetanse innenfor programmering og jobbe mer eller mindre direkte med programmering. Atter andre igjen ser på programmering som en viktig del av sin faglige portefølje eller ønsker å øke kompetansen for å bedre forstå andre aspekter av IKT.
Vi har mange programmeringsrelaterte fag som tilbys etter- og videreutdanningsmarkedet via http://itfag.no. Her er noen generelle betraktninger om hva du kan velge og litt om sammenhengen mellom ulike fag. Du må nesten tolke dette i lys av dine mål og ønsker. Har du spørsmål utover teksten, så ta kontakt med studieprogramleder Svend Andreas Horgen ved NTNU.
- Grunnleggende programmeringsfag: Hensikten er å introdusere grunnleggende programmeringsteknikker og gi forståelse for hva programmering er. Du lærer konkrete ferdigheter innenfor det aktuelle språket som lar deg skrive egne programmer av en viss kompleksitet. Mange lar det være med det grunnleggende kurset, enten fordi de ikke ønsker mer innsikt i programmering utover grunnleggende nivå, eller fordi det oppleves som faglig tungt. Andre velger å fordype seg i videregående programmering. Vår klare anbefaling er at alle som skal jobbe med IKT har et grunnleggende programmeringsfag i sin portefølje. Det er nyttig i mange sammenhenger.Vi tilbyr følgende grunnleggende programmeringsfag:
- Programmering i Java: Du lærer grunnleggende objektorientert programmering. Du lærer om klasser og objekter i tillegg til løkker, if-setninger, funksjoner og liknende.
- Programmering i Visual Basic: Bruker Visual Studio .NET som utviklingsmiljø, noe som gjør det veldig lett å komme i gang med å lage små programmer. Merk at faget ikke tar opp objektorientering, fordi det kommer først i det videregående faget (Objektorientert programmering med systemarbeid).
- Programmering i C++: Dette er nok det vanskeligste av de tre språkene, men C++ er mye brukt i arbeidslivet. Ved å lære det vanskeligste først som sist, blir mer avanserte språk lettere.
- Videregående programmeringsfag: Du er (som nevnt ovenfor) ikke bundet av å fortsette med det språket du har som grunnleggende språk. Uansett hva du kan fra før kan du relativt «lett» lære et nytt språk. Syntaksen og noe av det nye språkets struktur er riktignok ulikt fra det du kan fra før av, men dette kan du lett lære deg ved å bruke litt tid i starten på YouTube-videoer e.l. Ofte har faglærer lagt opp til en kort repetisjon av språkets syntaks og særegenheter myntet for de som kommer fra andre språk, eller de som trenger en repetisjon. Det viktige er altså å ha forståelse for programmering på riktig nivå som forkunnskap før du starter med et videregående fag.Vi tilbyr følgende videregående programmeringsfag:
- Objektorientert programmering med systemarbeid: Bygger på Programmering i Visual Basic og starter med å ta opp objektorientering, kobling mot databaser og flere avanserte teknikker. Er det eneste faget som ikke er på 5 studiepoeng (det er på 10). Det skal gjøres et større utviklingsarbeid underveis som skal dokumenteres, og dette skjer gruppevis.
- Videregående programmering i Java: Bygger på Programmering i Java. Går i dybden på avanserte objektorienterte teknikker som arv, polymorfi, samarbeid og liknende.
- Applikasjonsutvikling for Android: Dette er et veldig populært fag hvor du lærer å lage apper til Android (mobil/nettbrett). Faget bygger på Videregående programmering i Java og krever i så måte gode forkunnskaper innen Java, så du må ikke melde deg på om du bare har fullført grunnleggende programmering. Du lærer også litt om MVC i dette faget.
- C++ for programmerere: Bygger på forståelse tilsvarende grunnleggende programmeringsfag og at en behersker objektorientering. Både de som har tatt Programmering i C++ og Java kan ta dette. De som har tatt Programmering i Visual Basic + kan grunnleggende objektorientert programmering (for eksempel gjennom Objektorientert programmering med systemarbeid) kan ta dette.
- C#.NET: Gir innføring i C#.NET-utvikling. Forutsetter grunnleggende objektorientert programmering. Altså samme krav som for C++ for programmerere nevnt i punktet over.
- Python for programmers: Faget er på engelsk og krever bare grunnleggende programmeringsforståelse (ikke krav om OOP i forkant, men en lærer det underveis).

Figuren viser at med Java og C++ kan du ta hvilket som helst av de videregående fagene. Visual Basic krever at du først lærer om objektorientering (OOP), typisk ved å ta Objektorientert programmering med systemarbeid, før du kan ta C++ og C#. Python kan tas uten å kjenne til OOP. Android krever at du har kunnskaper tilsvarende Videregående Java.
2: Webutviklingsfag
Ulike former for webutvikling har blitt mer og mer vanlig, og det å beherske webutvikling er et fortrinn. De som vil dypdykke i webutvikling, bør selvsagt strebe etter mest mulig, men også de som jobber med konvensjonell programmering, og de som ikke nødvendigvis skal programmere webløsninger selv, kan ha nytte av å få innsikt i hvilke teknologier som fins og litt om hvordan de virker.
Basisfaget hos oss er Webutvikling 1, som er helt grunnleggende. Webutvikling 2 bygger på Webutvikling 1. Webutvikling 2 går i bredden på mange teknologier, men rekker ikke å gå i dybden på alle. Det er absolutt nyttig, men om du vet at du for eksempel skal dypdykke i PHP eller ASP.NET eller Python eller HTML5, så kan du gå rett til Webprogrammering i PHP eller Webprogrammering i ASP.net eller Webprogrammering med Python eller HTML5 direkte. Du kan selvsagt også ta Webutvikling 2 uansett, men vær da forberedt på noe overlapp med dybde-fagene.
Et annet aspekt av webutvikling er «design». Webdesign kan være mer aktuelt enn en kanskje først skulle tro. Selv om du ikke vil bli hard-core designer selv, kan forståelse for design komme godt med i mange utviklingsprosjekter du deltar i.
Her er en liste av alle webutviklingsfag som vi tilbyr:
- Webutvikling 1: grunnleggende HTML, CSS og liknende. Fokuset er på å lære å lage en statisk webside.
- Webutvikling 2: mer i dybden på hvordan en kan lage et dynamisk nettsted. Fokus er på å kunne forstå ulike teknologier og klare å benytte seg av ferdige løsninger som tilpasses. Slik kan du utvikle større nettløsninger raskt og effektivt og forstå (i bredden, ikke dybden) hvilke dynamiske komponenter som kan inngå i et større nettsted.
- Webdesign: Du lærer teori om utforming av gode webgrensesnitt og websider, du får praktisk trening i CSS og det settes også fokus på universell utforming.
- HTML5: Mange muligheter med dette nye markeringsspråket og en rekke API-er som følger med HTML5
- Webprogrammering i PHP: Serversideprogrammering, lær å lage dynamiske løsninger opp mot en database
- Webprogrammering i ASP.NET: Serversideprogrammering, søsterfag med PHP men rettet mot Microsoft-teknologien .NET
- Webprogrammering med Python: Introduksjon til Python med fokus på webutvikling
3: Databaser og databehandling
De som er interessert i programmering og webutvikling, bør også lære seg noe om databaseteori og systemutvikling. Typisk:
- Databaser: Fordi de aller fleste programsystemer lagrer informasjon i en database.
- Databaser 2: Fordi jo mer databaseteori du kan, jo smartere kode vil du utvikle (siden du gjør mer avanserte operasjoner på databasenivå).
- XML-teknologi: Nyttig å kjenne til fordi det brukes som datautvekslingsformat mellom ulike applikasjoner, til eksport av data og for å representere data generelt sett. Dette gir også økt forståelse for metadata og databehandling generelt sett.
- Big data: Bearbeiding av store datamengder blir stadig mer relevant. Du lærer å forstå forretningsverdien av «big data», og noen konkrete teknikker for å behandle slike.
La oss dvele litt mer med hvorfor databaseteori er relevant i forbindelse med programmering. Informasjon som mates inn i et programsystem må lagres et sted. Dette gjelder uavhengig av om en programmerer for web eller et lager et frittstående program (PC/Mac/Linux) eller en app (mobile enheter). Informasjonen kan lagres i en filstruktur, eller i en database. Databaser er veldig utbredt, særlig i større systemer. Ved å forstå teori tilsvarende faget Databaser (og gjerne også Databaser 2) vil du få et helt annet syn på programmering og databehandling, og kan utvide programmeringsferdighetene dine til å nå et helt annet nivå. Derfor er det lurt å ta Databaser i parallell med programmering, eller å ta programmering først og så lære om databaser etterpå. Lærer du databaseteori først uten å kjenne til programmering eller databehandling, så kan lærestoffet virke noe teoretisk og kryptisk. Du får best utbytte om du kan lese databaseteori i lys av din forståelse for programmering/webutvikling.
4: Prosjektarbeid, administrasjon, ledelse og økonomiforståelse
Du deltar trolig i mange prosjekter gjennom din yrkeskarriere. Noen som prosjektdeltaker, andre som prosjektleder. Hvordan jobbe godt med IKT-prosjekter spesielt og prosjekter generelt (der IKT-støtte kan være en suksessfaktor)? Vi tilbyr noen interessante fag for deg som ser verdien av formalisert kompetanse på dette:
- Teamarbeid: Grunnleggende om å jobbe effektivt og godt sammen i grupper. Nyttig både i fag som krever gruppearbeid og i prosjekter i arbeidslivet. Dette faget legger opp til nettbasert gruppearbeid.
- Datastøttet samhandling: Bli enda bedre til å samhandle, samarbeide effektivt med moderne verktøy og gjennomføre prosjekter. Dette faget legger opp til nettbasert gruppearbeid.
- Samhandlingsplattformer med Sharepoint: Belyser typiske problemstillinger som må håndteres ved tilpasning av samhandlingsplattformer i organisasjoner. Siden Sharepoint er så utbredt, brukes det som case. En del utviklingsprosjekter er relatert til informasjon som allerede eksisterer i Sharepoint, så dette kan være et sentralt fag for mange. I tillegg er fokuset også på generell samhandling.
- Organisasjon og ledelse: Ved å forstå organisasjonsstrukturer, kultur og kommunikasjon i organisasjoner, samt endrings- og ledelsesprinsipper, får du et bedre grunnlag til å jobbe effektivt med andre.
- IT-strategi i organisasjoner: Gir et overordnet blikk som er viktig for å forstå behovet for endring i lys av eksisterende systemer. Setter fokus på IKT sin rolle i forretningsprosesser, ERP-systemer, outsourcing, sammenhenger mellom IT-strategi og forretningsstrategi, overordnede planer for innføring av nye IT-løsninger og liknende. Faget er IKKE bare for de med lederambisjoner!
- Økonomiforståelse: Fag som Økonomisk styring og regnskap og Bedriftsøkonomi kan være nyttig også for personer med utviklerkompetanse. Får du opprykk til en mellomleder eller lederstilling? Det å ha grunnleggende økonomiforståelse er ikke bare gull verdt, men nesten en forutsetning. Skal du noen gang starte egen bedrift? Gull verdt. Også mer spesifikke fag som Markedsorientert produktutvikling og Entreprenørskap kan vurderes.
- Sosiale medier: Dette er et fag som i utgangspunktet gir innsikt i forretningsmessig bruk av sosiale medier. En lærer mye om ulike Web 2.0-tjenester. Men de som kan programmering vil få et nytt perspektiv på sosiale medier i tillegg til det forretningsmessige, som kan berike webprogrammeringskunnskapene. Det å få erfaring med nye tjenester øver nemlig evnen til å tenke nytt om brukergrensesnitt og funksjonalitet på web. Det er lettere å få innsikt i hvordan slike tjenester må være konstruert for å virke rent teknisk, når en blir vant med å prøve dem i praksis.
- Økonomisk analyse med regneark: Dette faget kunne vært listet opp under programmeringsfagene, men siden fokuset er på anvendelse av regneark i en økonomisk sammenheng, nevnes det her i stedet.
5: Andre støttefag
Til slutt er det verdt å nevne noen «mykere» fag som en hard-core programmerer kanskje først tenker på som tørre og kjedelige og teoretiske. Slike kan likevel være nyttige, og de er spesielt nyttige for de som deltar i ulike former for IKT-relatert prosjektarbeid/utviklingsarbeid.
- Informasjonsforvaltning: Hvordan informasjon kan forvaltes i en bedrift.
- ITIL v3: Forstå tjenesteadministrasjon og kontinuerlig tjenesteforbedring med tilhørende prosesser og funksjoner. Før noe skal utvikles, er det greit å sette dette i en sammenheng med eksisterende tjenester.
- Eventuelt et eller flere grunnlagsfag for å forstå datakommunikasjon, operativsystemteori, datasikkerhet og liknende.
- IT, miljø og samfunn: Mange stusser over at jeg tar med dette faget, men ikke kims av et fag som IT, miljø og samfunn! Det er høyst relevant og tar opp temaer som er «tunge» å sette seg inn i på egenhånd, men som kan være veldig kritiske å overse i et utviklingsarbeid. Les følgende utvalgte læringsutbytter fra emnebeskrivelsen, og du ser kanskje hvorfor det er relevant for de som vil øke kompetanse innen utvikling av datasystemer:
- har kjennskap til aktuelle retningslinjer og lovverk knyttet til utvikling, anskaffelse, innføring og bruk av IKT data og datanettverk (for eksempel: personvern, universell utforming, offentlig anskaffelse, sertifisering, arbeidsliv, Copyright & Creative Commons (CC))
- har kunnskap om lover knyttet til bruk av data og datanettverk
Oppsummering
Hensikten med dette innlegget er ikke å selge inn flest mulig fag til de som har lyst til å lære mer om utvikling (programvareutvikling, webutvikling, programmering, informasjonsbehandling og/eller prosjektarbeid). Men faktum er at mange som har slike interesser, med fordel kan vurdere å ta ett eller flere relaterte fag i tillegg til det en først tenkte på. En «utradisjonell» kompetansesammensetning på din CV kan utgjøre den lille forskjellen som gjør at du får jobb, eller som gjør at et prosjekt lykkes. Forståelsen blir bedre jo flere aspekter en ser tilknyttet utviklingsarbeidet. Selv hard-core programmerere kan ha nytte av å kjenne til prinsipper for ledelse, prosjektstyring, økonomi og strategier for databehandling. Vi understreker at ikke alle bør ta alt. Du kan være veldig verdifull om du velger bare litt, eller ønsker å gå i dybden på bare et utvalgt område. Men for de (stadig flere) som ønsker hybridkompetanse, vil gjennomgangen over forhåpentligvis være oppklarende. Hovedrådet blir: Ta det du synes høres mest interessant ut, og som du tror blir nyttig i din nåværende eller evt. kommende jobb.
Ytterligere spørsmål kan rettes til studieprogramleder Svend Andreas Horgen, eller til hver enkelt faglærer som underviser de ovennevnte fagene.
Dette innlegget har 2 kommentarer. Gjerne bidra :-)
29
HISTIV – en ny form for undervisning
Innspill: 1 kommentar · Kategori: Studier · Tagger: 3d, bacheloroppgave, e-læring, læring, programmering, prosjekt, studentbidrag
Av: Andreas Kristensen
Dette innlegget tar for seg en bacheloroppgave som ble gjennomført ved Høgskolen i Sør-Trøndelag våren 2015, med det formål å utforske muligheter til å skape en mer variert studiehverdag for nettstudentene ved HIST.
Bakgrunnen for prosjektet
En gang på midten av nittitallet startet HIST med sin nettbaserte undervisning. Dette var naturlig nok et internett ganske så ulikt det vi har i dag, uten læringsplattformer, som It’s learning. Få sosiale medier. Og ikke minst maskinvare og en båndbredde på internett, som ikke ga store rom for krevende multimedia.
Vi kjenner alle til hva som har foregått i de to påfølgende tiårene: Web 2.0 har ankommet og spredd seg til alle kroker av verden. Samtidig ser More’s lov ut til å holde stand (selv om en del regner med at den vil dø i løpet av det neste tiåret), og utviklingen på maskinvare utvikler seg videre i en voldsom fart.
Og adopsjonen av teknologien og de påfølgende tjenestene som oppstår er overveldende. Den jevne borger har i dag gjerne en rekke tjenester inkludert i sine daglige rutiner, enten det nå er mail, en blogg som skal oppdateres eller en video som skal deles på snapchat.
Men hva så med de akademiske kretsene, og nærmere bestemt fjernundervisningen ved HIST? I undervisningssammenheng benytter mange av fagene en klassisk modell, hvor man leser en gitt mengde lærestoff i en tekstfil og utfører en tilhørende oppgave. Dette er selvsagt en arbeidsmetode for studenter som har vært benyttet i lang tid, og er velfungerende.
Men i 2015, bør ikke undervisningen også kunne være noe mer? Bør ikke læring også kunne nyte godt av den teknologiske utviklingen? Som SSB viser avbryter om lag en av tre påbegynte studier, og for enkelte studier er prosentandelen alarmerende høy. Samtidig viser politikerne at de er åpne for å diskutere straffetiltak ved høye frafall.
Den nettbaserte undervisningen er praktisk, fordi man plutselig muliggjør studier fra stort sett hvor som helst, så lenge det finnes internett. Men sammenliknet med tradisjonell undervisning på campus, har den også unike utfordringer. Særlig er dette knyttet til økt ansvar for egenarbeid og ofte lavere terskel for absolutte tidsfrister. Studentene kan i større grad bestemme selv når de fullfører lesing og arbeidskrav, noe som fører med seg både frihet og ansvar. Videre vil det for mange nettstudenter vil det ikke knyttes like sterke bånd til faglærere og medstudenter, som ved studier der man kan møtes ansikt til ansikt på daglig basis. Slike faktorer bidrar til at også nettstudier sliter med frafallstallene.
Det å benytte teknologien
Men så er spørsmålet om man kan benytte den teknologien som nå finnes på en bedre måte? Kan man hjelpe studentene, da særlig nettstudentene, til å få en mer variert og motiverende studiehverdag?
Ved HIST har man oppdaget dette behovet for lengst. Svend Andreas Horgen, Studieleder for «itfag» og Bachelor i Informatikk med spesialisering i Informasjonsbehandling, jobber med tiltak for å gjøre undervisningen mer variert og interaktiv for studentene. Dette innbefatter produksjon av video som supplement eller erstatning til tekstlig lærestoff, webinarer og mooc.
Det er også her HISTIV-prosjektet kommer inn i bildet. HISTIV står for HIST Interaktiv Veiledning, og er en applikasjon, som har som formål å skape en mer variert og interaktiv måte å lære på. Applikasjonen er først og fremst rettet mot nettstudenter, men vil kunne være et meget nyttig supplement også for campus-studenter.
I utgangspunktet tar HISTIV det samme lærestoffet som i dag blir presentert i tekstlige leksjoner for nettstudenter, og benytter moderne teknologi til å presentere stoffet på en ny måte. Man kan benytte tekst, lydfiler, statisk grafikk, animert grafikk og til og med 3D-modeller for å presentere lærestoffet, og har tilgang til flere ulike typer oppgaver som kan integreres i leksjonene. HISTIV er også bygget fullstendig modulært, hvilket vil si at en faglærer står helt fritt til å velge hvilke funksjoner som skal inkluderes i en gitt leksjon. La oss se raskt på litt av funksjonaliteten som allerede er inkludert i HISTIV.
Kombinasjonen av lyd, tekst og grafikk
Som i vanlige tekstlige leksjoner eller lærebøker, innehar HISTIV selvsagt verktøy for å presentere selve lærestoffet. Dersom faglærer ønsker det kan dette gjøres via enkel tekst, men HISTIV støtter også innspilling av lydfiler med tilhørende underteksting, hvor lærestoffet blir presentert mye på samme måte som på en tv.
Figur 1: Skjermdump fra en leksjon om variabler i Visual Basic. Meny til venstre, underteksting nede til høyre.
Denne metoden åpner opp mye av skjermen, noe som gir muligheten for plass til flere grafiske elementer som kan understøtte læringen. Samtidig har HISTIV også støtte for å oppdatere og eventuelt animere grafikken. I figur 1 ser vi et eksempel der grafikken benyttet er en oppstilling over vanlige datatyper i Visual Basic. Området kan også fint benyttes til bilder og annen grafikk.
I kategorien for lyd og bilde bør det også nevnes at HISTIV har støtte for visning av video, slik at man kombinere tekstlig innhold med videoinnhold i samme leksjon om dette er ønskelig.
Standard oppgaver
HISTIV støtter også to kjente og mye brukte former for oppgaver: flervalgsoppgaver og inndataoppgaver. I figur 2 ser vi et eksempel på gjennomføring av en flervalgsoppgave fra en leksjon om if-setningen i Visual Basic. HISTIV lar oss også benytte verktøy som lyd og grafikk til å manipulere flervalgsoppgaven. I figur 2 ser vi en animert pil, som benyttes i kombinasjon med en lydfil, til å forklare hvorfor svaralternativet brukeren klikket på var feil. Dette er med på å gi økt læringsverdi, fordi det er viktig å forstå ikke bare at man valgte feil alternativ, men også hvorfor. Ønsker man derimot ikke en slik funksjonalitet på en gitt oppgave, kan man fint la HISTIV ta seg av jobben og gi brukeren en standard tilbakemelding i stedet.
Figur 2: Flervalgsoppgave i HISTIV.
I inndataoppgaven handler det ganske enkelt om å komme frem til det riktige svaret. Det er støtte for flere aksepterte svaralternativer og visning av hint til brukeren.
Den virtuelle verdenen
HISTIV har også muligheten for konstruksjon av såkalte virtuelle verdener, som benytter 3D-modeller til å forme interaktive landskap brukeren kan navigere i og manipulere. La oss for eksempel si at man har et fag som omhandler fysisk og logisk datasikkerhet. Med HISTIV kan man bygge et interaktivt kontorlandskap som brukeren kan benytte seg av i læringen. Oppgaver kan her for eksempel være knyttet til det å sjekke bygningens serverrom for svakheter i sikkerheten, eller kontrollere hvor vidt de ansatte benytter sterke nok passord på arbeidsstasjonene sine.
En slik tilnærming vil låne enkelte elementer fra dataspill, men vil samtidig være fokusert på læring. Man får muligheten å tilby studentene en mer variert og visuell tilnærming til lærestoffet, med langt større muligheter for umiddelbar tilbakemelding på de handlingene man foretar seg i den virtuelle verdenen. Merk dog, at som med alt annet i HISTIV, trenger man ikke benytte en virtuell verden om det ikke finnes hensiktsmessig for lærestoffet.
I figur 3 ser vi et eksempel på en virtuell verden, i dette tilfellet fra leksjonen om if-setningen i Visual Basic. I denne oppgaven står brukeren ovenfor en utfordring, der vedkommende må skrive en kodestruktur som får de to fontenene til å fungere. Brukeren skriver inn kode, og HISTIV gir tilbakemelding på de inndata som gis, for å veilede brukeren videre gjennom lyd og undertekst.
Figur 3: Oppgave tilpasset en leksjon om if-setningen.
HISTIV i dag og HISTIV i morgen
Det vi har sett på så langt summerer hoveddelen av funksjonaliteten i HISTIV etter endt bachelorperiode, og undertegnende mener den oppfyller hensikten med oppgaven, nemlig å lage et system som demonstrerer et alternativ til kun tekstlige leksjoner og lærebøker. Samtidig har HISTIV fokus på at selv om læringen gjøres mer interaktiv, og det lånes elementer fra dataspill, skal læringen selvsagt være effektiv og på et pedagogisk nivå som tilfredsstiller høyskolen.
Veien i det videre arbeidet med HISTIV kan spre seg i flere retninger. En mulighet er knyttet LMS, og implementere funksjonalitet som forum, opplasting av filer og ulik funksjonalitet knyttet til student administrasjon for faglærere og administratorer.
Utvidelse av den eksisterende funksjonaliteten vil selvsagt også være naturlig. Særlig vil det være spennende å utvide HISTIV sin mulighet for å vurdere inndata fra brukeren for å gi gode tilbakemeldinger basert på det brukeren foretar seg i applikasjonen.
En annen mulighet knytter seg til implementering av socket server, som vil gi HISTIV mulighet for sanntidskommunikasjon. Dette kan være knyttet til økt kommunikasjon gjennom for video og chat, for eksempel for gjennomføring av webinarer i HISTIV. Det er også mulig å koble sanntidskommunikasjon opp mot virtuelle verdener. Dette kan åpne for utfordrende oppgaver, hvor to eller flere studenter kan møtes i den virtuelle verdenen for å diskutere problemstillinger og finne løsninger.
Mulighetene videre er mange, og noe av styrken for en applikasjon tilknyttet en institusjon som HIST, er at det kan finnes gode løsninger blant både studenter og fagpersoner. Har du noen forslag eller meninger, så legg gjerne igjen noen ord i kommentarfeltet under.
Dette innlegget har 1 kommentar. Gjerne bidra :-)
27
Faglærer forteller om Python
Innspill: 1 kommentar · Kategori: Intervju · Tagger: nyhet, programmering
Programmering med Python (5 studiepoeng, IFUD1050) er et nytt fag vi tilbyr i vår, med påmeldingsfrist 1. februar. Vi snakket med faglærer Claus Schive for å lære mer om Python.

Claus Schive, faglærer i Python
Hva er Python?
Python er et objektorientert programmeringsspråk startet av Guido van Rossum i 1989 og er utviklet som et fri programvare-prosjekt. Python har en lettlest og klar syntaks. I Python deles koden opp etter innrykk og ikke etter spesialtegn som }, noe som skal gjøre det lettere og raskere å skrive programmer. I tillegg finnes også et antall tredjeparts utvidelser fritt og åpent tilgjengelig.
Hvorfor er Python relevant?
Python er et utbredt og kraftig språk som brukes av både forskningsgiganter, IT-bedrifter som Google og filmstudioer. Det er også veldig intuitivt og enkelt å lære. Programmeringsspråket er egnet for de fleste oppgaver og er populært blant annet for bruk på web og innen vitenskap. Python er egnet for hurtige og dynamiske utviklingsprosesser og en kan bruke webrammeverk som tillater smidig og fleksibel utvikling.
Hvordan kommer faget til å være lagt opp?
Faget Programmering med Python har et omfang på 5 studiepoeng. Det er 8 leksjoner med lærestoff og til hver leksjon er det tilknyttet en praktisk programmeringsøving. Faget avsluttes med en større prosjektøving/case og flervalgseksamen på nett (digital eksamen). Prosjektet krever at man planlegger og utvikler en større webløsning.
Kan du si litt om deg selv og din bakgrunn?
Jeg har mastergrad i IT fra Høyskolen i Østfold 2006 og har arbeidet for det meste i privat næringsliv.
Hvis du er nysgjerrig på Python, så les mer detaljert om faget her.
Dette innlegget har 1 kommentar. Gjerne bidra :-)
3
2. års dataingeniør på tur til Espoo (SaSeRoS 2013)
Innspill: Comments off · Kategori: Campus · Tagger: IP, programmering

Av: Grethe Sandstrak, høgskolelektor, underviser programmeringsfag
For 3. gang har våre dataingeniørstudenter fått anledning til å delta på SaSeROS, et av EU sine mange Socrates/ Erasmus Intensive program (IP). I perioden 7. april – 20. april 2013 var ca 70 studenter og 12 lærere fra fem ulike universitet/ høgskoler i Europa samlet ved Helsinki Metropolia University of Applied Science for å jobbe sammen innen området «Safe and Secure Robots based on Open Source Software». Fra HiST deltok 14 studenter og 2 lærere (Grethe Sandstrak og Tore Berg Hansen, AITeL)
De deltakende institusjonene er Høgskolen i Sør-Trøndelag, Avdeling for Informatikk og e-Læring (Norge), Metropolia University of Applied Science (Finland), Hogeschool van Amsterdam (Nederland), Universitat Politècnica de València (Spania) og Hochschule Bonn-Rhein-Sieg (Tyskland).
I to uker har studentene fått nyttig faglig input gjennom forelesninger og gode erfaringer med å jobbe i flernasjonale team for å løse en spesifikk oppgave: utvikle en rengjøringsrobot med fokus på sikkerhet.
Det som gjør slike prosjekter så spesielle er at både forelesere og studenter kommer fra ulike kulturer og jobber intensivt i to uker. De ulike nasjonale gruppene har forskjellige måter å jobbe på både gjennom forelesninger og i team-sammenheng. Det mest opplagte problemet å peke på er selvfølgelig språkbarrierer, siden all kommunikasjon må foregå på et annet språk enn eget morsmål (engelsk). Etter lange dager med intensive forelesninger og teamarbeid blir man ganske sliten. Det er anstrengende å hele tiden måtte kommunisere på engelsk både i læringssituasjon og i sosial sammenheng. Det positive er at man kjapt forbedrer språket når man må praktisere det store deler av tiden – øvelse gjør faktisk mester! Som lærer og observatør var det for eksempel interessant å etter et par dager observere norske studenter diskutere tekniske løsninger seg imellom på engelsk, uten å ha utenlandske tilhørere.
Andre ting å peke på er forelesningene som varte 3.5 – 4 timer sammenhengende hver dag, med kun én innlagt pause. Våre studenter er nok vant med kortere økter og mer interaktivitet og ikke så mye enveis kommunikasjon som de fleste foreleserne mer eller mindre la opp til.
Jeg vil også trekke fram teamsamarbeidet. De deltakende studentene kom ikke bare fra ulike universitet, men også litt ulike fagområder og ulike årskull. Det var lagt opp til at teamene skulle jobbe etter agile-prinsipper (elementer fra SCRUM). Dette er en måte å jobbe på som gjør at alle teammedlemmene må involvere/ engasjere seg i teamets arbeid umiddelbart. Arbeidsoppgaver og teamets framdrift visualiseres ved hjelp av enkle hjelpemidler som for eksempel post-its.
Opplevde vi så noen kulturelle forskjeller i teamarbeidet? Vi opplevde selvfølgelig at studentene hadde ulike personlige egenskaper som vi nok ikke kan knytte opp mot bare kulturelle forskjeller: Noen tok raskt lederansvar, mens for andre falt det mer naturlig å innta andre roller. Utover dette observerte vi noen interessante ulikheter. Det viste seg blant annet en forskjell i hvordan studentene reagerte dersom de sto fast ved et problem. Her sto AITeL-studentene fram som gode problemløsere, de tok raskt tak i problemene og prøvde å finne praktiske løsninger. Våre erfaringer fra tidligere IP-er og andre sammenhenger støtter også dette inntrykket. De er praktiske, selvdrevne og gode problemløsere. Et annet poeng som bør nevnes er at AITeL-studentene var et steg foran når det gjaldt det å bruke samhandlingsverktøy, som for eksempel github, for å gjøre det enklere å dele programkode og sikre at alle i teamet hadde tilgang til siste versjon av de ulike dokumentene. Fordeling av arbeidsoppgaver var også litt interessante, de tyske studentene var for eksempel raskt ute til å ta på seg oppgaver innen modellering og skrive spesifikasjoner.
Alt i alt har det vært to innholdsrike uker, studenter og lærere har i tillegg til alt det faglige også utvekslet kunnskap om hverandres kultur og erfaringer som de vil ta med seg tilbake til sin utdanningsinstitusjon. På mange måter kan man si at dette prosjektet er et ypperlig bidrag til å øke forståelse og toleranse på tvers av landegrenser i Europa.
Deltok du på denne turen som student? I så fall er det hyggelig om du legger igjen en kommentar om hva du synes og hvilket utbytte du fikk!
Dette innlegget har Comments off. Gjerne bidra :-)
20
Tur til Østerrike – IP i Dornbirn
Innspill: Comments off · Kategori: Campus · Tagger: IP, programmering, studenter


Av: Grethe Sandstrak og Bjørn Klefstad
I uke 5 og 6 har 15 dataingeniørstudenter og 3 lærere fra Avdeling for Informatikk og e-Læring deltatt for andre gang på intensivprogrammet «Serious Games on Safety Procedures on Industrial Plants». Vi har deltatt sammen med studenter og lærere fra 3 andre høgskoler/ universitet i Europa (IT Carlow – Irland, Hogeschool van Amsterdam – Nederland, og Fachhoch schule Vorarlberg – Østerrike). Årets vertskap er Fachhochschule Vorarlberg som ligger like ved Bodensjøen midt i Europa. Liechtenstein, Sveits, Tyskland og Italia er bare en liten kjøretur unna.
Prosjektet støttes gjennom EU’s Socrates/ Erasmus Intensivprogram (IP) – Life Long Learning og studentene som deltar får også studiepoeng for deltakelsen. Avdeling for Informatikk og e-Læring ved HiST er koordinator for IP’en, og har dermed det overordnede ansvaret for alt av rapportering, økonomi, samarbeid institusjonene imellom og selve gjennomføringen.
IP’en er todelt –1 uke med forberedelser ved egen institusjon og 2 intensive uker ved vertskapets institusjon.
Vi ankom Dornbirn, Østerrike søndag 27. januar og ble møtt av et fantastisk landskap med høye fjell og snø overalt. Det var nesten så vi følte oss hjemme. Mandags morgen ble alle samlet til et første møte og vi var til sammen 57 studenter og 8 lærere fra de fire høgskolene. Formiddagen gikk med til informasjon, et par forelesninger og til å bli bedre kjent med hverandre gjennom enkle teamøvelser. Etter lunsj var det studentenes tur til å holde presentasjoner da arbeidet som var gjort i hjemmeuka i det enkelte landet skulle presenteres for de andre. Siste del av dagen ble brukt til å dele seg inn i nye, internasjonale team og bli kjent innad i teamet.
Oppgaven som hvert enkelt team skulle løse i løpet av disse to ukene var å programmere et seriøst spill for en industriell partner. Den industrielle partneren, Vorarblerg Kraftwerke Illwerke inviterte oss derfor på en omvisning ved sin hypermoderne kraftstasjon som sto ferdig i 2007. Kraftverket har som arbeidsoppgave å stabilisere det europeiske nettverket av kraftlinjer, slik at man til enhver tid produserer like mye kraft som det er forbrukt. Det betyr at kraftverket må produsere strøm eller forbruke strøm avhengig av behovet og være i stand til å endre produksjonen i løpet av minutter. Andre typer kraftverk tar seg av basisproduksjonen av kraft, men har ikke samme muligheten til å endre produksjonen så raskt. Andre kraftverk tar seg dermed av basisproduksjonen av kraft, mens Illwerke sørger for de siste justeringene slik at det til enhver tid produseres like mye kraft som det forbrukes.
Med dette som utgangspunkt begynte de ulike teamene med idemyldring for å komme opp med mulige ideer til et seriøst spill. Disse ble presentert for en tilhører fra Illwerke som ga tilbakemeldinger på hvorvidt det fra oppdragsgiverens ståsted, var gode ideer eller ikke. På bakgrunn av tilbakemeldingene fra kunden (Illwerke) valgte de ulike teamene hvilken idé de ønsket å jobbe med videre. Etter en meget intensiv 5 dagers periode, hadde alle teamene klart å få ferdig en spillbar prototype av spillet sitt. Viktig suksessfaktor for at teamene faktisk kom i mål med prototypen på såpass kort tid, var at de kjørte en organisert og strukturert prosess med fokus på arbeidsoppgaver og framdrift. Elementer fra modellen SCRUM ble brukt for å få dette til.
Deretter samlet vi alle deltakere til en spillekveld der alle lærere og studenter fikk teste ut prototypen til de ulike teamene. Dette ble en meget vellykket aktivitet der de ulike teamene inspirerte hverandre og vi hadde mye moro sammen. En representant fra oppdragsgiveren (Illwerke) var også til stede og han ga verdifulle tilbakemeldinger fra kundens ståsted på de ulike spillene. Illwerke uttrykte stor begeistring for resultatet som studentene hadde fått til så langt, men hadde også en del verdifulle tilbakemeldinger om ting som burde endres og tips til forbedringer og elementer som kunne legges til. De siste par dagene ble ganske hektiske med finpussing av de enkelte spillene før de skulle presenteres og leveres i sine endelige versjoner siste dagen.
Etter endt IP sitter oppdragsgiver igjen med syv ulike spill programmert på bakgrunn av syv ulike ideer. Studentene sitter igjen med ny lærdom knyttet til spillutvikling, bruk av SCRUM, prosjektstyring, engelsk som arbeidsspråk og ikke minst hvordan det er å arbeide i et internasjonalt team. Ulikheter i personlighet, bakgrunn, kultur, arbeidsmetoder og arbeidsforhold gir kontinuerlig en rekke utfordringer som må håndteres fortløpende.
På bakgrunn av de observasjoner som ble gjort i løpet av de to ukene vil vi benytte anledningen til å skryte av våre studenter for måten de håndterte disse utfordringene på. HiST-studentene var svært aktive gjennom begge ukene og deltok like gjerne på muntlige presentasjoner som i arbeidet ellers.
Helt til sist kan vi nevne et av svarene vi fikk på studentevalueringen som vi synes oppsummerer IP’en på en bra måte: FUN FUN FUN!
Dette innlegget har Comments off. Gjerne bidra :-)
8
Ukens tips: Visual Studio-popout
Innspill: Comments off · Kategori: Tips og triks · Tagger: effektivitet, programmering, studentbidrag, tips
Mange av våre studenter programmerer i Visual Studio i fag som Programmering i Visual Basic, C#.NET og liknende. Via Facebooksiden til itfag fikk vi et tips fra student «Jakobsen, 3NAD» som sier følgende:
Til dere som bruker VS2K10, går an å dra ut kodevinduene av parent.
Dette synes vi var en smart løsning, og deler det derfor her (etter avtale med studenten). Visual Studio tar i utgangspunktet veldig mye plass. Det geniale med å dra kodevinduet ut av Visual Studio-miljøet, er at da kan en gjøre slik studenten har vist på bildet over, nemlig stille opp lærestoff/øvingsoppgave på en side og kodevinduet på den andre siden. Dermed kan en programmere mer effektivt selv på små skjermer.
Har du andre Visual Studio-tips, så del gjerne her!
Dette innlegget har Comments off. Gjerne bidra :-)
29
Pakke: Programmeringsfag
Innspill: 3 kommentarer · Kategori: itfag · Tagger: fag, pakke, programmering

Av: Svend Andreas Horgen
Programmering er viktig i dagens IT-bransje. Det kan være vanskelig å velge fokusområde. Her er en kort gjennomgang og oversikt over ulike programmeringsfag vi tilbyr, og noen ord om hva du lærer og hva som kan være lurt å ta.
Innføringsfag, krever ingen forkunnskaper
I disse fagene skal du lære grunnleggende prinsipper for programmering. Uavhengig av programmeringsspråk må du som skal programmere lære om variabler, datatyper, løkker, arrays (tabeller, matriser), funksjoner (metoder) og liknende. Det får du gjennom innføringsfagene.
- Programmering i C++: C++ har en syntaks som er småvanskelig å lære seg. C++ er mye brukt i bransjen og dersom du kan C++ vil du lett kunne lære andre språk senere. Faglærer: Ole Christian Eidheim.
- Programmering i Visual Basic: Dette språket er laget av Microsoft og har en noe særegen syntaks. Fordelen er at det er lett å jobbe i Visual Studio (utviklingsmiljøet) og lett å komme i gang. Faget tar ikke opp noe objektorientering, da det heller tas opp i det videregående faget Objektorientert programmering med systemarbeid (se nedenfor). Faglærer: Svend Andreas Horgen.
- Programmering i Java: Du lærer grunnleggende objektorientert programmering. Du lærer om klasser og objekter i tillegg til løkker, if-setninger, funksjoner og liknende. Faglærer: Vuokko-Helena Caseiro.
Visual Basic er nok enklest av de tre innføringsfagene. Java har noe høyere vanskelighetsgrad enn Visual Basic, men det gir et perfekt grunnlag for videre fag om objektorientert utvikling og mange i bransjen i dag etterlyser Java-kompetanse. Programmering i C++ er (etter min mening) vanskeligst, men veldig nyttig å kunne. Det er ikke noe minus å beherske C++ i dag. Tvert i mot. Det går an å ta flere av disse, men det er noe smør på flesk å både ta VB, Java og C++ så jeg anbefaler heller å fokusere på et av dem og gå i dybden på noe annet.
Videregående fag innen Microsoft-verdenen
Dette er fag du kan ta for å lære mer programmering utover det innføringsfagene tar opp. Du trenger ikke å ha tatt Visual Basic for å fortsette med et av disse, men må da bruke litt tid på å orientere deg i Visual Studio.
- Objektorientert programmering med systemarbeid: Dette er på 10 studiepoeng, og er et oppfølgerfag til Programmering i Visual Basic. Det fortsetter der Visual Basic-faget slapp, og går over på objektorientering, kobling mot databaser og liknende. MERK: Tar du både Visual Basic og dette faget får du totalt 15 studiepoeng og en relativt grundig innføring i databasedrevet programmering og forståelse for utvikling av et større system. Faglærere: Atle Nes, Tore Mallaug og Nils Tesdal.
- C#.NET: programmering med C#. Forutsetter kunnskap innen objektorientering. Faglærere: Mildrid Ljosland og Grethe Sandstrak
Videregående fag innen Java-verdenen
Det å dypdykke i Java er ikke dumt. I IT-bransjen er det stor etterspørsel etter dyktige Java-utviklere. I disse videregående fagene lærer du mer programmering utover det innføringsfagene tar opp.
- Videregående programmering i Java: Går i dybden på avanserte objektorienterte teknikker som arv, polymorfi, samarbeid og liknende. Faglærer: Nils Tesdal.
- Applikasjonsutvikling for Android: krever gode programmeringskunnskaper i Java. Dette er et veldig populært fag men en må ikke kaste seg uti det uten å ha nok forkunnskaper. Du lærer å lage apper til Android (mobiltelefoner). Du lærer også litt om MVC i dette faget. Faglærere: Mildrid Ljosland og Tomas Holt.
Andre videregående programmeringsfag
Her er en oversikt over noen fag som ikke klassifiseres som Java eller Microsoft:
- C++ for programmerere: En introduksjon til C++ for de som allerede kan et annet objektorientert språk fra før av. Faglærer: Else Lervik.
Nyttige støttefag
De som er interessert i programmering bør også vurdere å lære seg noe om databaseteori og systemutvikling. Typisk:
- Databaser: Fordi de aller fleste programsystemer lagrer informasjon i en database.
- Databaser 2: Fordi jo mer databaseteori du kan, jo smartere kode vil du utvikle (siden du gjør mer avanserte operasjoner på databasenivå).
- Teamarbeid: Grunnleggende om å jobbe sammen i grupper
- Eventuelt et eller flere grunnlagsfag for å forstå datakommunikasjon, operativsystemteori, datasikkerhet og liknende.
Web-programmering
Dersom du har interesse av programmering opp mot web, så les
blogginnlegget om webfagene våre. Vil har nemlig både PHP, ASP.NET, HTML5, Python og mer til.
Hvilket programmeringsspråk liker du best?
Dette innlegget har 3 kommentarer. Gjerne bidra :-)
19
Enkel PHP templatemotor basert på bufring av utdata – En testdrevet tilnærming
Innspill: 1 kommentar · Kategori: Data og teknologi · Tagger: enhetstesting, php, programmering
Av: Kim Betti, systemutvikler og tidligere student ved HiST
Det er god skikk å separere presentasjon og forretningslogikk. Dersom en klarer å skille disse klart fra hverandre på en ryddig måte oppnår man en del fordeler som vil gjøre koden enklere å videreutvikle og vedlikeholde.
- Designere som jobber med sidens utseende kan gjøre jobben sin uten å rote i forretningslogikken som ligger bak siden.
- Logikk og presentasjon kan utvikles uavhengig av hverandre så lenge ikke kravene til hva som skal presenteres endres.
- Det blir mye enklere å legge til alternative presentasjonsformer. Det er ofte aktuelt å presentere samme data som HTML, PDF, regneark samt en rekke andre forskjellige formater.
Raskt oppsummert: Datamodellen generert av forretningslogikk bør kunne presenteres på forskjellige måter uten at det krever endringer i logikken som genererer dataen. For eksempel: Kode som er ansvarlig for å hente en liste over kalenderavtaler bør ikke vite noe som helst om avtalene den henter skal presentere en liste med avtaler som HTML, RSS eller iCal!
I dette innlegget skal jeg gå gjennom hvordan en kan med en testdreven tilnærming implementere en templatemotor basert på bufring av utdata med en testdreven tilnærming. For å ikke drukne innlegget i kode har jeg bare plukket ut de mest relevante bitene. Resten av koden ligger på GitHub.
Noen få ord om meg – Jeg er utdannet treårig dataingeniør ved Høgskolen i Sør-Trøndelag og jobber nå som systemutvikler i Oslo. Det siste semestret på høgskolen var jeg studieveileder i nettfaget “Webprogrammering med PHP”. Selv om jeg til daglig jobber mest med integrasjon og Java-teknologier var det morsomt å kunne bidra med et PHP innlegg til denne bloggen!
Veldig kort om testdrevet utvikling (TDD)
I testdrevet utvikling legger en vekt på å skrive testene først. Dette tvinger en til å tenke på hva en vil oppnå med koden før en begynner med løsningen. Testdrevet utvikling består av to små steg som vi gjentar om og om igjen.
- Det første steget er alltid å skrive en test som feiler. Ved å skrive en slik test har vi bestemt hva koden skal gjøre for oss og hvordan grensesnittet skal se ut. Dette betyr ikke at vi nå har fryst programmeringsgrensesnittet for endringer! Testdrevet utvikling legger opp til at en hele tiden forbedrer grensesnittet etterhvert som vi lærer mer om implementasjonen og problemområdet / domenet vi jobber i. Testene vi allerede har skrevet vil passe på at vi ikke bryter kode som har fungert når vi gjør disse endringene.
- Steg nummer to er å implementere kode som tilfredsstiller testen vi nettopp skrev. Når testen gir oss grønt lys går vi tilbake til punkt nummer en og skriver en ny test som feiler. Se på grønne tester som en tillatelse til å skrive ny kode.
Disse to stegene repeterer vi helt til vi har implementert ønsket funksjonalitet og en pen og vedlikeholdbar implementasjon. Hver gang vi har implementert ny eller refaktorert eksisterende kode passer vi på å kjøre alle testene slik at vi er sikker på at de siste endringene vi gjorde ikke bryter ting som har fungert.
En myte rundt testdrevet utvikling er at det er unødvendig arbeid som reduserer produktiviteten. Dette kunne ikke være lengre fra sannheten! Det tar litt ekstra tid i starten mens man venner seg til denne måten å jobbe på, men jo lengre man praktiserer dette desto større blir utbyttet!
- Det viser seg at kode som er lett å teste veldig ofte er god kode. Den er ofte veldefinert, gjør ikke mer enn den skal og har få avhengigheter. Det blir rett og slett for mye jobb å skrive kode med unødvendige avhengigheter dersom en skriver testen først.
- Testene fungerer som dokumentasjon. Testene viser hvordan klasser skal brukes og hvordan de skal oppføre seg. Problemet med kommentarer i kildekode og på papir er at de ikke oppdateres sammen med koden. Disse har en lei tendens til å bli utdatert og dermed lyge om systemet. Kode kan være misledende, men den lyger ikke! Dette betyr også at testkode ikke er annenrangs kode, testkoden er minst like viktig som produksjonskoden og må vedlikeholdes på samme måte!
- De fanger regresjoner. Dette er en av de største fordelene med enhetstester! I et system med god testdekning kan en trygt gjøre optimaliseringer og legge til ny funksjonalitet uten å være redd for å introdusere feil. Dette er helt uvurderlig i et hvert system av litt størrelse, spesielt for nye utviklere som ikke kjenner systemet!
Det er mye mer til testdrevet utvikling enn hva jeg kan ta for meg i dette innlegget. For alle som holder på med programmering vil jeg på det sterkeste anbefale å lese mer om temaet på nett og i bøker. Bøker og artikler er bra, men det beste en kan gjøre for å lære mer er rett og slett og sette i gang selv!
Templatemotor – Presentasjon av data
Nok introduksjon, la oss begynne med implementeringen av templatemotoren. Som nevn er fokuset i dette innlegget presentasjonsdelen, altså steget der vi tar en datamodell og gjør det om til noe som kan presenteres for en bruker.
Vi begynner med en veldig enkel HTML template som kun består av en HTML tagg og en variabel.
<title><?php echo $title; ?></title>
Nedenfor er et eksempel på en test vi kan skrive. Dette er en relativt stor enhetstest, i praksis skriver en som regel flere og mindre tester, men det blir for omfattende for dette innlegget. Jeg har plukket denne testen fordi den demonstrerer prinsippene godt. Hele testklassen ligger her.
public function testSimpleTemplate() {
// Oppsett av koden vi vil teste
$view = new View("data/simple-view.php");
// Sender data inn
$view->set("title", "Hello World!");
// Utfører en handling
$renderedHtml = $view->render();
// Verifiserer oppførsel
$this->assertEquals(
"<title>Hello World!</title>",
$renderedHtml);
}
Alle testmetoder i PHPUnit begynner med prefikset test
. Resten av metodenavnet bestemmer vi selv og bør si noe om forventet oppførsel som testes.
Testen ovenfor viser strukturen i en typisk enhetstest. Vi starter ofte med å sette opp grunnlagsdata som brukes til å gjøre noe med systemet før vi verifiserer systemets respons til handlingen vi utførte. De fleste testrammeverk gir støtte for dette gjennom forskjellige assert metoder. Den siste linjen i denne testmetoden verifiserer at teksten "Hello World!"
har blitt satt inn i title
taggen. Dersom denne antakelsen viser seg å ikke stemme vil testrammeverket feile denne testen.
Legg merke til at vi enda ikke har skrevet kode som faktisk gjør det vi ønsker! Men vi har allerede bestemt en del ting. Vi har for eksempel funnet ut hvordan vi vil at programmeringsgrensesnittet skal se ut. Dersom vi er fornøyd med dette grensesnittet i testen, vil vi forhåpentligvis også være fornøyd med det når vi senere skal ta det i bruk i logikken.
Min personlige erfaring er at det å skrive tester først veldig ofte leder meg til et bra grensesnitt. Vær dog oppmerksom på at det ikke nødvendigvis leder direkte til det “beste” grensesnittet! Det beste grensesnittet er noe en bare kan krype nærmere og nærmere gjennom mange rundturer med testing, implementering og refaktorering!
En annen ting det er verdt å legge merke til er at grensesnittet ikke er spesielt knyttet opp mot HTML. Når (om) det blir aktuelt å legge inn støtte for forskjellige formater vil vi kanskje finne ut at API-et vi har nå er for enkelt. Kanskje vil vi gjøre om klassen View
til et grensesnitt (interface) med forskjellige implementasjoner som HtmlView
og PDFView
..? Kanskje finner vi ut at vi trenger å skille datamodellen fra View
i en egen klasse..? Med tester på plass kan vi trygt eksperimentere med forskjellige løsninger uten å være redd for å bryte eksisterende kode så lenge en hele tiden jobber i små inkrementelle steg støttet av tester!
Nedenfor er en metode fra klasen View
som testen ovenfor tester. Resten av klassen ligger som vanlig på GitHub.
public function render() {
// Start output buffering
ob_start();
// Pakk ut innholdet av arrayet `vars`
// slik at de blir tilgjengelig som vanlige variable
extract($this->vars);
// Importer templaten
require($this->viewFile);
// Returner data vi har fanget
return ob_get_clean();
}
Dette er et veldig mye brukt mønster i PHP rammeverk. Vanligvis vil all ut-data fra PHP script bli sendt i en datastrøm til brukerens HTTP klient (nettleseren) etterhvert som scriptet kjøres. Det output buffering gjør er å fange ut-data i et buffer i minnet istedenfor å sende det rett ut på nettverket.
Dette trikset kjøper oss en del fleksibilitet på bekostning av litt høyere minnebruk. Med dette på plass blir det mye enklere å implementere funksjonalitet som komprimering, mellomlagring / cache og ikke minst testing!
Lenker:
- Full kildekode: https://github.com/kimble/simple-php-template-engine
- Installasjon av PHPUnit: http://www.phpunit.de/manual/current/en/installation.html
- Støtte for PHPUnit i Netbeans: http://netbeans.org/kb/docs/php/phpunit.html
Dette innlegget har 1 kommentar. Gjerne bidra :-)
6
En HTML5-basert app som bruker device access data
Innspill: 4 kommentarer · Kategori: Data og teknologi · Tagger: HTML 5, mobil, programmering

Av: Svend Andreas Horgen. Høgskolelektor. Underviser i HTML5
Er det mulig å lage HTML5-baserte app-er som konkurrerer med dedikerte app-er utviklet for Android, iOs og Windows?
Visste du at moderne nettlesere på mobile enheter har tilgang til fysisk maskinvare som GPS, aksellerometer, gyroskop, kompass, kamera og liknende? Det kommer stadig bedre støtte for å aksessere maskinvare gjennom API-er også direkte i nettleseren, via JavaScript og HTML5. Dette kan webutviklere benytte seg av for å lage bedre og mer spennende mobile webløsninger.
Her er en veldig enkel demo-app hvor en logo flyttes rundt avhengig av hvordan telefonen holdes:
Du kan også teste koden på din egen mobile enhet (testet på iPhone sin Safari, men skal i teorien fungere også på Chrome og Opera)
Hva skal til for å lage en slik app? Du trenger:
- en ny html-fil som starter med koden
<!doctype html>
for å varsle fra til nettlesere som forstår HTML5 at dette er en HTML5-side - et bilde med en id som vi kan vise til med JavaScript-kode
- span eller div-elementer som har id-er vi kan vise til med JavaScript-kode
- En liten JavaScript-kodesnutt som hele tiden lytter etter (og fanger opp) nye data sendt fra enheten gjennom hendelsen
DeviceOrientation
- En liten JavaScript-kodesnutt som bruker dataene slik vi vil, for eksempel ved å endre pikselverdiene til logoen i DOM slik at ny pikselverdi tilsvarer tallverdiene snappet opp fra enhetens orientering
Vil du se hele koden, så gå til denne siden og velg «vis kildekode», eller se på kildekoden direkte på denne siden.
Ser du for deg andre ting vi kan lage med HTML5? Hvilken rolle tror du HTML5-apper vil spille i fremtiden?
Dette innlegget har 4 kommentarer. Gjerne bidra :-)
5
Ruby on Rails + Studentprosjekt = Sant
Innspill: 2 kommentarer · Kategori: Data og teknologi · Tagger: programmering, ruby on rails, studentbidrag, Web
Studentene Eirik Smedsrud og Knut Hellik Kvale har startet et prosjekt som har til hensikt gjøre billettformidling for mindre arrangører enklere, raskere og billigere. Programmeringsspråket Ruby on Rails. I dette innlegget kan du også lese litt om Ruby on Rails.
Studentene ønsker kontakt med ressurspersoner som synes prosjektet er interessant, dette være seg studenter, lærere eller andre.
De to studentene fikk også tildelt gründerstipend på 50.000,- og er blant de 6 nominerte i Midt Norge i forretningsplankonkurransen Venture Cup. Vi gratulerer!
Hva er så Ruby on Rails? Studentene forklarer at Ruby on Rails består av programmeringsspråket Ruby og rammeverket Rails. Ruby dukket opp som et dynamisk objektorientert språk i Japan på midten av 90 tallet, med inspirasjon fra Perl, Smalltalk, Eiffel og Lisp. Yukihiro Matsumoto hadde et ønske om å gjøre programmering intuitivt og morsomt og på denne måten lette hverdagen for alle frustrerte kodere rundt om i verden.
Det blir ofte sagt at Ruby har noe humant ved seg, så lenge en forstår engelsk kan en forstå store deler av Ruby syntax ved å lese det som vanlig engelsk. 5.times { print «Iskrem og sitronbrus» } vil som man kanskje forstår printe ut “Iskrem og sitronbrus” 5 ganger. Altså et språk designet med mennesket i fokus, ikke datamaskinen.
Rails er et rammeverk laget for å lette utviklingen av webapplikasjoner. David Heinemeier Hansson er mannen bak Rails, som ble unnfanget samtidig som han jobbet på Basecamp (prosjektstyringsverktøyet fra 37Signals). Første utgave av Rails kom i 2004, men fikk først skikkelig tyngde i 2006 da Apple valgte å integrere Ruby on Rails med Mac OSX Leopard.
Ruby on Rails er den mest kjente kombinasjonen med Ruby som språk, men det finnes mange andre varianter med forskjellig fokus. Tanken bak er den samme: øke produksjonshastigheten på web applikasjoner ved å legge et rammeverk med føringer for utviklingen i bunn. Det genereres også mye ferdig kode, spesielt i områdene som kommuniserer med databaser. Ruby on Rails har alltid hatt en kjent 5 minutters tutorial hvor man i løpet av – ja, 5 minutter – har en fungerende web applikasjon for å katalogisere platesamlingen sin online.
Stadig flere tar steget over fra andre språk som PHP til Ruby on Rails da fordelene stadig blir større. Twitter, Groupon og Shopify er noen av de større aktørene som benytter seg av Ruby on Rails.
Har du interesse av å få en liten innføring til Ruby on Rails på denne bloggen?
Dette innlegget har 2 kommentarer. Gjerne bidra :-)
6
Bloggkavalkade 2010
Innspill: 2 kommentarer · Kategori: Campus, Data og teknologi, FoU, itfag, Læring · Tagger: AITeL, oppsummering, programmering, Teknologi
Godt nyttår til alle våre lesere! I 2010 etablerte vi denne bloggen. Dekan Per Borgesen understreket i det første innlegget hva vi vil med bloggen: «Dele av vår kompetanse i et åpent og sosialt medium», og «lage en blogg med itfaglige tema som varierer både i bredde og dybde». Statistikk fra bit.ly og Google Analytics viser at vi får stadig flere lesere. Noen innlegg har en del kommentarer og dialog, men vi vil gjerne ha enda flere innspill. En god blogg må engasjere og være levende. Er vi på riktig vei? Her er en oppsummering av innleggene fra 2010.
Teknologi
Vi har skrevet flere innlegg som går i dybden på teknologi. Atle Nes skrev tidlig om formater, nettlesere og avspillere i HTML5 video på web. HTML5 er på full fart inn og vi jobber med å få inn mye HTML5-stoff i fagporteføljen vår.
Tor Ivar Melling har skrevet ikke mindre enn tre tekniske og konkrete innlegg om virtualisering:
Bjørn Klefstad er sertifisert kursholder i FITS og har forklart hva FITS og ITIL er. FITS er utviklet spesielt med tanke på IT-drift i skoleverket, og etter endt kurs i FITS kan man ved hjelp av små ressurser komme i gang med å omorganisere driften av skolenes IT-systemer.
Per Borgesen bruker iPad, og det gjør resten av dekanene ved HiST også. Per har ikke spist mange epler før. Hans erfaringer med iPad som produksjonsverktøy som ikke-Apple-mann er derfor ekstra interessante (garantert «unbiased»). Innlegget har for øvrig blitt mye sitert i sosiale medier. Du skal ikke se bort fra flere innlegg i tiden fremover om iPad, andre nettbrettløsninger, iPhone og Android. Vi har faktisk et helt nytt fag om mobil utvikling klart. Mer om det senere i januar.
Programmering
Vi har mange ansatte som underviser i programmeringsfag. Mildrid Ljosland har skrevet flere lærebøker i programmering. Det er snart kommunevalg, og Mildrid er tidlig ute. Har du tenkt på hvordan en må tenke for å utvikle en algoritme for mandatfordeling i kommunevalg?
Else Lervik er også programmeringsbok-forfatter, og har skrevet en fin oppskrift for hvordan de som kan Java lett kan komme i gang med C-programmering. C og C++ er fortsatt mye brukt.
Vi vil dele på denne bloggen. Ikke bare kunnskap, men også nyttige tips, triks, ressurser og liknende. Svend Andreas Horgen forklarer hvordan Stack overflow fungerer. Dette er en nyttig sosial webtjeneste for programmeringsinteresserte, og det er for øvrig lenke til blogginnlegget fra både Ajax-fagrommet og PHP-fagrommet.
Du finner et godt eksempel på hvordan kommentarfeltet i en blogg kan brukes til fruktbar dialog, i innlegget om vakker bruk av strstr() i PHP (av Svend Andreas Horgen). Når vi skriver innlegg på denne itfag-bloggen, setter vi stor pris på tilbakemeldinger, synspunkter, refleksjoner, ideer og tanker som gir merverdi til det opprinnelige innlegget. Først da fungerer bloggen som en arena for gjensidig læring – noe som er et viktig mål for oss. Les gjerne raskt gjennom innlegget og kommentarene, så ser du hvordan en god diskusjon kan berike et blogginnlegg.
Læring
Vi er opptatt av læringsmiljø og god bruk av IKT i undervisningen. Vi har nylig etablert et aldri så revolusjonerende undervisningsrom som heter P-lab, hvor studentene er i sentrum. Per Borgesen, Geir Maribu, Greta Hjertø og Svend Andreas Horgen har skrevet flere innlegg med erfaringer fra rommet og refleksjoner rundt nye former for læring:
- PC på forelesning (Per)
- AITeL bygger nytt undervisningsrom (Geir)
- Plab – forelesning forbudt (Geir)
- En ny – og bedre måte å undervise på? (Greta)
- Tett på studenten, vurdering og læringsutbytter (Geir)
- P-lab > K-aud (Svend Andreas på sin egen blogg)
I både nettbasert og campusbasert undervisning har vi en del prosjektarbeid hvor studenter jobber i grupper. Tore Mallaug har mange konkrete erfaringer om hvordan en bør sette sammen prosjektgrupper for å få best mulig læring og resultat.
Vi satser for tiden mye på bruk av video i undervisningen. Per Borgesen har reflektert omkring hvorvidt studentene vil ha podcast som støtte i undervisningen. Det er mange muligheter, men også noen problemstillinger som må tas i betraktning, for eksempel opphavsrett, kvalitet og tilgjengelighet.
Forskning og utviklingsarbeid (FoU)
AITeL, TISIP og NTNU har utviklet en ny samhandlingsmetodikk for utvikling av e-læringsopplegg. Tor Atle Hjeltnes har skrevet om erfaringene med den såkalte CCeD-modellen.
Thorleif Hjeltnes har lang erfaring innen e-læring og har ledet en rekke store FoU EU-prosjekter. Han har reflektert rundt bærekraftig e-læring. Vi er store i Europasammenheng og har gjennom 20 år hatt et bærekraftig e-læringstilbud med nettbasert undervisning gjennom det som i dag heter «itfag».
Stipendiat Knut Arne Strand leser hundrevis av artikler i forbindelse med doktorgradsarbeidet. Hvordan holde styr på kildene når han selv skal skrive artikler? Hans anbefaling er verktøyet Zotero.
Vi har et sterkt forskningsmiljø omkring visualisering og 3D/4D. Tomas Holt har forklart hva bevegelsesfangst og visualisering av menneskelig bevegelse i sanntid er. Vi forsker mye på 3D-visualisering og utvikler blant annet et lavkosttilbud for å gjennomføre «motion capture».
Ymse
Vi har et stort fagtilbud og mange studenter. Selv om noe kan automatiseres er det behov for en god og smidig administrasjon. Førstekonsulent Ingrid Island har skrevet om hva som skjer bak kulissene for at itfag skal fungere, og det er interessant og nyttig lesing.
Vigdis Skogly skrev et bloggintervju med den nye studielederen Svend Andreas Horgen. Han har ansvar for itfag og det nettbaserte tilbudet, og jobber selv fra distanse (Skien).
Thor Olsen har lest mye om sosiale medier, med fokus på hvordan sosiale medier kan være avgjørende for forretningen. I innlegget hans finner du mange gode kildehenvisninger til videre lesing.
Før studentene kunne ta juleferie, var det eksamenstid. Selv om vi er moderne på e-læring, er vi nokså konservative på eksamensgjennomføring (noe som har mange årsaker). Bloggåret 2010 ble avsluttet med noen eksamenstips for skriftlig eksamen (av Svend Andreas Horgen).
Veien videre
Godt nytt år fra alle oss på Avdeling for Informatikk og e-Læring ved Høgskolen i Sør-Trøndelag. Vi kommer til å skrive mye på bloggen fremover. Ambisjonen er daglig (ukedager). Håper du som leser vil følge ivrig med og gi kommentarer/innspill, og slik bidra til å gjøre denne bloggen enda bedre.
Dette innlegget har 2 kommentarer. Gjerne bidra :-)
8
Stack Overflow: genial ressurs
Innspill: 2 kommentarer · Kategori: Data og teknologi · Tagger: programmering, tjeneste

Av: Svend Andreas Horgen, høgskolelektor og faglærer i programmeringsfag
Stack Overflow er en meget interessant hybrid-løsning mellom forum, FAQ og Digg. Brukerne er med på å gi stemmer til spørsmål og svar. Særlig "svar" er interessant. En diskusjonstråd kan ha mange mulige svar, men når den som først stilte spørsmålet finner ut at "dette var et bra svar" kan det markeres på en spesiell måte. Dermed blir nettstedet en verdifull arena for utviklere som trenger hjelp og søker løsninger. … Les resten av innlegget for tips til bruk av denne nyttige tjenesten
Dette innlegget har 2 kommentarer. Gjerne bidra :-)
13
Vakker bruk av strstr() i PHP
Innspill: 11 kommentarer · Kategori: Data og teknologi · Tagger: php, programmering, triks

Av: Svend Andreas Horgen, høgskolelektor, faglærer i PHP, forfatter av phpbok.no
Dette innlegget beskriver en snedig måte å bruke PHP-funksjonen strstr() på. Ja, en kan rett og slett si «vakker» bruk av strstr(). La oss si at du ønsker å sjekke for eksempel mimetypen til en opplastet fil, og vil godta flere typer. Går dette an å gjøre det på en enkel måte? Tenk over hvordan du ville gått frem for å løse dette før du leser videre.
Mange synes det er morsomt å programmere litt «out-of-the-box», så la oss se hvordan vi kan tenke alternativt og kanskje få en liten aha-opplevelse på kjøpet … les resten av innlegget
Dette innlegget har 11 kommentarer. Gjerne bidra :-)
16
C for Java-programmerere
Innspill: Comments off · Kategori: Data og teknologi · Tagger: C, Java, programmering

Av: Else Lervik, førstelektor og faglærer i programmering og databaser
Mange nyutdannede programmerere behersker Java. Hva gjør du når du blir konfrontert med et C-program som det skal legges inn endringer i? For ordens skyld: Dette blogginnlegget handler ikke om C++ (som er en objektorientert utvidelse av C). Det meste som sies her er imidlertid også sant for C++, men med C++ kommer det mye mer.
Det som nok vil ta mest tid, er forskjellen i grunnfilosofien bak de to språkene. C passer ikke like godt på deg som Java. Det vil si at du får færre feilmeldinger. Ting som Java-kompilator eller -tolker fanger opp, blir oversett av C. I stedet får du logiske feil eller intetsigende meldinger som det kan være svært vanskelig å finne ut av. Tanken i C er at en programmerer alltid vet hva han/hun gjør, og derfor må få lov til å gjøre det (for eksempel å skrive utenfor en tabellgrense), så sant det er teknisk mulig. … Les resten av innlegget for en rekke tips…
Dette innlegget har Comments off. Gjerne bidra :-)
24
Mandatfordeling i kommunevalg: algoritme
Innspill: 1 kommentar · Kategori: Data og teknologi · Tagger: algoritme, matematikk, programmering, samfunnet

Av: Mildrid Ljosland, førstelektor og faglærer i programmeringsfag
Neste år er det kommunevalg igjen, og når stemmene er talt opp, skal representantene fordeles på de ulike partiene. Hvis du tror det er så enkelt som at partiene får like stor andel av representantene som de har fått andel stemmer (at 30% av stemmene gir 30% av representantene), må du tro om igjen. Så enkelt er det ikke. Valgloven spesifiserer en måte å beregne representantene på som gir en morsom utfordring til den som skal programmere en slik beregning.
Ifølge valgloven skjer fordelingen på følgende måte: Først beregnes antall listestemmer hvert parti har fått. Antall listestemmer for et parti er antall stemmer det har fått multiplisert med antall representanter som skal velges, justert for eventuelle endringer foretatt på stemmeseddelen (vi ser bort fra slike endringer her).
Etter at antall listestemmer er funnet, deles dette tallet på henholdsvis 1.4, 3.0, 5.0, 7.0, 9.0 osv. Det foretas like mange divisjoner som det er representanter som skal velges, og resultatene kaller vi fordelingstall. Denne beregningen av fordelingstall gjøres for alle partiene. Og så plukker vi ut fordelingstallene i rekkefølge, det største først, og tildeler tilhørende parti en representant for hvert tall. Hvordan programmere dette? … Les resten av innlegget
Dette innlegget har 1 kommentar. Gjerne bidra :-)