Hoppa till huvudinnehållet
Till KTH:s startsida

DD1310 Programmeringsteknik 6,0 hp

Kurs-PM HT 2025-51119

Version 1 – 2025-08-21 15:38:40

Kursomgång

CELTE (Startdatum 2025-08-25, Svenska)

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kurs-PM HT 2025

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

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
  • konstruera programmerarvänliga program med lämpliga namn och kommentarer, konsekvent
  • språk och typografi
  • konstruera interaktiva program
  • använda och konstruera sammansatta datatyper och klasser
  • överföra data mellan fil och program
  • granska andras program

i syfte att senare

  • kunna använda programmering för att lösa problem
  • kunna tillämpa problemlösningsmetodiken även inom andra områden än programmering
  • kunna diskutera programutveckling med experter
  • kunna bedöma program i storleksordningen på ca femhundra rader kod
  • 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 ett upplägg med föreläsning(ar), en laboration och en övning per vecka. 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), lämnar in en komplett lösning på laborationsuppgiften, 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 grupp och får göra komplettering av det missade labbtillfället/övningstillfället.

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 redan kan ha poäng på vissa uppgifter på provet. För att få bonuspoäng krävs att du får godkänt på 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ång 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 datorsal på KTH. Provet kommer att ges via Canvas i en nedlåst examinationsmiljö. Om kursens bonusgivandetester gjorts med godkänt resultat innan utsatt deadline så kan en också ha samlat bonuspoäng till KS:en.

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 laborationspass, ö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 (specifikation, prototyper, granskning 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

  • LAB3 - Laborationsuppgifter 3, 3,0 hp, betygsskala: A, B, C, D, E, FX, F
  • LAB2 - Laborationsuppgifter 2, 1,5 hp, betygsskala: P, F
  • LAB1 - Laborationsuppgifter 1, 1,5 hp, betygsskala: P, 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.

När kurs inte längre ges har student möjlighet att examineras under ytterligare två läsår.

Kursen har frivilliga quiz som ger bonuspoäng till LAB2 om de genomförs inom en begränsad tid.
LAB2 genomförs som ett datorprov.
LAB3 är ett individuellt programmeringsprojekt.

Avsnittet nedan kommer inte från kursplanen:

Laborationsuppgifter 1 ( LAB1 )

Utgörs av 7 laborationsuppgifter som löses i par. Uppgiftslydelserna finns i Canvas, där framgår även kraven på uppgifterna. Uppgifterna behöver lämnas in och studenterna behöver aktivit delta på laborationerna (då görs kamratgransning) och övningarna (redovisning, genomgång och fördjupning) för att bli godkänd på denna del.

Laborationsuppgifter 2 ( LAB2 )

Utgörs av en KS som görs indivdiuellt på utsatt datum i datasal. Till detta tillfälle kan du, genom att ha gjort kursens tester i tid, ha samlat bonuspoäng som gör att du kan hoppa över vissa frågor.

Laborationsuppgifter 3 ( LAB3 )

Utgörs av en större individuell projektuppgift (p-uppgift) som löses i flera steg. Denna uppgift bedöms enligt betygsskalan A-F enligt kriterierna nedan.

Målrelaterade betygskriterier/bedömningskriterier

Mål

E

D

C

B

A

Kunna konstruera 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 styrstruktur-er.

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 konstruera programmerarvänliga program med lämpliga namn och kommentarer, konsekvent språk och typografi

Genom hela programkod-en har, i stort sätt, lämpliga identifierar- namn och kommentar använts. Namn har valts på ett så sätt att de gör koden lättläst och beskriver vad variabler innehåller och funktioner/metoder gör. Identifierar- namnen, genom största delen av koden, har samma typografi och är döpta på samma språk. I stort sätt varje funktion/metod och klass har en förklarande kommentar inklusive information om inparametrar och returvärden.

Genom hela programkod-en har lämpliga identifierar- namn och kommentar använts.  Identifierar- namnen, har samma typografi och är döpta på samma språk. Varje funktion/metod och klass har en förklarande kommentar inklusive information om inparametrar och returvärden.

 

Det har gjorts väl valda avvägning-ar kring hur långa identfierarnamnen och kommentarerna bör vara för att koden ska bli lättläst.

Genom hela programkod-en, där även ny funktionalitet lagts till, har lämpliga identifierar- namn valts och varje funktion/metod och klass har en förklarande kommentar inklusive information om inparametrar och returvärden.

Det har gjorts väl valda avvägning-ar kring hur långa identfierarnamnen och kommentarerna bör vara för att koden ska bli lättläst.

Genom hela programkod-en, som löser ett mer komplext problem, har lämpliga identifierar- namn valts och varje funktion/metod och klass har en förklarande kommentar inklusive information om inparametrar och returvärden.

Det har gjorts väl valda avvägning-ar kring hur långa identfierarnamnen och kommentarerna bör vara för att koden ska bli lättläst.

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 och varje funktion/metod och klass har en förklarande kommentar inklusive information om inparametrar och returvärden.

Det har gjorts väl valda avvägning-ar kring hur långa identfierarnamnen och kommentarerna bör vara för att koden ska bli lättläst. 

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 konstruera samman-satta datatyper och 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 valda och konstruerade datatyper, samt mer generellt vilka fördelar det finns med att använda egenkonstruerade datatyper.

Konstruerat egna datatyper och valt lämpliga sammansatt 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.

Regler kring använing av generativa AI-verktyg

Ingen tillåten användning av generativa AI-verktyg för examinerande moment

All användning av generativa AI-verktyg är förbjuden i kursens examinerande moment, det vill säga får inte användas för någon uppgift som bedöms (inlämningsuppgifter, tester och projektuppgiften). Det är dock tillåtet att använda sig av generativa AI-verktyg vid dina egna studier och när du arbetar med lektionsmaterialet. Det är tillåtet att be ett generativt AI-verktyg förklara begrepp på ett annat sätt eller ge fler exempel när du studerar men glöm inte att de svar du får kan vara felaktiga och/eller innehålla sådant som vi inte gått/går igenom i kursen.

Anledningen till att generativa AI-verktyg inte får användas för de examinerande momenten i kursen är att det är dina kunskaper och färdigheter som dessa syftar till att bedöma. Då många generativa AI-verktyg förvisso är bra på att skriva och felsöka kod, syftar den här kursen till att lära dig dessa färdigheter på en grundläggande nivå. Användning av generativa AI-verktyg för att lösa kursens uppgifter kan leda till att du missar möjlighet att lära dig kursinnehållet och att du tar genvägar för att få ett färdigt program, utan att ha förståelse och färdighet för att kunna konstruera, felsöka och skapa ditt eget. Kursens lärandemål är att du på egen hand förväntas 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
  • konstruera programmerarvänliga program med lämpliga namn och kommentarer, konskvent språk och typografi
  • konstruera interaktiva program
  • använda och konstruera sammansatta datatyper och klasser
  • överföra data mellan fil och program
  • granska andras program

Förbudet mot generativ AI innebär att

  • Alla examinerande moment måste utföras utan hjälp av generativ AI.
  • Alla inlämningar måste vara helt människoproducerade.
  • Det är inte tillåtet att använda generativa AI verktyg för felsökning av kod i inlämningsuppgifter eller för att svara på testfrågor.
  • Eventuellt AI stöd inbyggt i kodeditorer måste även det vara avstängt vid arbete med examinerande moment.

Du som student är fullt ansvarig för allt material du lämnar in och måste kunna försvara och förklara det helt utan stöd från generativ AI.

Studenter får dock använda generativ AI för stöd och handledning vid egen instudering, men bör då vara uppmärksamma på att svaren kan vara opålitliga, kan utelämna viktiga delar av kursen och även ta upp saker som ligger långt utanför kursinnehållet. Det rekommenderas att du tar i stöd av dina medstudenter och lärare för handledning och stöd, samt använder kurslitteraturen för fakta.

Disciplinära åtgärder vid otillåten AI-användning

Allt du lämnar in måste vara din egen prestation. Att använda generativ AI i kursens examinerande moment betraktas som otillåten hjälp och kan leda till disciplinära åtgärder.

Frågor eller osäkerheter?

Kontakta kursansvarig för vägledning och förtydligande av denna information, eller om du felaktigt anklagas för att ha använt generativ AI i kursens examinerande moment.

Ytterligare Information

Övriga föreskrifter

Kursplanen gäller från och med VT 2025 enligt grundutbildningsansvarigs beslut: J-2024-21888.
Beslutsdatum: 2024-10-08

Ändringar inför denna kursomgång

Det har gjorts en mindre ändring i lärandemålen, där målet som tidigare löd

  • välja lämpliga indentifierarnamn

har ersatts med målet:

  • konstruera programmerarvänliga program med lämpliga namn och kommentarer, konsekvent språk och typografi

Det har även lagts till regler kring användning av generativ AI i kursen.

Fakta om kursomgång

Startdatum

2025-08-25

Kursomgång

  • CELTE HT 2025-51119

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kontakter