Nada

Kursanalys för kursen Objektorienterad programkonstruktion med C++, E, våren -98

Författare: Lars Bretzner NADA

Nedan följer en utvärdering av kursen i objektorienterad programkonstruktion med C++ för E.

Kursdata

Kursen genomfördes i period 3 våren 1998.
Föreläsningar: 28 tim
Övningar: 16 tim
Laborationer: 22 tim
Kurslitteratur: "The C++ Programming Language" (3rd edition) av Bjarne Stroustrup och kursbunten innehållande bl.a UML- och LEDA-material
Antal anmälda elever: 196

Avklarade moment:

Moment     Antal klara av de som gjort lab 1   Antal klara av alla anmälda
==========================================================================
LAB1                137 (91%)                           137 (70%)
LAB2                 87 (58%)                            87 (44%)
Examinationsgrad: 44% (58% för de som gjort lab 1)
Prestationsgrad: 64% (82% för de som gjort lab 1)
Kursansvarig: Lars Bretzner
Föreläsare: Jonas Mölsä
Assistenter: Lars Bretzner, Peter Nillius och Fredrik Zetterling.
Jonas Mölsä höll samtliga föreläsningar utom de första som hölls av Magnus Andersson. Assistenterna höll i var sin övningsgrupp.

Mål

Objektorienterad programmeringsmetodik har idag blivit en av de mest använda metoderna för att konstruera program och programsystem. Detta märks bl.a. genom den mängd objektorienterade programspråk som nu finns och genom att många programspråk, vilka inte var objektorienterade från början, har försetts med objektorienterade tillägg. Kursen lär ut grundläggande principer och begrepp inom området och ger kunskaper och träning i att utforma och implementera objektorienterade program. I kursen kommer programspråket C++ att studeras. Språket har under de senare åren varit det mest använda objektorienterade språket. Kursen går inte bara igenom de grundläggande delarna av språket utan tar också upp mer avancerade begrepp som generiska typer (templates, speciellt standardbiblioteket STL), felhantering (exceptions) och namnrymder (namespaces). I kursen diskuteras också skillnader mellan olika typer av objektorienterade språk. Under de senare åren har också ett antal objektorienterade metoder och språk för programutveckling utvecklats och som ett exempel på ett av dessa studeras Unified Modelling Language (UML).

Sammanfattning

Denna kurs fick helt klart lida av de oklarheter kring kursansvarig, föreläsare och assistenter som fanns tills strax innan kursstart. De olyckliga omständigheterna gjorde att det inte fanns tid för någon utveckling av föregående års kurs, utan vi följde i stort föregående års kursplan. Detta innebar att vi i allmänhet upplevde samma problem som året innan. Helhetsintrycket av kursen är, liksom förra omgången (96/97) mycket varierat och avspeglar sig klart i prestations- och examinationsgrad. Av de drygt 20 personer som svarat på elevenkäten får kursen ett relativt gott betyg.

Föreläsningarna

På föreläsningarna har de grundläggande begreppen i kursen presenterats med hjälp av datorgenererade stordior. För att kunna följa med utan att behöva anteckna allt har föreläsningsanteckningar delats ut. Tyvärr följde inte föreläsningarna alltid planen, vilket gjorde att sambandet mellan övningarna och föreläsningar haltade.

Övningarna

Övningarna följde kursplanen och upplevdes som välbesökta. Vissa ändringar hann göras till slutat av årets kurs. Bl.a behandlades UML i fler övningar än tidigare (OMT). Kopior med övningsinnehållet delades ofta ut för att eleverna skulle kunna följa med lättare.

Laborationerna

Laborationerna utgör den tyngsta delen av kursen. De är uppdelade på momentet LAB1 som omfattar 3 stycken labbar och momentet LAB2 som omfattar en något större projektuppgift. Laboration 2 och 4 återanvändes till årets kurs, de övriga gjordes om. Nytt för året var ett antal obligatoriska frågor till laboration 1-3 för att kontrollera om eleven tillgodogjort sig innehållet. Kursansvariges intryck av laborationerna har varit att de fungerat hyfsat. De förtryckta frågorna har varit till stor hjälp för handledarna vid redovisningarna. Extrauppgifterna till laboration 2 kan ses över. Laboration 4 (som utgör delmoment 2) var den i särklass mest tidskrävande och det är det är det delmoment som många elever fortfarande har kvar att redovisa. Totalt en något överdimensionerad labkurs, fortfarande. Ett visst missnöje hos eleverna med hjälpmöjligheter under terminalövningarna kan noteras. Detta kan delvis förklaras med att elevfördelningen mellan olika pass var ojämn, men också med allmän brist på handledare till kursen. Här är en sammanställning av labresultaten, först för samtliga anmälda elever och därefter för de elever som gjort första labben. Inga extrauppgifter visas. Man ser i tabellen att många elever valt att göra delmoment 2 (motsvarande laboration 4) i kommande kursomgång.
 
Lab   Ant G     (%)     Ant G    (%)
 
1      151     77.0      151     100
2      149     76.0      149     98.7
3      137     69.9      137     90.7
4       87     44.4       87     57.6

		      
Antal elever totalt: 196

Betygssättning och prestationer

Kursen har ingen tentamen utan all examination sker via labbar. Kursledarens intryck är att då tentamen saknas har eleverna en tendens att flytta fram labbandet. Betyget på kursen ges av att eleverna väljer att göra mer omfattande uppgifter (normalt extrauppgifter på labbarna). Denna typ av morot fungerar relativt väl, det har snarast varit något för många som erhållit betyg 4 och 5. Nytt för i år var ett bonussystem som gav en bonuspoäng till totalbetyget om alla laborationer gjordes innan 27/4. Detta för att få eleverna att redovisa i tid och inte spara laborationerna. Det är svårt att säga hur väl detta föll ut, men det faktum att vi nått bättre examinations- och prestationsgrad än tidigare kurs trots de dåliga förutsättningarna och en något högre kravnivå, gör att det nog var en bra ide.

Kurslitteratur

Som kurslitteratur har använts boken "The C++ Programming Language" (3rd edition) av Bjarne Stroustrup samt en omfattande kursbunt med bl.a UML och LEDA-material. Boken som detaljrikt behandlar C++ har fått relativt dålig kritik. Den upplevdes som en bra uppslagsbok när man väl kunde C++ i stort, men dålig som nybörjarbok. Man bör nog försöka att hitta en bättre/kompletterande bok till nästa omgång. Kursbunten ansågs acceptabel, men man bör hitta bättre material som beskriver UML.

Slutord

Med tanke på att det någon vecka innan kusstart var oklart om kursen skulle kunna hållas anser jag resultatet vara acceptabelt. De problem som finns beror nog på att kursen försöker att täcka för mycket. Det är tveksamt om C++ är lämpligt i en första kurs i objektorienterad programmering. För mycket tid måste läggas ner på språkdetaljer, både av lärare och elever. Det objektorienterade tankesättet hinner inte läras ut och sjunka in. Jag anser att objektorienteringsiden ska läras ut från början med hjälp av UML, även om risken är stor att det hela upplevs som abstrakt. Implementationen är i allmänhet av mindre vikt i början och bör ske i ett syntaxmässigt lättare språk typ Java. Det är svårt för eleverna att förstå kraftfullheten hos C++ innan de förstått vad objektorientering handlar om. Kursansvarigs intryck är att arbetsbelastningen på kursen har fortfarande har varit hög.
Sidansvarig: <harald@nada.kth.se>
Senast ändrad 18 januari 1999
Tekniskt stöd: <webmaster@nada.kth.se>