• No results found

Översyn av kursen Programmeringsteknik 1

N/A
N/A
Protected

Academic year: 2022

Share "Översyn av kursen Programmeringsteknik 1"

Copied!
8
0
0

Loading.... (view fulltext now)

Full text

(1)

Översyn av kursen Programmeringsteknik 1

Delrapport 1: Förslag till kursplan och schemaunderlag

Projektgrupp och uppdrag

Med anledning av att kursen Programmeringsteknik 1 fungerat mindre bra under de senaste åren, och särskilt under innevarande läsår, har studierektorsgruppen vid institutionen för

informationsteknologi beslutat om översyn av kursen. Översynen genomförs i projektform med professor Michael Thuné som projektledare. I projektgruppen ingår därtill universitetsadjunkt Anders Berglund, universitetsadjunkt Anna Eckerdal, universitetslektor Olle Eriksson,

universitetslektor Per Wahlund, samt två studentrepresentanter utsedda av UTN. Lärarna i gruppen har samtliga lång pedagogisk erfarenhet med goda vitsord. Berglund, Eckerdal och Thuné bedriver forskning inom datavetenskapens ämnesdidaktik. Eckerdals forskning gäller studenters lärande i inledande kurser i objektorienterad programmering.

Uppdraget är att ta fram en detaljerad plan över vilka moment kursen skall innehålla, vilka undervisningsformer som ska användas, vilka examinationsformer som ska finnas, och en tidsbudget sedd ur studenternas perspektiv. Efter detta är uppdraget att bestämma vilka

programmeringsuppgifter som ska ingå och att utveckla dessa. Speciellt ska beaktas vilka delar som kan vara gemensamma mellan instanserna på olika program och vilka delar som bör skilja sig åt.

Projektgruppen avger härmed sin första delrapport, som utmynnar i förslag till kursplan och schemaunderlag. Som grund för dessa redovisas dels en problemidentifiering, dels

projektgruppens övergripande förslag till hantering av dessa problem. Projektgruppens fortsatta arbete kommer att leda till mera detaljerade formuleringar om pedagogisk inriktning och kursinnehåll, som stöd för de lärare som skall ge kursen. De lärare som skall ge kursen läsåret 2004–2005 kommer också att involveras i projektet, för att projektgruppens tankar skall bli grundligt förankrade.

Problembild

Åtgärder för att förbättra kursen Programmeringsteknik 1 (PT1) måste bygga på en bedömning av vilka faktorer som lett till att den uppfattats som problematisk. Gruppen har därför tagit del av studierektors sammanfattning av de synpunkter som framkommit i kursvärderingar samt i samtal med studenter och programsamordnare. Vidare har flera av gruppmedlemmarna,

inklusive studentrepresentanterna, egna erfarenheter av kursen, som också vägts in. På basis av detta underlag har projektgruppen funnit att problemen kan sammanfattas i följande punkter:

• Bristande motivering. På flertalet utbildningsprogram har studenterna upplevt att de inte fått övertygande motiveringar för varför programmeringsteknik är ett viktigt ämne i deras utbildningsprogram.

• Tempo, nivå och svårighetsgrad. Jämfört med situationen för fem år sedan tycks idag en större andel av studenterna vara renodlade nybörjare på så vis att de inte bara saknar programmeringserfarenhet, utan också saknar kunskap om vad programmering innebär och syftar till. Flera studenter än tidigare upplever därför att programmeringen är en ”ny värld” och att tempot i kursens början därför är för högt. Stoffet upplevs också som svårt och abstrakt, i den meningen att kursen innehåller många nya begrepp.

• Tidsbrist. För att tillägna sig de nya begreppen och bli hemtam i den ”nya världen” krävs tid till eftertanke och övning. Därför är det problematiskt att studenterna pressas av

(2)

fyllda scheman. Det innebär att tiden för övning och reflektion blir otillräcklig. Därtill förläggs dessa aktiviteter till kvällar och nätter, då ingen handledning finns att tillgå. I civilingenjörsprogrammet K tillkommer som en ytterligare komplikation att studenterna förväntas klara 14 poäng under den halva termin när PT1 ges.

• För stort fokus på programmeringsspråket. Problemlösningsaspekten av programmering tycks ha underbetonats. Studenter upplever att det inte har framgått hur man praktiskt angriper programmeringsproblem. Uppmärksamheten har i för hög grad riktats mot att lära sig programmeringsspråket Java.

• Olämpliga undervisningsformer. Det försök med föreläsningar i storgrupp som gjorts under det senaste läsåret har bidragit till att förvärra situationen. Studenterna behöver i större utsträckning få möta lärare och handledare i mindre grupper.

• För stora och komplexa uppgifter. De inlämningsuppgifter som förekommit i kursen är större och mera komplexa än vad som är pedagogiskt motiverat med hänsyn till de givna tidsramarna.

• Formuleringsmässigt komplicerade tentamensuppgifter. Det har funnits en tendens att formulera tentamensuppgifterna på ett onödigt komplicerat sätt. Här avses inte att uppgiften i sig skulle vara för svår, utan att den formulerats på ett komplicerat vis.

Uppgifterna har vanligen inte heller utformats med tanke på att systematiskt testa olika grader av djup i förståelsen.

Det bör avslutningsvis påpekas att en rad bidrag till internationella ämnesdidaktiska konferenser i datavetenskap under senare år har pekat på att studenterna i ökad utsträckning upplever

programmering som ett svårt ämne. Det handlar alltså om ett fenomen som återfinns vid universitet över hela världen. Vid institutionen för informationsteknologi finns vidare en lång tradition och gedigen erfarenhet i att undervisa i grundläggande programmering. Inledande programmeringskurser med likartad utformning som PT1 har givits framgångsrikt och har av studenterna uppfattats som både meningsfulla och roliga. Flera av de problem som vi pekat på ovan innebär eller är resultatet av förändrade förutsättningar, som sammantagna lett till att den etablerade kursuppläggningen inte längre tycks fungera tillfredställande. Hur dessa förändrade förutsättningar skall hanteras är en del av den aktuella ämnesdidaktiska diskussionen inom området.

Förslag till åtgärder: inriktning

Mot bakgrund av ovan nämnda problemformulering föreslår projektgruppen följande allmänna inriktning på de förändringar vi anser är lämpliga. (En mer detaljerad beskrivning av

rekommenderad uppläggning, undervisningsformer, etc, kommer i nästa delrapport, som planeras vara klar före midsommar.) Flera av förslagen nedan bygger på slutsatser från den ämnesdidaktiska forskning som bedrivs vid institutionen och internationellt. Förslagen är vidare i samklang med den långsiktiga strategi för utveckling av programmeringskurserna som hösten 2003 fastställdes av styrelsen för institutionen för informationsteknologi.

Det bör betonas att förslagen handlar just om inriktning. Det vore olyckligt med detaljstyrning. Tvärtom behövs fortlöpande kursutveckling och anpassning till de särskilda förutsättningar som varje ny kombination av studenter, lärare och utbildningsprogram innebär.

Därmed blir det också önskvärt att finna former för fortlöpande diskussion om

ämnesdidaktiska frågor inom lärarkollektivet. Projektgruppen återkommer till detta i en senare delrapport.

(3)

En kurs för olika grupper av studenter, där studenternas förutsättningar och behov är vägledande

För att hantera problemen med motivering, tempo och nivå bör enligt projektgruppens mening undervisningen utformas på ett sådant vis att det skapas ett tydligt sammanhang kring

studenternas programmering. Detta bör göras explicit, så att syftet med kursen framgår klart för studenterna. I genomförandet av kursen måste studenternas förutsättningar och behov vara vägledande.

För att åstadkomma detta föreslås följande åtgärder:

• Mer tid och omsorg åt grundläggande motivering och introduktion. Syftet är att dels sätta in programmeringen i ett för studenterna relevant sammanhang, dels etablera en gemensam grund för alla studenter. Även studenter utan föregående kunskap om datorer och programmering skall kunna förstå denna introduktion. Det innebär bland annat att man inte kan ta för givet att studenterna vet vad programmering är och syftar till, ens i övergripande mening, och att man måste förse studenterna med en enkel modell för hur en dator är uppbyggd och fungerar. Introduktionen bör också belysa att det finns olika angreppssätt i programmering. Denna introduktion bör vara kortfattad, handla om principiella skillnader och ha syftet att belysa bevekelsegrunderna för det

objektorienterade angreppssättet. Vidare bör det göras klart att kursen primärt handlar om programmering och problemlösning, inte om programspråket Java i sig.

• Undervisningsformer med studenternas egen aktivitet i fokus och systematiserad, tät återkoppling. Det går att skilja på kursens ”sakinnehåll” och undervisningens konkreta utformning. Projektgruppen menar att kursplanen för PT1 kan och bör vara gemensam även i fortsättningen. Däremot bör genomförandet inom varje program vägledas av studenternas behov och förutsättningar inom programmet. Detta kan åstadkommas med undervisningsformer där studenternas egen aktivitet sätts i fokus. Studenterna kan med fördel arbeta i mindre grupper, där de kan lära gemensamt. Vidare bör strävan vara att i större utsträckning ordna undervisningstillfällen där studenternas upplevelser av och svårigheter med stoffet blir vägledande för läraren och där läraren alltså inte följer en förutbestämd plan. Slutligen rekommenderas någon form av systematisk, tät

återkoppling, exempelvis veckovisa återkopplingsdokument och/eller återkopplingsmöten.

En kurs om problemlösning, inte om implementering

Ett inslag i problembilden är att kursen kommit att fokusera för mycket på

programmeringsspråket. Detta tycks ha accentuerats vid övergången till Java som det språk kursen baseras på. Därmed belyses implementeringsaspekten av programmering.

Projektgruppen förordar bestämt att istället problemlösningsaspekten skall betonas. Detta bör också bli grundläggande för hur kursen motiveras för studenterna. Att lösa

programmeringsproblem med ett objektorienterat angreppssätt innebär att göra en

begreppsanalys av problemområdet, att identifiera begrepp som är relevanta för den aktuella problemställningen, att klarlägga hur dessa begrepp är relaterade till varandra statiskt och dynamiskt, och att på grundval av denna analys formulera en övergripande lösning till

problemet. På processnivå innebär problemlösningen att i en given problemställning identifiera delproblem, som är hanterbara i den meningen att lösningen till varje delproblem kan

formuleras som en algoritm. Om kursen PT1 inriktas på problemlösningsaspekten av

programmering, så kommer den alltså att ge studenterna verktyg för och träning i denna typ av

(4)

analys och därmed väsentligt bidra till att studenterna övar upp sin analytiska förmåga. Detta kommer att vara värdefullt för dem i många ingenjörsmässiga problemlösningssituationer, även i andra sammanhang än programmering.

För att åstadkomma denna förändring föreslås följande åtgärder:

• Introducera problemlösning redan från kursens början och låt problemlösning genomsyra kursen.

• Träna studenterna i ett systematiskt arbetssätt där man inte sätter sig vid datorn för att implementera ett program utan att först ha analyserat problemet samt skissat och utvärderat en lösning för hand. Detta har den pedagogiska effekten att tydliggöra skillnaden mellan problemlösningsfasen och implementeringsfasen. Dessutom kommer ett sådant arbetssätt sannolikt att medföra att studenterna sparar tid. Lösningsförslagen blir mera genomtänkta än om de växer fram direkt vid datorn och därmed kommer man fortare fram till ett fungerande program.

• Bestäm en lämplig delmängd av Java och klassbibliotek, som blir hanterlig för

studenterna. Även om problemlösningsaspekten skall betonas, så kvarstår behovet att lära sig grunderna i implementering. För att då undvika att alltför mycket tid behöver ägnas åt detaljer i Java krävs att presentationen begränsas till en lämplig delmängd av Java. På motsvarande sätt bör mängden klassbibliotek som används begränsas.

• Använd ett programutvecklingsverktyg som belyser strukturen hos programmen och tonar ner detaljer på implementeringsnivå. Det finns programutvecklingsverktyg, exempelvis BlueJ, som grafiskt visar programstrukturen på en övergripande nivå. Man kan växla mellan att granska programkoden på detaljnivå och strukturen. Med ett sådant hjälpmedel ökar möjligheterna att göra studenterna uppmärksamma på sammanhanget mellan detaljkod, struktur och ursprunglig problemställning. Därför rekommenderar vi att något sådant verktyg används.

Ökat stöd till studenterna samt eliminering av omotiverade komplikationer

Med tanke på tidspressen är det angeläget att studenterna ges ökat stöd samt att komplikationer, som saknar pedagogisk motivering, elimineras. Projektgruppen föreslår härvidlag följande.

• Ändrad utformning av de obligatoriska uppgifterna. För att studenterna skall lära sig programmera krävs övning och olika former av obligatoriska uppgifter är därför ett omistligt inslag i PT1. Projektgruppen menar att dessa bör indelas i två skilda kategorier:

laborationer och inlämningsuppgifter. Laborationsuppgifterna skall vara välavgränsade och syfta till att träna specifika moment. Deras omfång bör vara sådant att en laboration kan utföras under ett schemalagt, handledarlett laborationstillfälle, givet att studenterna gjort nödvändiga förberedelser. Inlämningsuppgifterna syftar till att träna

problemlösning och implementering med utgångspunkt i mera omfattande problemställningar.

Projektgruppen anser att PT1 bör innehålla ett större antal laborationer än hittills.

Inlämningsuppgifterna bör vara få, kanske bara en. Vidare bör de utformas så att det blir större tonvikt på problemlösningsmomentet. Implementeringstekniska komplikationer bör tonas ned. Huvudsaken bör vara att rimliga pedagogiska mål nås, inte att realismen blir maximal. Vidare bör det finnas möjlighet för studenterna att välja mellan olika uppgifter och uppgifterna skall anpassas till de olika studieprogrammens inriktningar.

• Översyn av examinationsformerna.

(5)

• Organiserad hjälpverksamhet utanför normal arbetstid. Det finns behov av att ge studenterna ökat stöd även utanför schemalagd arbetstid. Ett system med jourhavande handledare på kvällstid vore önskvärt. Enkla och billiga åtgärder, exempelvis en lista över vanliga kompileringsmeddelanden och deras innebörder, kan också vara effektiva.

• Systematiska samarbetsformer för studenter. Ytterligare en intressant möjlighet är att hjälpa studenter att hjälpa varandra, genom systematiska former för gemensamt lärande.

Grupparbetsformen ”pair programming” där studenter samarbetar parvis, enligt speciella regler, kring lösningen av programmeringsuppgifter kunde exempelvis vara värd att prova.

Kursplan och schemaunderlag

Ovan redovisade överväganden och förslag ligger till grund för bifogade förslag till reviderad studieplan för kursen Programmeringsteknik 1. Det bör påpekas att en utvärdering av alternativ kurslitteratur pågår. Tills vidare föreslås dock samma litteratur som under de senaste åren.

Schemaunderlaget bygger på antaganden om undervisningsformer. En mera detaljerad diskussion om undervisningsformer kommer att ingå i projektgruppens fortsatta arbete. I föreliggande schemaunderlag görs enbart en grov åtskillnad mellan föreläsning, lektion, laboration och inlämningsuppgift. Med föreläsning avses traditionell föreläsningsform, där skeendet väsentligen följer lärarens i förväg uppgjorda plan.

Med lektion avses undervisningsformer där studenternas aktivitet står i centrum och blir styrande för skeendet. Det vill säga lärarens insatser under pågående lektion är inte

detaljplanerade i förväg, utan anpassas dynamiskt efter studenternas arbete, frågor och

kommentarer. Vi förutser att vi i vårt fortsatta arbete kommer att rekommendera ett flertal olika lektionsformer. Därtill kommer vi att diskutera möjligheten att som ett kompletterande stöd för studenterna införa ”Supplemental Instruction”, som också är en form av lektion enligt

ovannämnda, breda definition. Laboration innebär att studenterna arbetar med

programmeringsuppgifter som är tillrättalagda för att belysa väl avgränsade moment i kursen.

Laborationen genomförs vid ett schemalagt tillfälle med handledare närvarande. Normalt krävs att studenterna i förväg har förberett lösningar, som sedan implementeras och testas under laborationspasset. Efter avslutad laboration genomförs en redovisning, som exempelvis kan bestå i att skriva en laborationsrapport. (En diskussion om alternativa redovisningsformer kommer i projektgruppens fortsatta arbete.)

Slutligen innebär inlämningsuppgift en något större programmeringsuppgift, som ur

studenternas perspektiv har karaktären av projektarbete, på så vis att uppgiften löses i grupp och under längre tid. Till skillnad från laborationerna skall arbetet med en inlämningsuppgift

inbegripa träning i flertalet av kursens moment. Muntlig och skriftlig redovisning ingår vanligen.

En diskussion om schemaunderlaget innebär också med nödvändighet en diskussion om studenternas samlade schemalagda tid, sett över alla kurser som läses parallellt. En rimlig utgångspunkt är att heltidsstudier skall innebära 40 timmars heltidsarbete per vecka. Vidare skall studenterna på denna nivå både tränas i och ges förutsättningar att arbeta självständigt med sina studier. Vidare bör studieprogrammet vara så utformat att det går att förena studier med ansvar för hem och familj, vilket innebär att den som har behov av detta bör kunna förlägga studierna till dagtid. Från dessa utgångspunkter är det inte rimligt med närmare 40 timmars schemalagda aktiviteter per vecka. Det måste finnas utrymme även för det egna arbetet under självständigt ansvar. Vidare måste detta utrymme fördelas rättvist mellan de kurser som går parallellt. En förutsättning för en sådan planering är att det till varje kurs finns en realistisk tidsbudget, där det redovisas hur stor sammanlagd arbetstid studenterna förväntas ägna åt kursens olika moment. Budgeten bör utgå från att varje kurs förfogar över 40 timmar per

(6)

kurspoäng. Projektgruppens förslag kommer i en senare delrapport att kompletteras med en sådan tidsbudget för kursen Programmeringsteknik 1.

Ytterligare en aspekt vid upprättande av schemaunderlaget är kostnaderna för

undervisningen. Vårt förslag innebär större tonvikt på undervisningsformer av lektionstyp enligt ovan. Eftersom detta kan innebära ökade kostnader vill projektgruppen uttala en beredskap att diskutera prioriteringar och anpassningar till givna kostnadsramar. Nedanstående förslag utgår dock endast ifrån vad vi anser vara önskvärt ur pedagogisk synvinkel. Det bör noteras att

kostnad för ”lektion” kan variera avsevärt beroende på vilken lektionsform som väljs och att det därför inte går att direkt göra kostnaduppskattningar på basis av schemaunderlaget.

Efter dessa kommentarer om undervisningsformer, arbetsbörda för studenterna, samt kostnader för bedrivandet av undervisningen, lämnar vi följande förslag till schemaunderlag.

Den schemalagda undervisningen föreslås omfatta 8 föreläsningar, 12 lektioner och 5 laborationer, samtliga à 2x45 minuter. För arbetet med inlämningsuppgift tillkommer ett delredovisningstillfälle (halvdag), slutredovisning (halvdag), samt 4 schemalagda handledningstillfällen 2x45 minuter i datasal.

Projektgruppens huvudförslag är att föreläsningarna genomförs i lektionsgrupp. Om av kostnadsskäl systemet med storföreläsningar bibehålls, så bör särskild möda läggas på utformningen av dessa. Lektionerna genomförs i lektionsgrupp och som redovisats ovan kan lektion innebära en rad sinsemellan olika undervisningsformer där studenternas aktivitet står i centrum. Laborationerna kan lämpligen utföras gruppvis, med två à tre studenter, varför varje laborationstillfälle kan genomföras i lektionsgrupp.

(7)

Programmeringsteknik I, 4 poäng

Computer Programming I 1TD753

Kursplanen är fastställd 2001-05-22 av teknisk-naturvetenskapliga fakultetsnämnden och senast reviderad 2004-xx-yy av teknisk-naturvetenskapliga fakultetsnämnden

Kursens placering i utbildningsprogram Kursen ges inom Civilingenjörsprogrammet Kursen ges inom Högskoleingenjörsprogrammet

Studieperiod Kursen ges i Period 1 Kursen ges i Period 2 Kursen ges i Period 3 Kursen ges i Period 4

Mål för utbildningen

Att ge grundläggande kunskaper och färdigheter i programutveckling med särskild tonvikt på problemlösningsaspekten av programmering, att därigenom ge metoder för och träning i problemanalys av värde för ingenjörsmässig problemlösning i allmänhet, att ge kunskaper om datorsystem och att ge erfarenhet av användning av programvara, främst inriktat mot teknik och naturvetenskap.

Kursens innehåll

Introduktion till programmering: syftet med programmering, programmeringsprocessens faser, programmering satt i sitt sammanhang genom exempel på tillämpningar, kort historik över programmeringsansatser, datorsystemet ur programmerarens synvinkel,

programmeringsmiljöer.

Algoritmer: vad en algoritm är, programmet som algoritm, skillnaden i preciseringsgrad mellan vardagslivets algoritmer och datorprogram.

Grundläggande objektorienterad problemlösning: introduktion till objektorienterad analys och design, begreppen modell, klass, objekt och inkapsling.

Grundläggande datastrukturer, exemplifierade med Java: enkla datatyper och fält.

Grundläggande algoritmelement, exemplifierade med Java: tilldelning, villkor, repetitioner, aritmetiska och logiska uttryck, terminalbaserad in- och utmatning samt filhantering.

Grundläggande objektorienterad implementering, exemplifierad med Java: användning av färdiga klasser, definition av egna klasser och objekt.

Grundläggande programmeringsteknik: systematisk arbetsgång för problemanalys, programdesign, implementering, uttestning, felsökning samt dokumentation.

Användning av grafik och gränssnitt.

(8)

Särskild behörighet

Introduktionskurs i datoranvändning, Grundläggande algebra, Endimensionell analys.

Undervisningsform

Föreläsningar, lektioner, laborationer och inlämningsuppgifter.

Examinationsform

Skriftligt prov. För godkänt betyg fordras dessutom godkända obligatoriska uppgifter och laborationer.

Poängfördelning: tentamen 2 p, laborationer och inlämningsuppgift tillsammans 2 p.

Betyg

Något av betygen underkänd (U), godkänd (3), icke utan beröm godkänd (4) och med beröm godkänd (5).

Övriga föreskrifter

Kursen har tidigare getts som delkurs inom Programmeringsteknik och numerisk analys, 8 poäng, 1TD760.

Kurslitteratur

Skansholm, J.: Java direkt med Swing, Studentlitteratur, 2002.

Nivå

Kursen ges på AB-nivå

Ämne

Kursen ges inom huvudämnet Datavetenskap Kursen ges inom huvudämnet Teknik

Kursansvarig institution

Institutionen för informationsteknologi

References

Related documents

Det säger Amade Sucá, representant för bonderörelsen Unac, nyss hemkommen från Mumbai.. Han och Diamantino Nhampossa representerade där Unac, en bonderörelse som länge kämpat mot

Kursen riktar sig till lärare från samtliga ämnesområden med målet att lära sig mer om hållbar utveckling, att stärka kompetenser för att undervisa om/i hållbar utveckling

Relevansvariabeln visar om innehållet i kommentaren enbart kopplas till ämnet eller till person i artikeln, eller om det också kopplar till något annat som inte tas upp

Något som återfinns hos intervjupersonerna är en tanke om att ”arbetet är inte allt” och att de kan göra andra saker för att undgå att arbeta mer än de själva vill och

Detta kan bero på att Runnström uppskattade smolt-längden från fjäll som tillhörde lekfisk, vilket kanske kunde underskatta smolt- längden då de fjällen var eroderade

Resultaten från min undersökning visar på att den största förändringen från hur lärarna upplever att det var att arbeta innan och efter kommunaliseringen är att de

Arabidopsis thaliana innehar två sirtuiner, SRT1 vars funktion är okänd och SRT2 som har en viktig funktion i energimetabolismen.. thaliana med hjälp av

Madelen berättade att som exempel att på MBE får föreläsaren som föreläser för första gången betalt för förberedelserna, lika många timmar som föreläsningen, t ex 2