Hoppa till huvudinnehållet
Till KTH:s startsida

DD1310 Programmeringsteknik 6.0 hp

Kurs-PM HT 2022-51269

Version 1 – 2022-10-31 09:08:52

Kursomgång

CENMI (Startdatum 2022-10-31, Svenska)

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kurs-PM HT 2022

Rubriker markerade med en asterisk ( * ) kommer från kursplan version HT 2020

Innehåll och lärandemål

Kursinnehåll

Grundläggande datatekniska begrepp.

Programmering i ett modernt programspråk (Python). Datastrukturer och klasser. Problemlösning genom uppdelning i delproblem. Programstrukturering. Flera mindre programmeringsuppgifter samt en större, individuell programmeringsuppgift med stor vikt på strukturering och specifikation av ingående moduler.

Lärandemål

Efter godkänd kurs ska studenten kunna

  • konstruera program utan kodupprepningar,
  • dela upp ett större problem i hanterliga delar,
  • dela upp ett program,
  • tillämpa styrstrukturer,
  • utforma och presentera användarvänliga utdata,
  • skapa flexibla applikationer,
  • välja lämpliga identifierarnamn,
  • konstruera interaktiva program,
  • använda och konstruera sammansatta datatyper (klasser),
  • överföra data mellan fil och program,
  • granska andras program

i syfte att kunna

  • 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,
  • självständigt och i grupp kunna lösa problem genom att konstruera program på upp till femhundra rader i ett modernt programspråk.

Läraktiviteter

Kursen består av aktiviteterna föreläsningar, övningar, laborationstillfällen. 

Kursens första del -Laborationerna

Kursens 7 första veckor följer liknande upplägg med föreläsning(ar), en laboration och en övning. Under varje av dessa veckor finns det också interaktivit kursmaterial (1-2 lektioner) och tillhörande test (1-2) i Möbius, med länkar från Canvas. Under dessa veckor kommer ni arbeta med en laborationsuppgift under varje kursvecka. För att bli godkänd på dessa laborationer krävs att du är på laborationspasset (då finns tid att få hjälp med uppgiften), deltar i en kamrat-granskning och är med på genomgången på veckans övning. Om du får förhinder/är sjuk och inte kan delta, kontaktar du assistenten för din övningsgrupp.

Kursens tester rättas automatiskt och är frivilliga att genomföra. Genom att göra testerna kan du dock samla bonuspoäng till KS:en (moment LAB2), som gör att du kommer kunna hoppa över visa uppgifter på provet. För att få bonuspoäng krävs att man har rätt på samtliga frågor i testet, samt att testet har gjorts senast före den utsatta deadlinen. Du kan starta om varje test hur många gånger du vill även fast frågorna för varje gången kommer att bli lite annorlunda (men handla om samma saker).

Kursens andra del -KS:en

I slutet av period 2 kommer vi ha ett dataprov (inlagt som KS i schemat). Provet kommer att ske på utsatt tid  i en laborationssal på KTH. Provet kommer att ges via Canvas.

Kursens tredje del -P-uppgiften

Under kursens sista del kommer ni arbeta med en större individuell uppgift, kallad p-uppgift. Den kommer ni att lösa i flera steg och det kommer också att finnas ett antal schemalagda laborationer, övningar och föreläsningar som syftar till att hjälpa er med denna. Generellt är dessa moment frivilliga att gå på men det krävs att du redovisar varje steg av uppgiften på de utsatta tiderna (spec, kodskelett, prototyp och slutredovisning).

Förberedelser inför kursstart

Rekommenderade förkunskaper

Matematikkurserna från gymnasiets naturvetenskapsprogram eller motsvarande. Någon datorerfarenhet (begreppen operativsystem och fil samt erfarenhet av någon tillämpning t.ex. ordbehandling). En grundläggande kurs i matematik, till exempel SF1624/SF1625 (kan läsas parallellt).

Kurslitteratur

  • Föreläsningsmaterial (läggs upp på Canvas)
  • Övningsmaterial (läggs upp på Canvas)
  • Labbinstruktioner (läggs upp på Canvas)
  • Kursmaterial i form av interaktiva digitala lektioner (finns i Möbius, länkat från Canvas)
  • Vill du ha en kursbok utöver ovanstående material (frivilligt) rekommenderas:
    • Starting Out with Python,  4/E
      Tony Gaddis,
      ISBN-10: 0134444329, ISBN-13: 978-0134444321

Examination och slutförande

Betygsskala

A, B, C, D, E, FX, F

Examination

  • LAB1 - Laborationsuppgifter 1, 1,5 hp, Betygsskala: P, F
  • LAB2 - Laborationsuppgifter 2, 1,5 hp, Betygsskala: P, F
  • LAB3 - Laborationsuppgifter 3, 3,0 hp, Betygsskala: A, B, C, D, E, FX, F

Examinator beslutar, baserat på rekommendation från KTH:s handläggare av stöd till studenter med funktionsnedsättning, om eventuell anpassad examination för studenter med dokumenterad, varaktig funktionsnedsättning.

Examinator får medge annan examinationsform vid omexamination av enstaka studenter.

Målrelaterade betygskriterier/bedömningskriterier

Mål

E

D

C

B

A

Kunna konstru-era program utan kodupp-repningar.

För en given uppgift, konstruerat ett program som är fritt, eller nästintill fritt, från kodupprep- ningar. Studenten kan också förklara vad det finns för nackdelar med kodupprepn-ingar och varför det bör undvikas.

För en given uppgift, konstruerat ett program som är helt fritt från kodupprep- ningar. 

För en given uppgift, där ny funktionali-tet har lagts till, konstruerat ett program som är helt fritt från kodupprep- ningar. 

För en given mer komplex uppgift, konstruerat ett program som är helt  fritt från kodupprep- ningar. 

För en given mer komplex uppgift, där även en större inbyggd modul (t.ex. Tkinter) används, konstruerat ett program som är helt fritt från kodupprep- ningar. 

Kunna dela upp ett större problem i hanterliga delar.

Delat upp ett givet större problem till mindre och hanterliga delproblem utan väsentliga brister.

Delat upp ett givet större problem till mindre och hanterliga delproblem utan några brister.

Delat upp ett givet större problem, där krav på ny funktionali-tet läggs till, till mindre och hanterliga delproblem.

Delat upp ett större och mer komplext problem till mindre och hanterliga delproblem.

Delat upp ett större och mer komplext problem, där en större inbyggd modul används, till mindre och hanterliga delproblem.

Kunna dela upp ett program.

Delat upp ett program så att det består av generella funktioner och klasser med tillhörande metoder utan väsentliga brister.

Delat upp ett program så att det består av generella funktioner och klasser med tillhörande metoder utan några brister.

Delat upp ett program, där ny funktionali-tet i programmet har lagts till, så att det består av generella funktioner och klasser med tillhörande metoder.

Delat upp ett mer komplext program så att det består av generella funktioner och klasser med tillhörande metoder.

Delat upp ett program, som också använder en större inbyggd modul, så att det består av generella funktioner och klasser med tillhörande metoder.

Kunna tillämpa styrstrukturer.

För en given programmer-ingsuppgift, i större delen av det utvecklade programmet, har lämpliga styrstrukturer för att lösa uppgiften används.

För en given programmer-ingsuppgift, har genom hela programm-et lämpliga styrstruktur-er för att lösa uppgiften används.

För en given programmer-ingsuppgift, där ny funktionali-tet har lagts till, har lämpliga styrstruktur-er för att lösa uppgiften används genom hela programmet.

För en mer komplex programm-eringsupp-gift, har lämpliga styrstrukturer för att lösa uppgiften används genom hela programmet.

För en mer komplex programmer-ingsuppgift, som också använder en större inbyggd modul, har lämpliga styrstrukturer för att lösa uppgiften används genom hela programmet.

Kunna utforma och presentera användar-vänliga utdata.

Utdatat från programmet presenteras oftast på ett sådant sätt att det är tydligt vad det är för data som presenteras och varför. 

Utdatat från programmet presenteras på ett sådant sätt att det är tydligt vad det är för data som presenteras. I mer komplexa fall får användaren alltid en förklaring till utskriften.

Om ett grafiskt gränssnitt används så är grafiska komponent-er utvalda och designade för att göra presentationen av utdata användar-vänlig. 

Kunna skapa flexibla applika-tioner.

För en given programmer-ingsuppgift, har en applikation konstruerats som är flexibel. Det är flexibelt i den mening att programmet klarar av att lösa en större eller en annan instans av problemet genom att införa små förändringar i programkod-en.

För en given programmer-ingsuppgift, har en applikation konstruerats som har stor flexibilitet och enkelt kan ändras om så skulle behövas. 

För en given programmer-ingsuppgift, där ny funktionali-tet också har lagts till, har en applikation konstruerats som har stor flexibilitet och enkelt kan ändras om så skulle behövas. 

För en given, mer komplicer-ad  programm-eringsupp-gift, har en applikation konstruerats som har stor flexibilitet och enkelt kan ändras om så skulle behövas. 

För en given, mer komplic-erad programmer-ingsuppgift som också använder en större inbyggd modul, har en applikation konstruerats som har stor flexibilitet och enkelt kan ändras om så skulle behövas. 

Kunna välja lämpliga identifier-arnamn.

Genom hela programkod-en har, i stort sätt, lämpliga identifierar- namn valts. Lämpliga på ett så sätt att de gör koden lättläst och   beskriver vad de innehåller. Identifierar- namnen, genom största delen av koden, har samma typografi och är döpta på samma språk.

Genom hela programkod-en har lämpliga identifierar- namn valts. Identifierar- namnen har genom hela koden samma typografi och är döpta på samma språk.


Väl valda avvägning-ar kring hur långa identfierar-namnen bör vara för att koden ska bli lättläst har gjorts.

Genom hela programkod-en, där även ny funktionali-tet lagts till, har lämpliga identifierar- namn valts. 


Väl valda avvägningar kring hur långa identfierar- namnen bör vara för att koden ska bli lättläst har gjorts.

Genom hela programkod-en, som löser ett mer komplext problem, har lämpliga identifierar- namn valts.


Väl valda avvägningar kring hur långa identfierar- namnen bör vara för att koden ska bli lättläst har gjorts.

Genom hela programkod- en, som löser ett mer komplext problem och som även använder en större inbyggd modul, har lämpliga identifierar- namn valts.


Väl valda avvägningar kring hur långa identfierar- namnen bör vara för att koden ska bli lättläst har gjorts. 

Kunna konstruera interaktiva program.

Ett program har konstruerats  som tar in inmatning från användaren genom att ställa tydliga  förfrågningar till användaren och (eller för uppgifter som inte behöver ta inmatning) där det tydligt framgår hur indatafiler ska vara utformade. Dessa är utformade för att minimera risken av feltolkning och missförstånd hos användaren, och i  programmet finns det inga väsentliga brister kring detta.

Ett program har konstruerats som tar in inmatning från användaren genom att ställa tydliga  förfrågningar till användaren och (eller för uppgifter som inte behöver ta inmatning) där det tydligt framgår hur indatafiler ska vara utformade. Dessa är utformade för att minimera risken av feltolkning och missförstånd.

Ett program har konstruerats som, utöver att ställa tydliga frågor till användaren, också hanterar eventuella inmatningsfel som användaren kan göra. Oavsett vad användaren matar in så krashar inte programmet.


För vissa uppgifter ställs också krav på att programmet ska kunna hantera formaterings- fel i indatafilerna.

Ett program har konstruerats som löser ett mer komplicerat problem, och bibehåller samma mått av interaktivitet och felhantering som för C-nivå.

Om uppgiften innehåller att implement-era ett grafiskt användar- gränssnitt på denna nivå, ska lämpliga grafiska komponent-er valts ut för att presentera utdata i ett grafiskt användar- gränssnitt. Även här ställs det krav på att programmet ska presenteras så det är tydligt för användaren vad som ska matas in och det  ska ha felhantering så att det inte kraschar om användaren gör fel.

Kunna använda och konstru-era samman-satta datatyper (klasser).

För en given programmeringsuppgift, konstruerat minst en egen klass som används genom programmet för att lösa uppgiften. Studenten kan förklara och motivera sina val kring hur den egna datatypen är konstruerad, samt mer generellt vilka fördelar det finns med att använda egenkonstruerade datatyper.

Konstruerat egna datatyper för att lösa ett mer komplicerat problem.

Konstruera egna datatyper som också ärver från eller på annat sätt är integrerade med en  inbyggd större modul (t.ex. Tkinter)

Kunna överföra data mellan fil och program.

För ett givet problem konstruerat och/eller skapat en textfil som läses från/till av ett program, beroende på vad som är lämpligt för problemet.

Se till att ingen data som eventuellt uppdateras medan det att det utvecklade programmet är igång, försvinner mellan programkörningarna. Felhantering av indata/inmatning ska göra att data som uppdaterats aldrig går förlorad. 

Kunna granska andras program

Läsa och gå igenom ett program som är utvecklat av någon annan. Utifrån givna punkter kunna gå igenom programmet och identifiera eventuella brister. Kunna ge återkoppling till programutvecklaren om vilka styrkor och svagheter programmet har. 

Möjlighet till plussning

Plussning är möjligt, men bara fram till ett år från kursomgångens start, vilket normalt sammanfaller med när nästa års motsvarande kursomgång börjar.

Etiskt förhållningssätt

  • Vid grupparbete har alla i gruppen ansvar för gruppens arbete.
  • Vid examination ska varje student ärligt redovisa hjälp som erhållits och källor som använts.
  • Vid muntlig examination ska varje student kunna redogöra för hela uppgiften och hela lösningen.

Ytterligare Information

Ingen information tillagd

Fakta om kursomgång

Startdatum

2022-10-31

Kursomgång

  • CENMI HT 2022-51269

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kontakter