Kursprogram för DD1311 Programmeringsteknik med PBL för CL1, vt 2009
På kursens webbsida http://www.csc.kth.se/DD1311 finns aktuell information om kursen.
Lärare
|
Namn |
Datorpostadress |
Datorsal |
Datorer |
Övningssal |
Föreläsare |
Linda Kann |
lk |
|
|
|
Grupp 1 |
Maria Skeppstedt |
mariask |
Röd sal |
Röd01-Röd07 |
CSC-biblioteket (OB2 plan 4) |
Grupp 2 |
John Häggkvist |
johnhagg |
Röd sal |
Röd15-Röd21 |
seminarierum 1537 (OB2 plan 5) |
Grupp 3 (ej nybörjare) |
Sten Andersson |
stene |
Orange sal |
Orange01-Orange07 |
seminarierum 1635 (OB2 plan 6) |
Studentexpedition
Nadas studerandeexpedition finns på Osquars backe 2 plan 2.
Öppettider under terminstid: måndag, tisdag, torsdag, fredag 9.30-12.00, måndag-torsdag 13.00-15.00,
telefon 08-790 80 77, e-post studentexp@nada.kth.se
Kurslitteratur
Kursboken ska läsas på egen hand parallellt med kursen
(det räcker inte med att gå på föreläsningarna).
Som kurslitteratur kan du välja en av följande böcker:
|
Starting out with Python
av Tony Gaddis,
utgiven 2009,
ISBN 0-321-54941-4.
(har använts på OPEN, I och MEDIA under hösten 2008)
675 kr i kårbokhandeln.
|
Python Programming for the absolute beginner
av Michael Dawson,
utgiven 2006,
ISBN: 1-59863-112-8
(användes på S våren 2008)
250 kr i kårbokhandeln.
|
|
|
Läsanvisningar till bägge böckerna finns på kursens webbsida.
Mål
Kursen riktar sig till nybörjare. Efter godkänd kurs ska du kunna
- följa reglerna i programspråkets syntax,
- tillämpa och redogöra för regler för god programmeringsstil
(såsom användarvänlighet, kommentarer, felhantering, strukturering,
flexibilitet),
- upptäcka och korrigera programmeringsfel,
- modifiera givna program,
- överföra data mellan fil och program,
- identifiera behovet av och använda styrstrukturer
(villkorssatser och slingor),
- dela upp ett större problem i hanterliga delar och konstruera
funktioner för dessa,
- använda de datastrukturer som finns inbyggda i programspråket,
samt välja datastrukturer som passar för det aktuella problemet,
- utveckla enkla grafiska användargränssnitt,
- granska andras program
för att ha möjlighet att
- använda programmering för att lösa problem,
- tillämpa problemlösningsmetodiken även inom andra områden än programmering,
- diskutera programutveckling med experter,
- bedöma kommersiella program.
När man lär sig att programmera måste man samtidigt lära sig ett
programspråk. I vårens kursomgång kommer programspråket Python att användas.
PBL står för problembaserat lärande och innebär i likhet med
verkligheten att du som deltagare serveras problem och inte
lösningar. Problemen löser du genom diskussion och aktivt utnyttjande
av kurslitteraturen.
Hederskodex
Skolan tillämpar en hederskodex i alla sina kurser och
varje student förutsätts tillämpa hederskodexen. Den finns
via länk på kursens webbsida.
Kursmoment
Kursen är uppdelad i tre delmoment:
- Laborationer med instuderingsfrågor, LAB1 (1,5 hp)
- Prov, LAB2 (1,5 hp)
- P-uppgift, LAB3 (3 hp)
Labbar
Kursens första moment, LAB1, består av laborationer
som görs i grupper om två personer.
Varje laboration består av två eller tre programmeringsuppgifter, samt
ett antal instuderingsfrågor.
För godkänt resultat på LAB1 krävs att du redovisar labbarna.
Godkända redovisningar av labbarna medför även att det skriftliga provet
blir mindre omfattande. För läsåret 2008-2009 gäller att det finns fem
laborationer som vardera ger max 3% bonus till det skriftliga provet,
under förutsättning att laborationerna redovisas på ett
tillfredsställande sätt och i tid. Sammanlagt kan detta alltså ge 15%
i bonus till provet.
Prov
Kursens andra moment, LAB2, består av ett individuellt
skriftligt prov på grunderna i pythonprogrammering. En provfråga
skulle t ex kunna se ut så här:
Vilken/vilka av följande satser skriver ut värdet av variabeln x?
-
print 'x'
-
print '
x'
-
print x
-
x = raw_input()
- Ingen av ovanstående.
Provet är ett obligatoriskt moment, men det är också
tänkt att fungera som ett diagnostiskt prov där man
kan se om man har några kunskapsluckor som behöver fyllas
igen innan man börjar med P-uppgiften.
P-uppgift
Kursens tredje moment, LAB3, är en större, personlig
programmeringsuppgift i Python; en "P-uppgift".
Uppgifterna är tänkta att vara
något så när svåra och tidskrävande, räkna med ca 80
timmar. Betyget i kursen ges av detta moment.
P-uppgiften redovisas i
fyra steg, specifikation, prototyp, granskning och slutredovisning.
Det finns många olika uppgifter, och du ska inte göra samma
uppgift som någon annan i din grupp. Uppgiftslydelsen kvitterar du ut hos din
assistent i slutet av kursens första del.
- Specifikation
- Innan programmet skrivs ska en specifikation lämnas in.
Syftet är att du ska tänka igenom
problemet innan du försöker lösa det. Specifikationen ska
innehålla följande delar:
- Algoritm
- Datastruktur (rita också en minnesbild med exempeldata)
- Funktioner
- Klasser med attribut och metoder (om du använder klasser)
Specen tas med till en grupptimme för genomgång!
- Prototyp
- Prototypen är den första körbara versionen av ditt program.
En prototyp behöver bara göra en del av det ditt färdiga program
ska göra (hur stor del bestämmer du själv). Den
kan t ex skriva ut en meny, eller läsa in data från en fil och skriva
ut på skärmen.
- Granskning
- Innan det färdiga programmet kan redovisas för en handledare ska
det testas (granskas) av en kurskamrat. Vid testen ska
din granskare kritiskt granska ditt program, testköra det och
fylla i ett granskningsprotokoll (finns på kursens webbsida,
titta på LAB3:P-uppgiften ).
Denna granskning är ett obligatoriskt moment.
(Varje kursdeltagare måste granska en uppgift, och
alla uppgifter som ska redovisas för handledare måste granskas först.)
Syftet med granskningen är att du genom att kritiskt granska en annans
program ska få en ökad förståelse för hur man ska (och inte ska)
programmera.
- Slutredovisning
- Du väljer (normalt via webben) en tid för slutredovisning.
Uppgiftslydelsen, specifikationen med uppdaterad minnesbild,
besiktningsprotokollet och granskaren ska medföras till
slutredovisningen, liksom en färsk programutskrift, och
förstås programmet.
Om du tar med en egen dator till redovisningen
ska den vara uppkopplad mot Internet, eftersom vi (för att
förhindra fusk) jämför din lösning mot tidigare lösningar.
Betyg
Eftersom kursen utvecklas från år till år och betygssystemen därmed
justeras kan vi endast garantera betygssystemets giltighet i ett år
framåt. Detta är vad som gäller för kurser som startar under läsåret
2008-2009:
För att bli godkänd på kursen måste man klara av de tre momenten LAB1
(inledande arbete med labbar), LAB2 (prov på grunderna) och LAB3 (P-delen).
Kursen ger sex högskolepoäng uppdelat på följande sätt (moment):
- 1.5hp LAB1 Labbar och hemuppgifter gjorda och redovisade i tid.
- 1.5hp LAB2 Det skriftliga provet godkänt.
- 3p LAB3 P-uppgiften godkänd.
Betyget på kursen avgörs helt av P-uppgiften.
De flesta uppgifterna kan byggas på för att ge högre betyg.
I övrigt gäller följande:
- E = Godkänd P-redovisning av uppgift som lösts tillräckligt bra
(max tre påpekanden).
- D = Godkänd P-redovisning med ett perfekt program, dvs
inga anmärkningar i protokollet (väl uppdelat, ingen kodupprepning,
vettigt dokumenterat mm).
- För betyg högre än D krävs att grunduppgiften redovisas före kursomgångens slut.
- C = Kraven för D + ett perfekt program med korrekt hantering
av felaktig inmatning, dvs inga anmärkningar i protokollet
(väl uppdelat, ingen kodupprepning, vettigt dokumenterat mm).
- B = Kraven för C + en extrauppgift med betyg B (kan t ex vara
svårare algoritm). Observera att kraven på ett perfekt program
gäller hela programmet, inklusive ev extrauppgift.
- A = Kraven för B + en extrauppgift med betyg A (kan t ex vara
grafik eller avancerad algoritm).
Observera att kraven på ett perfekt program gäller
hela programmet, inklusive extrauppgiften.
För den som vill ha ut ett betyg i det gamla siffersystemet finns det en mappning:
- E eller D = 3.
- C eller B = 4.
- A = 5.
Om du är missnöjd med övningsassistentens beslut om betyg kan du
skicka ett e-brev till kursledaren där du förklarar din syn på betyget
och bifogar alla filer.
Plussa
På KTH finns av hävd en rätt att tenta om för att få högre betyg fast tentan redan är godkänd.
I kurser med andra typer av examination (än tenta) måste vi av kostnadsskäl begränsa denna rätt.
Följande regler gäller i denna kurs:
- Den som har redovisat sin P-uppgift under kursens gång kan efter det höja sitt betyg,
men bara inom ett år från kursstart.
- Krav för betygen framgår av kursprogrammet. Man kan behöva förbättra
programkvalitén eller göra vissa extrauppgifter. Man kan också göra en helt ny uppgift.
- Redovisningen görs vid något av uppsamlingstillfällena för P-uppgifter.
- Man har bara ett år från kursstart på sig att höja sitt betyg, sen är det försent.
Om kursen började i period 3 år 20089 måste man alltså redovisa innan början av period 3 år 2010.
Krav på P-uppgiftslösningen
Utöver kraven på funktionalitet som finns i uppgiftslydelsen gäller
detta alltid:
- Programmet ska vara kommenterat upptill med författare,
datum och ev revisionsdatum. Överkommentera inte programmet
i övrigt. Tänk på att det är kvalitet och inte kvantitet på
kommentarer som räknas.
- Programmet ska vara användarvänligt och presentera sig
vid programstart. Tydliga instruktioner ska ges på skärmen.
Det ska vara lätt att förstå vad programmet skriver ut.
Det är tillåtet att anta att indatafiler är felfria om
inte annat anges i uppgiftslydelsen.
- Programmet ska vara vettigt uppdelat i funktioner, och
eventuellt klasser.
Funktioner ska inte vara alltför långa (max en skärmsida). Det
ska vara lätt att i efterhand gå in och förstå och ändra i
programmet. Robust, flexibelt och lättläst är nyckelord.
- Varje variabel och funktion ska vara
försedd med kommentarer. Ange vad variabeln
representerar och vad funktionen gör. För funktioner bör man också
ange vad indata (parametrar) och utdata (retur-värde) betyder.
Det ska räcka att läsa kommentar och funktionshuvud för
att förstå hur en funktion ska användas.
- Namn på variabler och funktioner ska vara vettiga.
Alla deklarerade namn ska vara på samma språk, liksom alla
kommentarer (engelska namn och svenska kommentarer är OK).
Koden skall vara snyggt formaterad.
- Nästan identiska kodstycken ska inte upprepas. Gör
i stället generella funktioner. Inför inte i onödan
begränsningar. Inför konstanter för sådant som man kan tänkas vilja
ändra framöver (om man skulle vilja arbeta vidare med din lösning) och
för tal som inte ska ändras och går att beskriva med namn.
Detaljschema
Vecka 4 |
Lokal |
Moment |
Tis 20 jan |
10-12 |
D1 |
Förel 1: Indata/utdata, variabler |
Ons 21 jan |
8-10 |
Röd/Orange |
Labb 1 |
  |
10-11 |
Valfri plats |
Eget arbete |
|
11-12 |
CSC-biblioteket |
Repetition/frågestund |
Tor 22 jan |
13-14 |
E1 |
Förel 2: Slumptal, if-satsen, while-slingan, programplanering |
Fre 23 jan |
9-10 |
Sal: |
Grupptimme 1: Redovisa labb 1 |
|
Vecka 5 |
|
|
Tis 27 jan |
11-12 |
D1 |
Förel 3: for-slingan, strängar, tupler |
Ons 28 jan |
8-10 |
Röd/Orange |
Labb 2 |
|
10-11 |
Valfri plats |
Eget arbete |
|
11-12 |
CSC-biblioteket |
Repetition/frågestund |
Tor 29 jan |
13-14 |
E1 |
Förel 4: Listor, uppslagslistor |
Fre 30 jan |
9-10 |
Sal: |
Grupptimme 2: Redovisa labb 2 |
|
Vecka 6 |
|
|
Tis 3 feb |
11-12 |
D1 |
Förel 5: Funktioner, parametrar, namnrymden |
Ons 4 feb |
8-10 |
Röd/Orange |
Labb 3 |
|
10-11 |
Valfri plats |
Eget arbete |
|
11-12 |
CSC-biblioteket |
Repetition/frågestund |
Tor 5 feb |
13-14 |
E1 |
Förel 6: Filer, särfall, konservering |
Fre 6 feb |
9-10 |
Sal: |
Grupptimme 3: Redovisa labb 3 |
|
Vecka 7 |
|
|
Tis 10 feb |
11-12 |
D1 |
Förel 7: Klasser & objekt I |
Ons 11 feb |
8-10 |
Gul/Brun |
Labb 4 |
|
10-11 |
Valfri plats |
Eget arbete |
|
11-12 |
CSC-biblioteket |
Repetition/frågestund |
Tor 12 feb |
13-14 |
E1 |
Förel 8: Klasser & objekt II |
Fre 13 feb |
9-10 |
Sal: |
Grupptimme 4: Redovisa labb 4 |
|
Vecka 8 |
|
|
Tis 17 feb |
11-12 |
D1 |
Förel 9: Klasser & objekt III |
Ons 18 feb |
8-10 |
Röd/Orange |
Labb 5 |
|
10-11 |
Valfri plats |
Eget arbete |
|
11-12 |
CSC-biblioteket |
Repetition/frågestund |
Tor 19 feb |
13-14 |
E1 |
Förel 10: Klasser & objekt IV |
Fre 20 feb |
9-10 |
Sal: |
Grupptimme 5: Redovisa labb 5 |
|
Vecka 9 |
|
|
Mån 23 feb |
13-14 |
Sal: |
Grupptimme 6: Frågestund inför provet (Grupp 3 i 1535) |
Tis 24 feb |
10-12 |
D1 |
Förel 11: Repetition inför provet, info om P-uppgiften |
|
Vecka 10 |
|
|
Tis 3 mars |
10-11 |
D31, D32, D33, D34, D35 |
Prov |
|
11-12 |
D1 |
Förel 12: Provrättning |
Ons 4 mars |
11-12 |
Sal: |
Grupptimme 7: Val av P-uppgift, info om specen (grupp 4 i 1535) |
|
Vecka 11 |
|
Tentavecka |
|
Vecka 12 |
|
|
Mån 16 mars |
10-12 |
Sal: |
Specredovisning |
|
13-14 |
Valfri plats |
Eget arbete |
|
14-16 |
Röd/Orange |
Labb, P-uppgiftens prototyp |
Tor 19 mars |
9-10 |
Röd/Orange |
Grupptimme 8: Visa prototypen |
|
Vecka 13 |
|
|
Tis 24 mars |
9-10 |
D1 |
Förel 13: Sökning, sortering |
|
13-15 |
Röd/Orange |
Labb, arbete med P-uppgiften |
|
15-16 |
D1 |
Förel 14: Avlusning |
Tor 26 mars |
11-12 |
Sal: |
Grupptimme 9: Avlusningstips |
|
Vecka 14 |
|
|
Tis 31 mars |
9-10 |
D1 |
Förel 15: Felhantering |
|
13-15 |
Gul/Brun |
Labb, arbete med P-uppgiften |
|
15-16 |
D1 |
Förel 16: GUI I |
Tor 2 apr |
9-10 |
Sal: |
Grupptimme 10: Genomgång av granskningsprotokollet |
|
Vecka 15 |
|
Påsklov |
|
Vecka 16 |
|
|
Tis 14 apr |
9-10 |
D1 |
Förel 17: GUI II |
|
13-15 |
Röd/Orange |
Labb, arbete med P-uppgiften |
|
15-16 |
F2 |
Förel 18: Granskning, programkvalitet |
Tor 16 apr |
9-10 |
Sal: |
Grupptimme 11: Inför redovisningen |
|
Vecka 17 |
|
|
Tis 21 april |
8-10 |
Röd/Orange |
Labb, arbete med P-uppgiften |
|
15-17 |
Röd/Orange |
Labb, arbete med P-uppgiften |
|
Vecka 18 |
|
|
Tis 28 april |
13-15 |
Röd/Orange |
Redovisning av P-uppgiften |
|
15-17 |
Röd/Orange |
Redovisning av P-uppgiften |
|
Vecka 19 |
|
|
Tis 5 maj |
8-10 |
Röd/Orange |
Reservtid |
|
15-17 |
Röd/Orange |
Reservtid |
|
Kursutveckling och synpunkter på kursen
Eftersom denna kurs ges för många studenter under flera års tid är
vi tacksamma för synpunkter på kursen. En datorstödd kurutvärdering
kommer att göras, men lämna gärna också synpunkter direkt till lärarna.