Hej! Här kommer datorteknikgruppens slutrapport. Då vi inte hade bra möjligheter att arbeta med ett och samma textredigeringsverktyg, presenterar vi rapporten i råtextformat, och hoppas att det går bra ändå. Den i dokumentet utlovade bilagan med kursberoendegraf kommer så snart vi rättat några felaktigheter som upptäckts i sista minuten. Mvh Jonas Vasell för DT-gruppen i Bologna-projektet --------------------------------------------------------------------------- - Slutrapport från arbetsgruppen för datortekniska kurser i Bologna-projektet =========================================================================== Som en del i den så kallade Bologna-anpassningen av civilingenjörsutbildningarna vid Chalmers har vi studerat hur utbildningen i datortekniska ämnen vid utbildningsprogrammen D och IT påverkas och bör förändras under de första tre studieåren. Under arbetets gång har vi även samverkat med motsvarande grupp som studerat de datavetenskapliga ämnena. I denna slutrapport sammanfattar vi resultaten av vårt arbete i form av ett antal rekommendationer. Det måste dock observeras att detta endast ska ses som ett underlag för fortsatt planering av de första tre studieåren då det är många bivillkor som måste uppfyllas, och som vi inte har haft full kontroll över. Som exempel på dessa bivillkor kan nämnas totalt antal poäng för kurser i de datortekniska och datavetenskapliga ämnena (minst 50 poäng), vad som krävs för att uppfylla krav på förkunskaper för icke datortekniska kurser, programledningarnas planer för de olika utbildningsprogrammens önskade inriktningar, samt hur undervisningen kan schemaläggas med hänsyn tagen till tillgängliga resurser och andra utbildningsprograms behov. Några faktorer som speciellt påverkat våra rekommendationer är: * Mjukvaran spelar allt större roll vid utvecklingen av ett datorsystem, såväl för funktionalitet och prestanda hos det färdiga systemet som för utvecklings- och tillverkningskostnad. Utbildningarna måste därför förmedla en god förståelse för mjukvarulagren och för deras samspel med hårdvaran. * Det finns ett önskemål om att sträva i riktning mot en standardstorlek på kurser (fem poäng har nämnts). Detta gör att det vissa fall har varit intressant att se på om kursinnehåll kan flyttas något mellan kurser. Det gör också att det totala antal kurser som kan ingå i kandidatutbildningen blir mer begränsat än det antal kurser som idag är aktuella för de första tre utbildningsåren. * Vi har strävat efter att försöka minska antalet olika varianter av kurser, samt att undvika onödigt överlapp mellan kurser, och att få en bra och väl fungerande koppling till det kursutbud som rekommenderas av den datavetenskapliga arbetsgruppen.
* Då det i det nya systemet ska vara möjligt att bryta studierna efter en kandidatexamen, för att antingen byta universitet/högskola inför magisterutbildningen eller gå ut i yrkeslivet, så är det extra viktigt de tre första åren kan tillhandahålla en tillräcklig bredd i det obligatoriska kursutbudet för att förbereda för många olika fortsättningar. Beträffande det datortekniska innehållets utformning har vi kommit fram till tio rekommendationer som vi presenterar i följande avsnitt. Rekommendation 1: Datortekniskt huvudspår ----------------------------------------- Med hänsyn till utvecklingen av datorteknikens tillämpningar i en alltmer avancerad riktning, och med ett allt viktigare samspel mellan program- och maskinvara, så rekommenderar vi att den datortekniska och datavetenskapliga utbildningen förändras i en riktning som tydligare och bättre än tidigare ger en fundamental förståelse av hur program- och maskinvara samverkar. Detta handlar till exempel om att på ett tidigt stadium förmedla en förståelse för hur program skrivna i högnivåspråk översätts till maskinkod, samt vilken roll systemmjukvara spelar som fundament för programutveckling. Vi föreslår mot denna bakgrund ett huvudspår i den datortekniska utbildningen som består av följande kurser i nedan angiven följd: - Digital- och datorteknik. Denna kurs motsvarar i stort den nuvarande kursen med samma namn. Med den efterföljande nya kursen i maskinorienterad programmering, blir det dock möjligt att flytta ut en del stoff inom till exempel assemblyprogrammering. Detta kan möjligen skapa ett utrymme för att minska omfattningen från sex till fem poäng om så önskas. Vi rekommenderar även att denna kurs föregås av en grundkurs i programmering med inslag av imperativ programmering, samt att den efterföljande kursen i maskinorienterad programmering ges i nära anslutning. - Maskinorienterad programmering. Detta är en delvis ny kurs, även om relaterade kurser som till exempel Maskinnära programmering och Systemprogrammering i C redan finns i dagens kursutbud. Avsikten med denna kurs är att knyta ihop de grundläggande kunskaperna i programmering och datorteknik som erhållits i tidigare kurser. Innehållet i kursen ska vara inriktat på att ge förståelse inom föjande områden: * Hur översätts programkonstruktioner i högnivåspråk till assembly- och maskinkod. * Hur går programmering av hårdvarunära funktionalitet till med hjälp av assemblyspråk och högnivåspråk som C. * Hur används datortekniska metoder som till exempel avbrott och minnesavbildad I/O för att åstadkomma grundläggande systemfunktioner i programvara. * Vilka är de mest centrala begreppen och funktionerna i systemmjukvara, som till exempel kernel, process, och avbrottshanterare. Kan i detta sammanhang tanken bakom parallella processer introduceras, så läggs en mycket bra grund för senare datortekniska kurser utan av kursen i parallellprogrammering behöver
gås igenom. Ihop med kursen i digital- och datorteknik samt en grundläggande programmeringskurs, anser vi denna kurs representerar ett minimum av datortekniskt kunnande som bör vara en central del i kandidatutbildningen för såväl D som IT (och även vissa andra utbildningar som till exempel Z). - Datorsystemteknik. Denna kurs motsvarar dagens kurs med samma namn. Det kan dock bli möjligt att utveckla denna kurs i en riktning som ger en bättre och bredare översikt över olika typer av datorsystem och aspekter på datorsystem som kommer att ges i senare kurser. Exempel på detta är operativsystemets roll, samt introduktion till tekniker för uppbyggnad av parallella, distribuerade, och inbyggda system. Detta kan åstadkommas genom att kursen i Maskinorienterad programmering sätts som förkunskapkrav, och ger en chans att ge en översikt över områden där det kanske inte ges möjlighet att följa en hel kurs. Vi tror rent allmänt att denna kurs är viktig för kandidatstudenter inom såväl D som IT, då den ger den första sammanhållna bilden av hur olika typer av datorsystem är uppbyggda, och därigenom påverkar centrala egenskaper hos många programvarubaserade tillämpningar. Speciellt bör den dock räknas som helt central för D-studenterna. Denna kurs motsvarar också vad i många internationella utbildningar ingår i motsvarigheten till kandidatutbildning. - System software. Denna kurs är delvis ny, och är tänkt som en vidareutveckling av dagens kurser i operativsystem. Det är dock att faktum att den bild av datorsystem som ligger till grund för mycket programutveckling idag inte endast omfattar operativssystemet utan även mycket så kallad middleware. För att ge en konkurrenskraftig kandidatutbildning som förbereder även en kandidat för yrkeslivet, samt för att skapa en god grund för studenter som inriktar sig på tillämpningsutveckling, så tror vi det är viktigt att denna kurs utöver grundkunskaper i operativsystem, även omfattar en översikt över det som idag brukar kallas middleware. Möjliga fortsättningskurser som kan ingå i kandidatutbildningen som valfria kurser om utrymme finns: - Datorarkitektur. Denna kurs bygger idag vidare på framförallt vad som ingår i kursen i Datorsystemteknik, och är en naturlig fortsättning för den som vill ytterligare fördjupa sig i datorteknik kring gränssnittet mellan hård- och mjukvara. - Parallella datorsystem. Rekommendation 2: Hårdvaruorienterade kurser -------------------------------------------- I skrivande stund är det tillgängliga poängtalet för kurser inom huvudinriktningen inte slutgiltigt bestämt. Med hypoteserna att 60 poäng skall innefatta även ett tiopoängsprojekt och att resterande 50 poäng skall fördelas någotsånär jämt mellan DV-ämnen och DT-ämnen, att kurser helst bör omfatta 5 poäng vardera, samt att utbildningens huvudspår koncentreras kring de många mjukvarulagren i moderna datorsystem enligt Rekommendation 1
ovan, ser vi en tydlig risk för att endast en hårdvarukonstruktionskurs ryms inom poängbudgeten för de första tre åren. Det är då väsentligt att denna enda kurs ger en teknolog som lämnar programmet efter kandidatexamen en grundkunskap om metoder som används vid modern digital konstruktion. Vi ser ett behov av en ny kurs för att fylla detta behov. En sådan ny kurs, exempelvis benämnd "Digital hårdvarukonstruktion", bör ha tre huvudmoment. - Det första momentet har likheter med VHDL-delen av nuvarande Industriell Digital Konstruktion. Det skulle alltså introducera hårdvarubeskrivande språk, förmodligen med VHDL som exempel. Ett (naturligtvis starkt förenklat) konstruktionsflöde, med simulering och testöverväganden, beskrivs också. Kursen vilar på den begreppsapparat av kombinatoriska nät och sekvensnät som införts i Digital- och Datorteknik. - Det andra momentet skulle orientera teknologerna om olika implementationsalternativ: komponenter på kort; programmerbar logik av olika slag; VLSI; och till och med mjukvara på processor. Det är viktigt att tidsutdräkt, NRE-kostnad, produktionskostnad, och effektförbrukning berörs och jämförs mellan de olika alternativen. - Slutligen skulle ett laborativt moment illustrera förfarandet med maskinell översättning från beskrivande språk till hårdvaruimplementation, speciellt FPGA. Kursen bör komma efter Digital- och Datorteknik samt en kurs i inledande elektriska kretsar, ungefär motsvarande del A av nuvarande Elektriska Kretsar och Signaler. En kurs motsvarande nuvarande synteskurs bör fortfarande erbjudas, men bör göras valfri och/eller skjutas fram till fjärde årskursen. Stoffet utgör den teoretiska grunden för all digital konstruktion och försvarar väl sin plats inom en fördjupningsinriktning av typen Konstruktion av Digitala System. Den nuvarande kursen i Kretselektronik, eller en motsvarighet, bör också erbjudas framgent och vara en självskriven del av fördjupningsinriktningen Konstruktion av Digitala System. Digital VLSI-teknik och speciellt Digitala VLSI-projekt måste förmodligen hänskjutas till fjärde året. Det är som tidigare antytts oklart om utrymme för projektkurser ingår i de tilldelade poängtalen. Ett fempoängsprojekt i slutet av år 2 har diskuterats i samband med tiopoängsprojektet under år 3. Den nuvarande kursen Digital Konstruktion förefaller passa väl in i en sådan mall. Rekommendation 3: Datakommunikation ----------------------------------- Den senaste tidens explosionsartade utveckling inom datakommunikationsområdet har inneburit att utvecklingen av ett datorsystem inte längre kan göra antagandet att målprodukten är en isolerad enhet. Istället måste datorn på de flesta nivåer i sin infrastruktur för hårdoch mjukvara ha stöd för kommunikation med andra datorer, oavsett om det rör sig om kommunikation inom den lokala hemsfären, i den urbana miljön eller
globalt via Internet. För att sunda konstruktionsval för hård- och mjukvarulösningar skall kunna göras måste konstruktören vara väl insatt i viktiga aspekter av datakommunikation och datanätverk, som t ex nätverkstopologier, metoder för dataöverföring och adressering (såväl logisk som fysisk) av datorer på nätverk. Därför rekommenderar vi att en kurs i datakommunikation får en betydligt mer framträdande roll i D- och IT-programmen än den hittills haft. Det har under de senaste åren på D&IT-sektionen figurerat ett antal kurser som gått under namnet "Datakommunikation", och de har sinsemellan haft lite olika fokus. Vi föreslår att en gemensam kurs i datakommunikation för D- och IT-programmet ges med ett innehåll som är brett nog för att täcka intressesfären för de båda programmen och som är grundläggande nog för att kunna ges tidigt i utbildningen. Detta senare krav innebär att kursen inte kan ha alltför starka bindande förkunskapskrav. De kurser under de inledande åren som vi dock anser är av extra stor vikt är de som ger en grundläggande förståelse för datorsystem och programmering, förslagsvis: - Digital & Datorteknik - Datastrukturer Ifall antalet kurspoäng inom programmen är tillräckligt tilltaget rekommenderar vi att kursen i datakommunikation blir obligatorisk för båda programmen. I annat fall föreslår vi att kursen finns tillgänglig inom den obligatoriska kursdelen som ett valbart alternativ i en en-av-två-konstellation; för D-programmet skulle denna andra kurs vara mjukvaruteknik (software engineering) medan det för IT-programmet skulle vara den föreslagna nya kursen i systemmjukvara (system software). Möjliga fortsättningskurser som kan ingå i kandidatutbildningen som valfria kurser om utrymme finns: - Tillämpad datasäkerhet - Internetteknik Rekommendation 4: Dependable real-time systems ---------------------------------------------- En viktig inriktning för konstruktion av datorsystem gäller säkerhetskritiska tillämpningar inom t ex fordons-, flyg- och rymdindustri. I sådana tillämpningar är det av oerhört vikt att program- och maskinvara konstrueras på ett sådant sätt att systemets tillförlitlighet är garanterad eftersom ett havererat system kan innebära inte bara stora ekonomiska förluster utan också allvarliga personskador eller förlust av liv. Det är därför viktigt att utbildningen får ett visst fokus på förståelsen av hur ett datorsystem kan konstrueras så att tillfälliga eller permanenta fel i program- och maskinvara kan tolereras utan att systemet uppför sig på ett okontrollerat sätt. Till exempel kan redundanta resurser införas i systemet för att ge det möjlighet att såväl maskera som detektera interna fel. Andra exempel på metoder som kan användas för att öka systemets tillförlitlighet är teoretiska analyser av program- och maskinvaran logiska och tidsmässiga beteende.
Det existerar i dag kurser för såväl konstruktion av realtidssystem som tillförlitliga system. Dock konfronteras studenterna inte med de generella frågeställningarna som rör tillförlitliga system förrän i de sista årskurserna i utbildningen. På grund av den höga signifikansen av sunda designmetoder för säkerhetskritiska tillämpningar är vårt förslag är att vissa moment av kursen i tillförlitliga system flyttas ner till kursen i realtidssystem; det rör sig i första hand om material som berör grundläggande terminologi och specifika konstruktionsmetoder inom tillförlitlighetsområdet (t ex aktiv och passiv redundans). Denna utökade kurs i realtidssystem skulle då kunna kallas "Tillförlitliga realtidssystem". Kurser under de inledande åren som är av extra stor vikt för denna kurs: - Maskinorienterad programmering - Datorsystemteknik - Parallell programmering - Matematisk statistik Detta stärkta fokus på tillförlitlighet i datorsystem ligger helt i linje med sektionens visioner då den under år 2001 öppnade dörrarna för ett helt nytt internationellt magisterprogram inom området "Dependable Computer Systems". Inom detta program erbjuds fördjupande kurser i schemaläggningsteori, tillämpad datasäkerhet och formella metoder för verifiering av program- och maskinvara. Genom att stärka baskunskaperna i detta område redan i de tidiga årskurserna erbjuds eleverna en smidigare övergång till detta magisterprogram. Möjliga fortsättningskurser som kan ingå i kandidatutbildningen som valfria kurser om utrymme finns: - Tillförlitliga datorsystem Rekommendation 5: Systems/Software engineering ---------------------------------------------- Ett förslag till införande av en ny kurs i Software Engineering har tagits fram av Peter Öhman. Denna kurs är sådan att den kan ges relativt tidigt i utbildningen. Den trycker också särskilt på kopplingen mellan Systems engineering och Software engineering, vilket vi tycker är särskilt viktigt med tanke på den strävan att åstadkomma en tydligare koppling mellan programvara och datorsystem som vi redovisat ovan. Vi tar upp denna kurs här eftersom vi inte anser det vara helt självklart huruvida den ska ses som "datorteknisk" eller "datavetenskaplig". Rekommendation 6: Projektkurs ----------------------------- Vi rekommenderar att en projektkurs ges som del av kandidatutbildningen. Denna ska dock inte ha ett specifikt datortekniskt fokus, utan bör omfatta även datavetenskap. Med projektkurs avses här ett fempoängs block någonstans under årkurs ett till två utöver det obligatoriska examensarbetet som rimligen infaller i slutet av tredje året. Rekommendation 7: Inbördes beroenden mellan kurser
-------------------------------------------------- Till denna rapport bifogar vi en graf som illustrerar hur de olika kurser vi tar upp är relaterade till varandra vad gäller lämplig ordningsföljd. Rekommendation 8: Kursprioritering för D-kandidatutbildningen ------------------------------------------------------------- Då det som vi konstaterat i inledningen finns en mängd bivillkor beträffande vilket kursutbud som i praktiken kan ingå i utbildningen är det inte möjligt för oss att ge ett definitivt svar på frågan vilka kurser som ska ingå i D-kandidatutbildningen. Istället ger vi här ett förslag på prioritering bland kurserna, med högst prioritet först, som vi hoppas kan fungera som vägledning för fortsatt programutvecklingsarbete. Följande kurser bör helst ingå i ett obligatoriskt kursutbud: 1. Digital- och datorteknik 2. Maskinorienterad programmering 3. Digital hardware 4. Datakommunikation eller Software Engineering (se även DV-rapport). Vi menar här att åtminstone en av dessa kurser bör ingå med denna prioritet. 5. Datorsystemteknik 6. System SW Följande kurser kan ingå i ett valfritt kursutbud: 7. Dependable Real-Time Systems, Kretselektronik 8. Internetteknik, Tillämpad datasäkerhet, Datorarkitektur, Digitalteknik - Syntes, Digital VLSI-teknik 9. Tillförlitliga och feltoleranta datorssystem, Unix internt, Parallella datorsystem, Digitala VLSI-projekt Rekommendation 9: Kursprioritering för IT-kandidatutbildningen -------------------------------------------------------------- På motsvarande sätt som för D-utbildningen ger vi här en prioritering av kursutbudet för IT-kandidatutbildningen: Följande kurser bör helst ingå i ett obligatoriskt kursutbud: 1. Digital- och datorteknik 2. Maskinorienterad programmering 3. Software Engineering 4. Datorsystemteknik 5. Datakommunikation eller System Software Följande kurser kan ingå i ett valfritt kursutbud: 6. Dependable Real-Time Systems, Internetteknik, Tillämpad datasäkerhet 7. Unix internt Rekommendation 10: Avancerade och specialiserade kurser
------------------------------------------------------- Vi har inte tagit upp kursen i datorgrafik, eller kurser av mer avancerad natur (till exempel avancerad internetteknik, datorarkitekturimplementering) ovan då vi bedömer att dessa är sådana att de är mer lämpade för magisterprogrammen. Bilaga: Graf över beroenden mellan kurser inom det datortekniska området.