Hoppa till huvudinnehållet
Till KTH:s startsida

DD100N Programmeringsteknik, webbkurs 6.0 hp

Kurs-PM VT 2023-20042

Version 1 – 2023-01-13 13:12:13

Kursomgång

prgwv23 (Startdatum 2023-01-17, Svenska)

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kurs-PM VT 2023

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

Innehåll och lärandemål

Kursinnehåll

Grundläggande datatekniska begrepp.

Programmering i ett modernt programspråk (Python). Datastrukturer. Användning av enkla grafikrutiner (för betyget A). 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.

Detaljplanering

Denna kurs ges på distans och du kommer få tillgång till allt kursmaterial via lärandeplattformen Canvas. Du kan arbeta med kursmaterialet när du själv önskar, men inlämningsuppgifterna har förbestämda deadlines som du behöver förhålla dig till. Avsnitten kommer också i en förbestämd ordning och bygger vidare på varandra. Kursen har inga schemalagda moment, men du kommer behöva boka en redovisningstid för att presentera din avslutade projektuppgift (p-uppgiften). Redovisningen görs normalt online via Zoom men du kan också kan önska att göra den på plats på KTH. Tider kommer finnas att boka i Canvas och kommer vara på dagtid under kursens sista dagar 29/5 -2/6 och 5/6 2023.

Kursens första del

Kursens första del består av 6 avsnitt, där varje avsnitt arbetas med under 1-2 veckor. Varje kursavsnitt innehåller en lektion där kursmaterialet presenteras. Detta görs främst genom förklarande text, övningsfrågor med automatisk återkoppling och kodexempel som du själv kan provköra. Till varje avsnitt finns också examinerande delar i form av ett test och en inlämningsuppgift. 

Inlämningsuppgifterna har alltid en deadline på måndag morgon kl 8:00, efter det att avsnittets datum passerat. Självklart går det bra att lämna in så långt innan deadline du vill men räkna inte med att din inlämningsuppgift blir rättat förrän deadline har passerats. Sena inlämningar rättas i mån av tid, tidigast när nästa inlämningsuppgift har haft sin deadline.

Kursens tester rättas automatiskt och ska vara avklarade för att få tillgång till nästkommande kursavsnitt. Detta är för att kursens avsnitt bygger på varandra. För att få godkänt på ett test krävs att man har rätt på samtliga frågor i testet. Du kan starta om varje test hur många gånger du vill även fast frågorna då kommer att bli lite annorlunda (men handla om samma saker).

Behöver du hjälp eller undrar något finns det diskussionsforum till varje kursavsnitt där du kan ställa frågor.

Kursens andra del

Kursens andra del börjar med en kortare lektion och ett test om grafiskt gränssnitt. Resten av kursen kommer sedan handla om en större inlämningsuppgift, en projektuppgift (så kallad p-uppgift) som ska lösas i fyra steg, där det färdiga projektet redovisas även muntligt. I den här större uppgiften får du arbeta med alla delar som du lärt dig i kursen. Tider för att redovisa projektet kommer att finnas att boka i Canvas och kommer vara på dagtid under kursens sista dagar 29/5 -2/6 och 5/6 2023.

Förberedelser inför kursstart

Rekommenderade förkunskaper

Matematikkurserna från gymnasiets naturvetenskapsprogram eller motsvarande. Någon datorerfarenhet (begreppen operativsystem och fil samt erfarehet av någon tillämpning t.ex. ordbehandling) som t.ex. kursen Förberedande kurs i programmering och datalogiskt tänkande.

Kurslitteratur

Allt kursmaterial som du behöver kommer finnas tillgängligt i Canvas, ingen ytterligare kurslitteratur behövs.

Utrustning

För att läsa kursen behöver du en dator med internetuppkoppling och möjlighet att installera Python.

Examination och slutförande

Betygsskala

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

Examination

  • LAB1 - Laborationer, 1,5 hp, Betygsskala: P, F
  • LAB2 - Laborationer, 1,5 hp, Betygsskala: P, F
  • LAB3 - Laborationer, 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.

Godkänt på LAB1 och LAB2 krävs för att få redovisa delmoment i LAB3.

Avsnittet nedan kommer inte från kursplanen:

LAB1 - Laborationer, 1,5 hp

- utgörs av 6 mindre inlämningsuppgifter.

 

LAB2 - Laborationer, 1,5 hp

- utgörs av 7 tester.

 

LAB3 - Laborationer, 3,0 hp

 -utgörs av en större individuell uppgift, som löses i flera steg.

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.

Betygskriterier

Kursbetyget sätts av den större individuella uppgiften (p-uppgiften, LAB3). Denna betygsmatris gäller för den här uppgiften:

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 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 programmet lämpliga styrstrukturer 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 programm-eringsupp-gift, som också använder en större inbyggd modul, har lämpliga styrstrukt-urer för att lösa uppgiften används genom hela programm-et.

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 kompon-enter utvalda och designade för att göra presenta-tionen 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 programm-eringsupp-gift 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ä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, 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  programm-et 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 programm-et.


För vissa uppgifter ställs också krav på att programmet ska kunna hantera formatering-sfel i indatafiler-na.

Ett program har konstruerats som löser ett mer komplicerat problem, och bibehåller samma mått av interaktivit-et och felhanter-ing 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 kompon-enter valts ut för att presentera utdata i ett grafiskt användar- gränssnitt. Även här ställs det krav på att programm-et ska presenter-as så det är tydligt för användar-en vad som ska matas in och det  ska ha felhanter-ing så att det inte kraschar om användar-en 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.

Konstruer-at 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 integrera-de 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. 

 

 

Ytterligare Information

Ingen information tillagd

Fakta om kursomgång

Startdatum

2023-01-17

Kursomgång

  • prgwv23 VT 2023-20042

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kontakter

Kommunikation i kursen

För att komma i kontakt med kursansvarig , skicka gärna meddelande via Canavs. Annars går det även bra att använda mail-adressen dd100n-ka@kth.se 

Om du har generella frågor om KTH, exempelvis om KTH-konto och kursregistrering, kan du ställa de till info@kth.se. Om du skulle behöva studievägledning under kursens gång kan du också maila info@kth.se. Skriv då att du läser DD100N som en fristående kurs och att du önskar studievägledning.

Kursansvarig

Lärare

Examinator