Nada

2D1358 OOPK period 4 98/99 för B,F,I,K,L,M,T,V

^ Upp till kursens hemsida.


Från och med hösten 1998 gäller att endast de teknologer som delfakulteten lagt in i Ladok som studerande på en kurs kan godkännas på kursen. Vill du läsa en kurs som inte är obligatorisk för dig, måste du alltså först välja kursen vid ditt fakultetskansli som ska godkänna ditt val. Mer information om detta hittar du nedan.

Senaste nytt (12 januari 2000)

Tryck här boka redovisningstid:

Följande information kan du hitta nedan:

Följande information finns på separata sidor:


Kursmål

Kursens mål är att

Förkunskapskrav

Motsvarande kursen 2D1340 (eller 2D1341) Introduktion till datalogi eller 2D1320 Tillämpad datalogi.

Antagning och kursanmälan

Reglerna för vem som får följa olika kurser på KTH har skärpts f.o.m. hösten 1998.

För att få gå denna kurs måste du som följer ett civilingenjörsprogram antas till kursen av ditt delfakultetskansli. Kansliet registrerar dig i Ladok som elev på kursen och meddelar kursledaren. Eftersom denna registrering ibland kan fallera eller släpa efter får du i början av kursen redovisa laborationer även om du ännu inte finns med i Ladok. Notera dock att om du inte är antagen till kursen kan inget slutbetyget rapporteras. Är du osäker på om du har antagits till kursen bör du därför snarast vända dig till ditt delfakultetskansli.

Doktorander på NADA och institutioner med vilka NADA har avtal om ömsesidigt utbyte (t.ex. Matematik) ska meddela Caroline Nordquist, caroline@nada.kth.se. Övriga doktorander måste fylla i en särskild blankett och skicka den till kursledaren före kursstart.

Förutom detta ska du anmäla dig till kursen så snart som möjligt efter kursstart. Det kan du göra elektroniskt. Då vet vi vilka som verkligen tänker gå kursen, och vi får alla personuppgifter direkt från källan. Efter anmälan kommer du automatiskt med på alla labresultatlistor.

Omfattning

Kursen omfattar 28 timmar föreläsningar, 16 timmar övningar och 22 timmar laborationer. Det betyder ca 4 timmar föreläsning, 2 timmar övning och 4 timmar laborationer varje vecka. Då kursen omfattar totalt 4 poäng förväntas du utöver den schemalagda undervisningen lägga ner drygt 100 timmar eget arbete.

Kurskrav

Kursen består av två kursmoment, LAB1 (3 poäng) och LAB2 (1 poäng). LAB1 omfattar två obligatoriska laborationer samt en frivillig introduktionslaboration. LAB2 består av en lite större uppgift. Laborationerna löses i grupper om högst tre personer och redovisas i terminalsal på särskilda tider. Det finns ingen tentamen i kursen. Är du godkänd endast på de tre obligatoriska laborationerna får du betyget 3. För att få högre betyg måste du lösa extra uppgifter som tar upp fler aspekter av kursens innehåll.

Laborationerna måste redovisas senast i omtentamensperioden januari 2000. Du kommer inte att få tillgodoräkna dig enstaka laborationer när nästa års kurs har börjat. Däremot har du rätt att tillgodoräkna dig hela, avklarade kursmoment (dvs LAB1 och LAB2).

Mer information finns under avsnittet laborationer nedan.

Kurslitteratur

Detta är en kurs i objektorienterad programkonstruktion, inte primärt en kurs i C++. Det är dock oundvikligt att C++ tar upp en betydande del av kursen, och det har visat sig vara mycket svårt att göra laborationer utan att ha en bra, utförlig och modern bok i C++. Vi rekommenderar därför

C++ Primer, 3:e upplagan, av Stanley Lippman och Josee Lajoie, Addison-Wesley 1998. ISBN 0-201-82470-1 (paperback)

Boken kommer att säljas av kårbokhandeln (preliminärt pris 490 kr), men kan naturligtvis också köpas på stan och av olika bokhandlare på Internet. Jag kommer bara att ha sidhänvisningar och läsanvisningar till Lippman, men en mycket bra alternativ bok är

The C++ Programming Language, 3:e upplagan, av Bjarne Stroustrup, Addison-Wesley 1997. ISBN 0-201-88954-4 (paperback)

Stroustrups bok är mycket koncis, men mer avancerad än Lippman och innehåller färre exempel. Det finns även andra bra böcker i C++, men de flesta är mer än två år gamla och därmed föråldrade.

Kursbunten innehåller material som berör övriga delar av kursen: mönster (patterns), UML och objektorienterad analys och design. För den som vill ha riktiga böcker som täcker detta ordentligt rekommenderas

Design Patters, av Erich Gamma m.fl., Addison-Wesley 1995, ISBN 0-201-63361-2 (hardcover). Redan en klassiker. För den som planerar att ägna sig åt objektorienterad programutveckling är den ett måste.

The Unified Modeling Language User Guide, av Grady Booch m.fl., Addison-Wesley 1999, ISBN 0-201-57168-4 (hardcover). Den definitiva UML-guiden, skriven av upphovsmännen. Inte så lättläst, speciellt inte för den som inte redan kan objektorientering.

UML Distilled, av Martin Fowler, Addison-Wesley 1997, ISBN 0-201-32563-2 (paperback). En tunn och lättläst bok, full av personliga (men vettiga) synpunkter från en erfaren systemutvecklare. Det är inte direkt en nybörjarbok i objektorientering, men den är heller inte särskilt avancerad.

Kursbunt

Kursbunten ska finnas att köpa på NADA:s expedition från kursstarten. Den innehåller Den som köpt kursbunten kommer också att få kopior av föreläsningsanteckningarna under kursens gång. Kursbunten kostar 60 kr.

Föreläsare, handledare och examinator

Kursledare är , . Lämpligaste sättet att komma i kontakt med kursledaren är att skicka datorbrev. Det går också bra att lägga en lapp i postfacket märkt CVAP på NADA, Osquars Backe 2, 4 tr eller skicka ett vanligt brev till NADA, KTH, 100 44 Stockholm. Vill du träffa kursledaren personligen går det bra på mottagningstiden. Adressen är Fiskartorpsvägen 15A, 1 tr. Följ skyltarna till CVAP.

Övningsgrupperna leds av

  1. Harald Winroth, harald@nada.kth.se
  2. Fredrik Zetterling, fzet@pdc.kth.se
  3. Torbjörn Lindgren, f92-tli@nada.kth.se
  4. Kicki Frisch, kif@pdc.kth.se

Formell examinator på denna kurs är Yngve Sundblad, yngve@nada.kth.se. Examinatorn har det yttersta ansvaret för examinationen på kursen. Vänd dig dock med eventuella klagomål till kursledaren i första hand.

Synpunkter på kursen

Vi är tacksamma för synpunkter på kursen, både under kursens gång och efteråt. En datorstödd kursutvärdering kommer att göras. Synpunkter kan lämnas till övningsledarna eller till kursledaren.

Laborationer

Beskrivning

  1. Introduktion

    Frivillig. Detta är en kom-igång-laboration som inte ska redovisas och som inte är betygshöjande. Jag rekommenderar dock bestämt att du gör den. Det kommer att bespara dig tid senare i kursen. Passa på att fråga övningsledare och laborationshandledare mycket. De har bättre med tid i början av kursen.

  2. Menyhantering

    Obligatorisk. Laborationen tar framför allt upp arv och polymorfism.

  3. Grafiskt ritverktyg

    Obligatorisk. Utifrån ett enkelt fönstersystem ska du bygga ett ritverktyg. Laborationen tar upp klassbibliotek, fönsterprogrammering och s.k. mönster (patterns).

  4. Fiaspel

    Obligatorisk. I denna laboration ska du analysera och objektmodellera spelet Fia i UML. Från modellen ska du sedan implementera ett program som ritar ut spelplanen på skärment, flyttar pjäser och ser till att spelreglerna upprätthålls.

  5. Hantering av väljare

    Frivillig och betygshöjande. Ett programs beteende kan man påverka genom att specificerar en eller flera s.k. väljare, eventuellt med tillhörande argument. Ett exempel är -l till programmet ls. Du ska skapa ett litet objektorienterat system som automatiskt tar hand om sådana väljarna och deras argument och som är bekvämt att använda för en programmerare.

  6. Verktygslåda för fönsterprogrammering (toolkit)

    Frivillig och betygshöjande. Till fönstersystemet från laboration 3 ska du skapa ett objektbibliotek för fönsterprogrammering. Biblioteket ska innehålla objekt som ofta förekommer i grafiska gränssnitt, såsom knappar, menyer, och rullningslister (scrollbars), och vara dokumenterat i UML. Laborationen tar upp klassbibliotek, fönsterprogrammering, designmönster och UML.

  7. Äventyrsspel

    Frivillig och betygshöjande. I ett äventyrsspel rör man sig i en okänd värld full av faror. Man måste ta hjälp av olika föremål och ledtrådar man hittar på vägen. Denna laboration går ut på att designa och implementera ett sådant spel, komplett med grafik (enkel grafik, inte 3D-grafik).

Betygssättning

Är du godkänd på laboration 2, 3 och 4 är du också godkänd på kursen med betyget 3. Gör du dessutom laboration 5 och 6 blir betyget 4. För betyg 5 måste även laboration 7 göras. Du måste ha fått de obligatoriska laborationerna godkända innan du kan redovisa de betygshöjande.

Genomförande, tillåtet och otillåtet samarbete

Uppgifterna får lösas individuellt eller i grupper om högst tre personer. All examinering sker dock individuellt, d.v.s. eleverna bedöms alltid var för sig. Det kan mycket väl hända att en av personerna i en grupp blir underkänd på en laboration, medan de andra blir godkända. Läraren kan välja att ställa frågor omväxlande till gruppens medlemmar eller att examinera varje elev enskilt. Du måste alltså vara beredd att själv redogöra för allt som rör laborationen, inklusive praktiska saker som var filer ligger och hur program startas.

Diskussion av uppgifter och lösningar mellan grupper är tillåten men direkt kopiering av programkod eller UML-ritningar betraktas som fusk. All redovisad programkod kommer att registreras elektroniskt och lösningarna kommer att jämföras med varandra i efterhand. Det är därför viktigt att du aldrig gör din kod läsbar för andra än dina laborationskamrater. Lämna inte heller utskrifter vid skrivarna. Ta med dig alla utskrifter och släng dem någon annanstans. Kopierar någon din kod kan du få svårt att visa att det verkligen är du som har skrivit den. Detta ska dock inte hindra dig från att diskutera olika tänkbara lösningar med andra eller att ge och ta emot tips om enskilda konstruktioner och kodavsnitt. Får du hjälp med bitar av laborationen av andra än dina laborationskamrater, redovisa det öppet, t.ex. genom att notera det i koden. Det hjälper oss att snabbt avskriva misstankar om fusk när systemet upptäcker likheter mellan inlämnade lösningar.

Redovisning

Laborationerna redovisas på särskilda tider under kursens gång. Därefter tas redovisningar emot endast på vissa tider i omtentamensperioderna (mars, augusti, januari), fram tills dess nästa kursomgång för B,F,I,K,L,M,T,V startar. Laborationerna måste alltså redovisas senast i omtentamensperioden januari 2000.

Eftersom denna kurs inte har någon tentamen kan kraven på redovisningen av laborationerna vara hårdare än vad du kanske är van vid från andra kurser. Vid redovisning ska du kunna redogöra i detalj för hela lösningen, inklusive datastrukturer, in- och utgångsvillkor hos funktioner, och eventuella UML-modeller. Inlämnad programkod ska vara välstrukturerad och dokumenterad; det räcker inte med att den fungerar. Kursbunten innehåller vissa grundläggande krav på programstruktur, programkodlayout och kommentering. Ta del av dessa.

Redovisad programkod kommer att registreras, oavsett om du blir godkänd eller ej. Därför måste all programkod finnas tillgänglig på maskinläsbar form på UNIX-systemet vid redovisningen (gör dock inte koden allmänt läsbar, se ovan). Programkoden ska dessutom finnas tillgänglig på papper, annars får läraren ingen överblick och redovisningen tar då mycket längre tid. Eventuell annan pappersdokumentation (t.ex. UML-diagram där sådana krävs) ska läraren kunna ta med sig. Gör kopior om du vill ha kvar originalet.

Rapportering av godkända laborationer till betygsdatasystemet ska normalt ske automatiskt. För varje kursomgång registreras dock mer än tusen laborationer, och enstaka missar är oundvikliga. Varje elev måste därför se till att få laborationskvittot påskrivet av läraren som tar emot redovisningen. Kvittot ska fyllas i med bläck och ni måste kunna visa legitimation. Vid första redovisningen ska dessutom kvitto på kåravgiften uppvisas, precis som vid en vanlig tentamen. Spara kvittot tills kursen är godkänd och du ser att slutbetyget har registrerats i ditt betygsutdrag.

Anmälan till laborationsredovisning

För att få redovisa ska du skriva upp dig på den elektroniska anmälningslistan. Det finns en lista för varje laborationstid. Assistenterna kommer att följa dessa listor och ropa upp namnen i den ordning eleverna har anmält sig. Vi kan tyvärr inte exakt specificera när det blir din tur: Olika laborationer tar olika långt tid att redovisa, en del personer som skrivit upp sig på listan dyker aldrig upp, och antalet assistenter kan variera. I regel finns dock 2-3 assistenter som tar emot redovisningar på varje tid och varje assistent klarar av ca 4-5 redovisningar per timme.
Tryck här för att hämta bokningslistor:
Du kan redovisa flera laborationer vid samma tillfälle, men du måste göra en bokning för varje. Det går inte att anmäla sig elektroniskt efter kl 18 dagen före redovisningen. Anledningen till detta är dels att assistenterna måste kunna dra ut listan i god tid kvällen före, dels att kursledaren måste få tid att fördela assistenterna mellan olika hårt belastade redovisningstillfällen. Är du sent ute kan du chansa på att komma oanmäld till redovisningstillfället. Skriv då till ditt namn på assistentens lista så tar han/hon emot din redovisning i mån av tid.

Vid varje schemalagt redovisningstillfälle finns också ett antal handledare (i regel 3-4 st) som kan hjälpa dig med laborationerna och svara på frågor. Oftast organiserar de en kölista på tavlan i terminalsalen. Skriv upp dig på den listan endast om du vill ha hjälp. Handledarna (som oftast är teknologer) tar inte emot redovisningar.

Föreläsningsplan

Kursen består av två huvuddelar: objektorienterad modellering och programmering i C++. Efter en kort introduktion börjar vi direkt med programmeringsdelen, eftersom kursen annars skulle bli väldigt abstrakt. Därefter kommer problemanalys och modellering att tas upp. Ett grafiskt språk för att beskriva system, UML, kommer att gås igenom. Objektorienterad design kommer att diskuteras i termer av s.k. designmönster (design patterns), som beskriver hur objekt typiskt samverkar med varandra för att lösa en uppgift.

Preliminär föreläsningsplan:

  1. Kursinformation.
    Introduktion till objektorienterad programmering.

  2. Introduktion till C++, jämförelse med C.
    Grundläggande mekanismer.

  3. Klasser.
    Gränssnitt, åtkomlighet.
    Typkonvertering.
    Objektidentitet och objektlikhet.

  4. Standardbiblioteket.
    Behållare och iteratorer.
    Vektorer, listor, textsträngar.
    Kompilering, länkning, avlusning.

  5. Resursallokering, speciellt minnesallokering.
    Destruktion, kopiering, tilldelning.
    Minneshanteringsfel.

  6. Arv, klasshierarkier.
    Polymorfism, virtuella funktioner.

  7. Abstrakta basklasser.
    Multipelt och privat arv.
    Delegering.
    Typ kontra klass.
    Invarianter.
    Kontraktsprogrammering, ingångs- och utgångsvillkor.

  8. Grafikpaketet Grain (för lab 3 och 4).

  9. UML: statisk modell.

  10. UML: dynamisk modell.

  11. Mönster (design patterns).

  12. Fler mönster.
    Andra typer av språk.

  13. Mallar (templates).

  14. Undantagshantering (exceptions).

Schema

v11 Mån 15/3 Tis 16/3 Ons 17/3 Tor 18/3 Fre 19/3
8:00Föreläsning
Q1
Föreläsning
E1
9:00
10:00
11:00Föreläsning
D1
12:00
13:00Föreläsning
D1
14:00
v12 Mån 22/3 Tis 23/3 Ons 24/3 Tor 25/3 Fre 26/3
8:00Föreläsning
Q1 FLYTTAD till 21/4 samma tid samma plats
Övning
D34,E31,51-52
9:00
10:00
11:00Föreläsning
D1
Laboration
Orange,Röd
gr 1-2
12:00
13:00Laboration
Orange,Röd
gr 3-4
14:00Övning
E31,52-53,F31
15:00
v16 Mån 19/4 Tis 20/4 Ons 21/4 Tor 22/4 Fre 23/4
8:00Övning
D34,E31,51-52
9:00
10:00
11:00Föreläsning
D1
Laboration
Orange,Röd
gr 1-2
12:00
13:00Laboration
Orange,Röd
gr 3-4
14:00Övning
D34,E31,52-53
Föreläsning
E1
15:00
16:00Laboration
Orange,Röd
gr 1-2
17:00
18:00Laboration
Orange,Röd
gr 3-4
19:00
v17 Mån 26/4 Tis 27/4 Ons 28/4 Tor 29/4 Fre 30/4
8:00Övning
D34,E31,51-52
9:00
10:00
11:00Föreläsning
D1
Laboration
Orange,Röd
gr 1-2
12:00
13:00Laboration
Orange,Röd
gr 3-4
14:00Övning
D34,E31,52-53
Föreläsning
E1
15:00
16:00Laboration
Orange,Röd
gr 1-2
17:00
18:00Laboration
Orange,Röd
gr 3-4
19:00
v18 Mån 3/5 Tis 4/5 Ons 5/5 Tor 6/5 Fre 7/5
8:00Övning
D34,E31,51-52
9:00
10:00
11:00Föreläsning
D1
Laboration
Orange,Röd
gr 1-2
12:00
13:00Laboration
Orange,Röd
gr 3-4
14:00Övning
D34,E31,52-53
Föreläsning
Q1 (Obs! Ändrat)
15:00
16:00Laboration
Orange,Röd
gr 1-2
17:00
18:00Laboration
Orange,Röd
gr 3-4
19:00
v19 Mån 10/5 Tis 11/5 Ons 12/5 Tor 13/5 Fre 14/5
11:00Föreläsning
D1
Laboration
Orange,Röd
gr 1-2
12:00
13:00
14:00
15:00
16:00Laboration
Orange,Röd
gr 1-2
17:00
18:00Laboration
Orange,Röd
gr 3-4
Laboration
Orange,Röd
gr 3-4
19:00
v20 Mån 17/5 Tis 18/5 Ons 19/5 Tor 20/5 Fre 21/5
11:00Föreläsning
D1
12:00
13:00Laboration
Orange,Röd
gr 1-2
14:00
15:00Laboration
Orange,Röd
gr 3-4
16:00Laboration
Orange,Röd
gr 1-2
17:00
18:00Laboration
Orange,Röd
gr 3-4
19:00

^ Upp till kursens hemsida.


Sidansvarig:
Senast ändrad 12 januari 2000
Tekniskt stöd: <webmaster@nada.kth.se>