HØit Nr. 2-95
Previous article Next article TOC: Nr. 2, 1995 Previous Issue Next Issue About HØit

Et annerledes kurs i programmering - med Visual Basic som plattform


Håkon Tolsby og Reidar Husmo

Programmering - et fag i endring

Programmererens rolle har endret seg de siste tiårene. De hvite laboratoriefrakkene er borte, og programmeringsspråkene og -verktøyene har gjennomgått en rivende utvikling. Mens man for noen år siden kom langt som ekspert i et eller annet programmeringsspråk (Cobol, Pascal og senere C), må de nye generasjonene av programmerere være flerspråklige og kunne beherske mange ulike teknologier som lyd, bilder, video og nettverk. Utviklingsmiljøene er komplekse, og de omfatter et stort sett av verktøy og biblioteker. Dessuten finnes det et tusentalls leverandører av tilleggsmoduler. Programmerere møter også et økende krav til produktivitet, og gjenbruk av egen og andres kode er en viktig ferdighet som må trenes. Det er uholdbart å finne opp hjulet på nytt når det meste av moduler og verktøy allerede finnes som hel- eller halvfabrikata. Med tilgang til Internettet er det lett å hente ned programmer verden over.

Det stilles også nye krav til faglig kunnskap. Teknologisk innsikt er ikke lenger tilstrekkelig. Kunnskap om menneske-maskin-kommunikasjon, analyse av brukerprofiler, design av grensesnitt og prosjektgjennomføring står sentralt i utviklingsprosessen, og overlates ofte til programmereren. Dagens programmerere er en kombinasjon av arkitekt og håndverker. De må ha kunnskap om hele utviklingsprosessen fra problembeskrivelse, planlegging, valg av verktøy, metode, struktur, design og koding.

Likevel er programmeringsfagene som undervises på universiteter og høgskoler relativt statiske. Man underviser i de samme fagene i dag som for 20 år siden, uten å vektlegge den utviklingen faget har gjennomgått og fortsatt gjennomgår.

Ved Høgskolen i Østfold har vi tatt utfordringen og forsøkt møte denne utviklingen. I forbindelse med en revurdering av studieplanen, byttet vi for to år siden ut det tradisjonelle introduksjonskurset i programmering, som var basert på C, med et kurs i "programdesign og prototyping." Dette er et tverrfaglig kurs med flere mål enn å lære studentene å skrive kode. Det skal gi studentene kunnskap om:

  • Grunnleggende begreper og metoder innen programmering
  • Programmering av vindusbaserte systemer
  • Planlegging og gjennomføring av programmeringsprosjekter
  • Design av brukergrensesnitt
I den virkelige verden er kunnskap og erfaring om systemutviklingsprosessen (problemformulering, metodevalg og rapportering) vel så viktig som den teknologiske kunnskapen. Erfaring og kunnskap er to forhold som henger så nøye sammen at man verken kan eller bør skille dem. Derfor bygger vi programmeringskurset rundt tre programmeringsprosjekter som studentene løser i grupper. Vi tror at realistiske prosjekter øker arbeidsgleden og entusiasmen blant studentene, og at det setter faget i et videre perspektiv.

Visual Basic

Visual Basic er et verktøy som gjør det lettere å lage Windows-applikasjoner enn hva vi er vant til fra SDKog ulike C++ kompilatorer. Å lage selve grensesnittet er svært enkelt; brukeren tegner knapper, listebokser og andre elementer på en form. VB genererer selv tomme eventfunksjoner som kalles av brukerens handlinger. Etter at grensesnittet er ferdig utformet, er det programmererens oppgave å fylle eventfunksjonene med fornuftig kode. Denne koden skrives i Visual Basic, som er en Basic dialekt.

Basic har, helt siden dets introduksjon på sekstitallet, vært det programmeringsspråket som alle selvoppnevnte ekspert-programmerere liker å mislike. Kritikken har vært konsentrert på tre felt.

  1. 1. Effektivitet - Ettersom Basic tradisjonelt er et interpretert språk, har det ikke tålt sammenligningen med kompilerte språk, som for eksempel C.

Denne sammenligningen er ikke lenger gyldig av flere grunner. Visual Basic (og andre moderne Basic dialekter) kan kompileres. Moderne maskiner har blitt hurtigere, slik at tiden det tar å oversette fra Visual Basic til eksekverbar kode er sammenlignbart med Windows overheads, og forskjellen blir derfor mindre. Den viktigste forskjellen er allikevel at tiden det tar å utvikle et produkt er minst like viktig som hastigheten på programmet. Dersom en nisje oppdages, kan et VB produkt lages for denne nisjen i løpet av en uke eller to; en tilsvarende applikasjon i VC++ eller Borland C++ vil ta lengre tid, og når disse kommer ut på markedet, må de konkurrere med VB produkter som har lavere utviklingskostnader.

  1. 2. Rikdom - En styrke ved andre programmeringsspråk er at det finnes mange bibliotek med nyttige funksjoner. I tillegg har mange språk tilgang på lavnivåkommandoer, hvilket ofte gjør at slike språk kan kalles `rike'.

VB kan bruke API-funksjoner som er skrevet i andre språk, slik at forskjellen minskes også på dette området. I tillegg har VB et vell av VBXer som forenkler ikke-trivielle funksjoner, som å vise animasjoner, spille lydkutt, eller navigere over Internettet. Basic er fremdeles et uegnet språk til assembler-lik koding som bitmanipulering, men vi mener at dette kompenseres for av de andre høynivåmulighetene VB har og muligheten for API-kall.

  1. 3. Struktur - Basic har vært kritisert for å være et ustrukturert språk.

For de tidligste Basic dialektene var denne kritikken berettiget. goto og gosub kommandoer florerte, else fantes ikke, ei heller while eller repeat løkker. Nyere dialekter av Basic er imidlertid mer strukturerte enn disse tidlige dialektene. Funksjonsbegrepet er nå støttet som andre språk, linjenumre har forsvunnet, og man kan bruke datastrukturer, moduler og andre avanserte programmeringsteknikker.

Kursopplegget

Studentene som begynner ved vårt kurs er en svært heterogen gruppe. Noen studenter har programmert i omlag ti år, mens andre ikke vet hvor `any key' er på tastaturet. Erfaringer viser at studenter uten databakgrunn lett mister oversikten og motivasjonen dersom vi setter i gang med et programmeringskurs i C/C++. En av de største fordelene med Visual Basic er at det er lett å lage applikasjoner som ser profesjonelle ut, og som også er profesjonelle. Vi får på en enkel måte formidlet til studentene hvor morsomt det kan være å programmere.

Kurset bygges rundt tre programmeringsprosjekter. Filosofien er at studentene skal lære programmering utfra en helhetlig prosess som omfatter:

  • Planlegging av et prosjekt og spesifisering av mål
  • Design av grensesnitt og brukerdialog
  • Programmering
  • Rapportering
  • Vurdering i plenum

Studentene skal lære seg prosjektarbeid som arbeidsform, og alle prosjektene gis som gruppeoppgaver. Det er denne arbeidsformen studentene vil møte når de skal ut i arbeidslivet. Vi fokuserer på at prosjektene skal dokumenteres skikkelig, og rapportskriving er et sentralt tema.

En styrke ved det nye programmeringskurset er at studentene kan lage realistiske programmer etter kort tids undervisning. Mens man i et tradisjonelt begynnerkurs i programmering er henvist til å lage enkle programmer, gir Visual Basic muligheten for å lage komplette applikasjoner med et grafisk grensesnitt. Det er enkelt å integrere lyd, video og nettkommunikasjon i programmene takket være et stort sett med verktøy (VBX'er). Det er derfor mulig å gi studentenes prosjekter med et realistisk innhold.

Forelesningene brukes til å styrke det teoretiske grunnlaget og for å sikre en viss bredde i teorien. Vi ønsker å gi forelesningene en form og et innhold som understøtter studentenes prosjekter, og som gir den nødvendige veiledningen til prosjektarbeidet. Forelesningene baserer seg på et stort antall eksempler og problemer, og vi ser på hvordan disse kan løses. Idéen er at studentene forstår mer når de får stoffet presentert i en relevant sammenheng. Forelesningene er også en viktig arena for spørsmål og meningsutveksling, og de brukes til å gi studentene tilbakemelding på prosjektene. Vi velger ut noen studentprosjekter som studentene presenterer i plenum. Svake og sterke sider ved prosjektene diskuteres av klassen, og vi ser på alternative løsninger. Dette er en lærerik prosess både for de som presenterer og for de som hører på.

Vi er opptatt av at studentene skal opparbeide grunnleggende programmeringserfaring i løpet av kurset, og vi bruker mye av forelesningene til å se på programmeringsteknikk (struktur og syntaks). Vi mener det er riktig å fokusere på dette i stedet for alle tekniske muligheter VB tilbyr. Erfaringen er at disse finner studentene frem til på egen hånd, bare man setter dem på sporet.

Studentene blir evaluert med en prosjekteksamen før jul. Denne varer en uke, og studentene får en oppgave fra den virkelige verden som skal løses individuelt: De skal analysere problemet, designe en løsning, implementere denne og skrive en prosjektrapport (eks. på eksamensoppgave: Lage et program for håndtering av deltagere, konkurransegrener, innkvartering og bespisning for Ungdommens Landsturnstevne på Sola).

Erfaringer

Erfaringene med det nye programmeringskurset så langt er meget gode. Studentene får begynne med programmeringsprosjekter når de starter på studiet og stimuleres til å være produktive fra første dag.

Bakgrunnen for at studentene ønsker å studere hos oss er veldig forskjellig. Noen har lang erfaring med programmering, mens andre knapt har tatt i et tastatur. Dette har det tidligere vært vanskelig å håndtere, men gjennom et prosjekt- og problembasert kurs mener vi å frigjøre studentenes kreativitet og motivasjon for studiet. Vi opplever at studentene legger ned mye arbeid i gjennomføringen av prosjektene sine, og selv om vi ikke klarer å følge opp alle (ca. 140 studenter) like godt, får de god erfaring med å analysere problemer, spesifisere mål og med å skrive rapporter.

Studentene er også flinke til å skaffe seg kunnskap på egen hånd, og de er aktive brukere av Internettet. Herfra henter de ned bilder, video og kodebiter som brukes i prosjektene. Det virker som om studentene har et mer nyansert forhold til faget enn tidligere. Det er lettere å få de med i faglige diskusjoner både på forelesninger og i lokale diskusjonsgrupper på nettet.

VB har vært en brukbar plattform for å nå målene med kurset. Det er lett å komme i gang, og det kan brukes til å lage "profesjonelle" applikasjoner på en rask måte. VB har sine klare svakheter, og vi savner blant annet en sterkere objektorientert struktur med muligheter for arv og enkapsulering. Siden målet med kurset ikke er å utdanne VB-programmerere, er vi åpne for nye verktøy når disse kommer.

Den viktigste erfaring vi har gjort oss er kanskje at studentenes resultater i kurset er bedre enn tidligere. Mange av prosjektene studentene leverer i løpet av kurset har høy kvalitet og de er godt dokumentert. Vi ser også at karakterene ligger høyere enn hva vi er vant til (snitt 2,6), og strykprosenten er lav.


Fotnoter:

Software Development Kit. Det første utviklingsverktøyet for windowsapplikasjoner.

VB kompileres til p-kode som må kjøres sammen med et run-time bibliotek. Fordelen med dette er at programmene blir mindre.

Application Programming Interface: Windows API alene inneholder over 500 grunnfunksjoner som kan kalles fra VB. Du kan også skrive egne API-funksjoner i C++, Pascal osv. som legges i dynamisk linkbare biblioteker (DLL).

Visual Basic Extension: Ekstra verktøy til VB. Det finnes et stort antall produsenter av VBX'er (mye som shareware og freeware) som DLL'er.

Previous article Next article TOC: Nr. 2, 1995 Previous Issue Next Issue About HØit
HØit Nr. 2-95


Copyright: 1996, Høgskolen i Østfold. Last Update: 15.07.97, Thomas Malt.