http://www.nada.kth.se/kurser/kth/2D1311/02-03/V/

KTH 2D1311 Programmeringsteknik med PBL, 2002-2003
Särskild information för V1
Nada
Senaste nytt
Hjälp
Vanliga frågor och fel
Referenser
Registrering
Viktiga datum
Detaljschema
Aktuell vecka
PBL-introduktion
Instuderingsdel
J-del
Betyg
Allmänna kurssidan
Förkunskaper
Kurslitteratur
Hederskodex
Lärare
Synpunkter på kursen
Datorsalar
(info till handledare)

Senaste nytt


Hjälp och handledning

Hjälp finns att få (i prioritetsordning):
  1. Från "Vanliga frågor".
  2. Från länkar i detaljschemat.
  3. Från kurslitteraturen.
  4. Från referenserna på webben. Till exempel finns det ett interaktivt minnesritarexempel. Tyvärr fungerar den inte med alla kombinationer av Unix-Netscape. På PC och Mac är det inga problem.
  5. Genom diskussion med labbkamraten.
  6. Under laborationerna.
  7. Via datorbrev till en lärare. Många lärare tar hand om mer än en kurs. Var vänlig och börja alla datorbrev med ämnesraden (subject) "prgv02: ..." när du kontaktar en lärare i kursen.
  8. Under läsveckor av allmän handledare i Nadas datorsalar (Osquars Backe 2, plan 4) vardagar klockan 11-13, 17-20. Rummet finns mellan sal gul och grön (knacka och fråga efter allmänhandledare). Deras schema finns på webben.
  9. Under redovisningstillfällena.

För datorrelaterade fel (inloggningsproblem, epost, trasiga datorer etc), se "Datorsalar".


Referenser


Viktiga datum

2002-08-27 (ti v.35) Kursstart klockan 08 i V2.
2002-09-03 (ti v.36) Sista dagen för frivilligt prov 1. Finns numera inget sista datum. Detta prov är numera ett träningsprov som kan göras flera gånger.
2002-09-10 (ti v.37) Sista dagen för frivilligt prov 2. Finns numera inget sista datum. Detta prov är numera ett träningsprov som kan göras flera gånger.
2002-09-17 (ti v.38) Sista dagen för frivilligt prov 3. Finns numera inget sista datum. Resultatet på detta prov är efterskänkt på grund av problem med provsystemet.
2002-09-24 (ti v.39) Sista dagen för frivilligt prov 4. Ändrat datum till 2002-10-01 (ti v.40) på grund av problem med provsystemet.
2002-10-01 (ti v.40) Sista dagen för frivilligt prov 5. Även sista dagen för inlämning av specifikationen. Ändrat! Specifikationen kan numera lämnas in till och med 2002-10-04 (fr v.40). För frivilligt prov 5 gäller dock liksom tidigare tisdagen.
2002-10-08 (ti v.41) Dag för uthämtning av specifikationen och uppvisandet av minnesbild. Även dag för slutprovet!
2002-11-21 (to v.47) Start av J-redovisningar.
2002-12-05 (to v.49) Sista chansen för J-redovisning under denna kursomgång. Kursomgångens sista dag.

Preliminärt detaljschema

Detaljschemat beskriver vad som gås igenom på föreläsningar och labbar. Här finns också läshänvisningar till boken samt länkar till föreläsningsanteckningar och Javaexempel som tas upp på under olika sammanhang.

Detaljschemat är preliminärt och moment kan stuvas om. Målsättningen är dock att behålla momentens inbördes ordning.

Vecka Aktivitet
35
  • Föreläsning: Programmeringsteknik med PBL (OH-version, utskriftsversion)
    • Varför ska jag lära mig programmeringsteknik?
    • Vad måste jag göra i kursen?
    • Vad är programmeringsteknik?
    • Vad är PBL?
    • Labbkompisar
    Föreläsning: Grunderna (OH-version, utskriftsversion)
    (Avsnitt ur boken: 1, 19.4-19.7, 2, 3.1-3.3, 4, 14.1-14.5, 14.8-14.11, 7)
    • Programmering med Java
    • Programspråket Java
    • Källkodsexempel
    • Källkod
    • Java API-exempel
    • In- och utmatning
    Javafiler: Schema.java, InOchUtmatning.java.
  • Labb: Introduktion till datormiljön, registrering och eget litet javaprogram.
    Javafiler: startup.bat, _emacs, Maze.java.
36
  • Föreläsning: Mer källkod (OH-version, utskriftsversion)
    (Avsnitt ur boken: 12, 15, 16, 8.1-8.4, 10)
    • Styrstrukturer
    • Val
    • Slingor
    • Operatorer
    • Källkodsexempel med minne
    Föreläsning: Datastrukturer (OH-version, utskriftsversion)
    (Avsnitt ur boken: 3, 6, 28)
    • Vad är en datastruktur?
    • Vad är en datatyp?
    • Primitiva datatyper i Java
    • Icke-primitiva datatyper i Java
    • Minnesexempel med datastrukturer
    • Vektorer i Java
    Föreläsning: Prototypprogrammering och metoder (OH-version, utskriftsversion)
    (Avsnitt ur boken: 14, 19.7)
    • Prototypprogrammering
    • Anrop kontra metoddeklaration
    • Metoddeklarationens huvud
    • Exempel med anrop av matematikmetod
    • Exempel med ordvändning
    Javafiler: DoWhile.java, Delbarhet.java, Ordspel.java, Roturdragning.java.
  • Labb: PBL-intro och frivilligt prov 1.
37
  • Föreläsning: Objektorienterad programmering (OH-version, utskriftsversion)
    (Avsnitt ur boken: 20, 21.1-21.4, 21.6, 22, eventuellt 19)
    • Vad är objektorienterad programmering?
    • Klasser och instanser
    • Instansiering
    • Abstraktion
    • Instansmetoder
    • Exempel: skapa bilar
    Javafiler: Mall.java, filer skapade under föreläsningen.
  • Labb: PBL-intro och frivilligt prov 2.
38
39
40
  • Föreläsning: Information om J-delen (OH-version, utskriftsversion)
    (Avsnitt ur boken: 14.11)
    • Vad är en J-uppgift?
    • Vad måste jag göra?
    • Specifikation
    • Granskning
    • Slutredovisning
    • Miniexempel: Kalkylator
    Javafiler: kalkylatorexemplet.
  • Labb: Specifikationsskrivning, frivilligt prov 5 och specifikationsinlämning.
41
  • Föreläsning: Grafik (OH-version, utskriftsversion)
    • Grafiska program
    • Grafiska användargränssnitt
    • Arv
    • Metodsupport
    • Händelser
    • Litet grafikexempel: KlickApplet
  • Labb: Utlämning av specifikationer, uppvisande och diskussion kring minnesbilder. Slutprov!
44
  • Labb: J-delshjälp.
45
  • Labb: J-delshjälp.
46
  • Labb: J-delshjälp.
47
  • Labb: J-delshjälp. J-uppgiftsredovisningar.
48
  • Labb: J-delshjälp. J-uppgiftsredovisningar.
49
  • Labb: J-uppgiftsredovisningar (sista redovisningsveckan under denna kursomgång).


Registrering

För att vi ska kunna rapportera in resultat måste du registrera dig till kursen. Detta görs normalt sett på första laborationen genom att du fyller i ett registreringsformulär. För att du sedan ska få ut dina poäng krävs dessutom att ditt kansli har anmält dig till kursen. Som en obligatorisk kurs ska detta ske med automatik.

PBL-introduktion

Efter en inledande introduktionslaboration kommer du under två veckor arbeta med några få miniproblem ("PBL-intro") som du löser med hjälp av prblembaserat lärande (PBL). Tanken är att du efter dessa två veckor ska kunna lösa liknande problem på egen hand (så långt som möjligt).

Miniproblemen löser du på samma sätt som ditt egna program i introduktionslaborationen, d v s genom att utgå från ett programskelett (som fungerar), införa steg-för-steg-kommentarer om vad som ska göras och sedan följer prototypprogrammeringsprincipen (liten ändring, kompilering och provkörning, liten ändring, o s v...).


Instuderingsdel

Kursens första moment, LAB1, består av ett stort antal instuderingsfrågor som du laborerar med i labbgrupper om två personer. Problem och lösningar diskuteras inom labbgruppen och med handledare. Med jämna mellanrum kontrollerar du dina kunskaper genom att göra frivilliga prov.

Som avslutning av instuderingsdelen kommer kursens andra moment, LAB2, vilket utgörs av ett slutprov som du måste klara.


J-del

Kursens tredje moment, LAB3, är en större, individuell programmeringsuppgift i Java; en "J-uppgift". J-delen redovisas i tre steg under kursens andra period. Uppgifterna är tänkta att vara något så när svåra och tidskrävande, räkna med ca 80 timmar.
Specifikation
Innan programmet skrivs ska en datorskriven specifikation lämnas in. Syftet med specifikationen är att du ska tänka igenom problemet innan du försöker lösa det. Specifikationen ska vara skriven i en .java-fil, vara kompilerbar och lämnas in via webben. En handledare kommer att kommentera den och ge den betyget godkänd/underkänd. Vid återlämningen ska du ta med dig en minnesbild över programmet. Blir du underkänd på själva specen eller minnesbilden måste du dokumentera ditt färdiga program med javadoc.
Prototyper istället för specifikation
På en del kursomgångar kan man istället för att skriva en specifikation komma överens med vissa handledare om att redovisa en eller flera prototyper. Detta kan spara tid för den som vet hur man ska göra och sådana som vill prova sig fram. Om du kör fast med dina prototyper kan handledaren kräva att du skriver en specifikation i alla fall.
Granskning
Innan det färdiga programmet kan redovisas för en handledare ska det testas (granskas) av en student. Studenten får du välja själv, men för din egen skull bör det vara någon ovän, eller kritisk person. Vid testen ska teststudenten kritiskt granska ditt program, testköra det och föra ett besiktningsprotokoll (pdf, ps). Denna granskning är ett obligatoriskt moment. Varje kursdeltagare måste granska en uppgift. Alla uppgifter som ska redovisas för handledare måste granskas först. Om du inte hittar något program att granska så måste du istället dokumentera ditt program med javadoc. 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. Erfarenhetsmässigt ökar samtidigt chansen att bli godkänd vid redovisningen med minst 50%.
Tips! Välj granskare först när du är klar att redovisa, och välj då någon som också är klar med sitt program, så att ni kan granska varandra.
Slutredovisning
Du väljer (normalt via webben) en tid för slutredovisning. Specifikationen med uppdaterad minnesbild, besiktningsprotokollet och granskaren ska medföras till slutredovisningen. Granskare som inte medföljer till slutredovisningen har ingen chans att försvara sin granskning och riskerar därmed att bli underkända om handledaren finner granskningen undermålig.

Det finns en lista på J-uppgifterna med länkar till lydelserna för att du ska kunna skumma och bestämma dig för en uppgift.

J-uppgifterna är av olika omfång vilket kräver olika mycket tid, men tidsåtgången är framförallt beroende av dina kunskaper när du börjar med J-uppgiften.

Som ett komplement till de "inbyggda" finesserna i Java så finns ytterligare Javafiler för J-uppgiften. Utnyttja gärna dessa, men tänk på att i enlighet med hederskodexen ALLTID ange varifrån koden kommer när det inte är din egen.

Efter kursens slut kan J-delen endast redovisas i omtentaperioder. Eftersom datorsystemen byts eller uppgraderas årligen så bör du vara medveten om att tiden du har på dig att redovisa din J-del är begränsad. Väntar du mer än ett år från kursstart med att redovisa kan lydelsen till din J-uppgift behöva bytas ut. Du måste då ta kontakt med kursledaren. Vi reserverar oss för att byten av datorsystem kan medföra att vissa eller samtliga J-uppgifter inte går att utföra i framtiden. Du kan alltså bara vara säker på att det går att redovisa din J-del fram till nästa kursstart.

Krav på J-uppgiftslösningen

Utöver kraven på funktionalitet som finns i uppgiftslydelsen gäller detta alltid:

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. Ingen felkoll behöver göras för att upptäcka om indatafiler verkligen existerar.

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 vettigt uppdelat i klasser och metoder, och metoder 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 klass, instansvariabel och metod ska vara försedd med kommentarer. Ange vad klassen och variabeln representerar och vad metoden gör. För metoder bör man också ange vad indata (parametrar) och utdata (retur-värde) betyder. Det ska räcka att läsa kommentar och metodhuvud för att förstå hur en metod ska användas.

Namn på klasser, variabler och metoder 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 klasser och metoder. 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.


Betyg

För att bli godkänd på kursen måste man klara av de tre momenten LAB1 (inledande arbete med labbar, PBL-uppgifter eller instuderingsfrågor beroende på kursomgång), LAB2 (prov på grunderna) och LAB3 (J-delen). Kursen ger fyra högskolepoäng uppdelat på följande sätt (moment):
1p LAB1 Labbarna, instuderingsfrågorna eller PBL-uppgift gjord. Detta tillgodoräknas om slutprovet klaras eller om labbarna 1-5 redovisas (grafiklabben 6 är frivillig), minst 60% av instuderingsfrågorna redovisas respektive PBL-uppgiften redovisas.

1p LAB2 Slutprovet godkänt.

2p LAB3 J-uppgiften godkänd.

Gradering av betyget på kursen avgörs helt av J-uppgiften enligt följande:
3 = Godkänd J-redovisning med en riktig minnesbild.

4 = Kraven för 3 + ett "perfekt" program, dvs inga anmärkningar i protokollet (väl uppdelat, ingen kodupprepning, vettigt dokumenterat, dock utan krav på javadoc mm).

5 = Kraven för 4 + en extrauppgift med grafik eller avancerad algoritm.

6 = Kraven för 5 + en egen vettig extrauppgift (som godtagits av kursledaren). P g a KTHs centrala administrations sätt att hantera betygsrapporteringen rapporteras betyget sex separat efter terminsslutet.

Vill du i efterhand höja betyget finns det regler att följa, se regler för plussning på programmeringsteknikkursen.


Förkunskaper

Kursen förutsätter att man känner till begrepp som operativsystem, filer och redigeringsprogram. Den som inte gör det uppmanas att ägna extra mycket tid åt kursen i början. Vissa föreläsningar anordnas speciellt som stöd för den som behöver det.

Kurslitteratur

Kurslitteraturen ska läsas på egen hand parallellt med kursen. Föreläsningar, övningar och laborationer täcker endast en del av kursmaterialet. Kurslitteraturen består av: Överblivna papper som delas ut under kursens gång finns också att hämta i bokhyllan utanför studentexpeditionen. Efter kursens slut kastas i allmänhet alla överblivna papper som hör till kursen.

Hederskodex

På Nada används en gemensam hederskodex för alla Nadakurser. Du är själv ansvarig att läsa igenom och följa den.

Lärare

Kursledare är Erik Forslin.
Datorpost: efo@nada.kth.se
Telefon: 08-7909690

Enklaste sättet att komma i kontakt med kursledaren är att skicka datorbrev, näst enklast är att lägga en lapp i postfacket på Nada, Osquars Backe 2, 4 tr eller skicka ett vanligt brev till Nada, KTH, 100 44 Stockholm. Vill man träffa kursledaren personligen, se kursledarens hemsida.

Examinator på kursen är Olle Bälter.

Kursens övningsassistenter är:

GruppNamnEpost 
 Erik Forslinefo@nada.kth.seEget material
 Michael Ahlberge99_mah@e.kth.seEget material
 Måns Rullgårde99_mru@e.kth.seEget material
 Thomas Larssonm94_las@nada.kth.seEget material

Synpunkter på kursen

Synpunkter på kursen vill vi väldigt gärna ha. Synpunkter kan lämnas direkt till någon lärare i samband med lektioner, via datorpost eller vanlig post. Vid kursens slut kommer en datoriserad enkätundersökning genomföras. Denna enkät är anonym och väldigt viktig för kursen såväl som för lärarna.

Kom under kursens gång ihåg att ju snabbare du kommer med kommentarer, desto snabbare kan du ta del av förbättringar!

Förra årets sammanfattning av kursanalysen beskriver den gångna kursomgången så här:

Kursens inledning var i år ganska stökig. Den öppna intagningen på V ledde till att studenter började kursen så sent som i tredje veckan. Dessutom fick jag intrycket av att andelen "helt ointresserade" var större i år än tidigare och denna grupp påverkar resten av klassen under föreläsningarna. Jag vet dock inte om det sistnämnda med säkerhet kan härledas till den öppna intagningen. Jämfört med tidigare år anser en större andel att kursen inte är relevant för deras utbildning/yrkesliv, vilket troligen påverkat motivationen. Andelen studenter som tycker kursen är svår är också högre än tidigare år.

Programmeringsteknik med PBL kräver att studenterna är motiverade nog att själva diskutera problemen och våga söka rätt på lösningar. För många (dock ej majoriteten) är PBL alltför krävande; de vill ofta ha svaret utan att fundera på frågan. Många studenter är dessutom införlivade i konceptet att det är svaret som är lösningen på problemet, inte vägen till svaret. Det sistnämnda sätter käppar i hjulet för kurser där lösningsmetodiken är viktigare än svaren.

Läs kursanalysen i sin helhet. Där finns även studenternas svar på kursenkäten.


Datorsalar

De datorsalar som används i kursen administreras av Mimers bar.

Adress: Osquars Backe 20
Supporttelefon: 08-7909300
Datorpost: mimer@midgard.kth.se
Öppettider: vardagar 08.00-16.30

Vänd dig till dem om du får problem med inloggning, datorpost o s v. Nada har inget ansvar för programvara i dessa salar.


^ Upp till allmänna kurssidan.


Sidansvarig: <efo@nada.kth.se>
Senast ändrad 29 augusti 2002
Tekniskt stöd: <webmaster@nada.kth.se>