Skip to main content
Till KTH:s startsida

DD1331 Grundläggande programmering 5,0 hp

Kurs-PM HT 2025-51975

Version 1 – 2025-08-14 09:09:09

Kursomgång

CTFYS (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. Grafiska beskrivningar av kopplingen mellan variabelnamn, typer och data.

Lärandemål

Efter godkänd kurs ska studenten kunna

  • klassificera syntaktiska element i programkod med rätt terminologi
  • identifiera och tillämpa grundläggande datatyper, klasser och typkonverteringar
  • tillämpa och felsöka flödeskontroll samt logiska och aritmetiska uttryck
  • analysera en variabels räckvidd och livslängd
  • felsöka korta program skrivna av andra
  • skriva och felsöka längre program
  • skriva en specifikation för ett längre program
  • dela upp ett problem i hanterliga delar
  • dela upp ett program i hanterliga delar
  • använda och utvärdera god programmeringspraxis
  • evaluera, felsöka och med rätt terminologi beskriva rekursiva algoritmer
  • kombinera programspråkets inbyggda funktioner med egna funktioner för att lösa programmeringsproblem

i syfte att

  • kunna utföra beräkningar och lösa programmeringsproblem
  • vara förberedd för fortsättningskursen i datalogi.

För högre betyg ska studenten dessutom kunna

  • implementera ett interaktivt grafiskt användargränssnitt.

Läraktiviteter

Föreläsningar är strukturerade presentationer av ämnesområden som är centrala för kursen. För en grundkurs i programmering kan detta innebära introduktion till programmeringsspråk, grunderna i algoritmutveckling, programmeringsparadigm och andra centrala koncept inom ämnet. Föreläsningarna har akademisk kvart, vilket innebär att de börjar en kvart efter utsatt tid.

Varför förväntas ni gå på föreläsningarna?

  1. Strukturerad kunskapsöverföring: Föreläsningar ger en organiserad genomgång av kursmaterialet, vilket kan underlätta förståelsen för studenter.
  2. Tillfälle till interaktion: Även om föreläsningar ofta är ensidiga finns det ofta möjligheter att ställa frågor och få omedelbar återkoppling från föreläsaren.
  3. Kontext och sammanhang: Föreläsare har möjlighet att ge exempel, dra paralleller till verkliga situationer och förklara varför vissa koncept är viktiga. Detta ger studenterna en djupare förståelse för materialet.
  4. Motivation: Att höra en passionerad föreläsare tala om ett ämne kan inspirera och motivera studenter att dyka djupare in i materialet på egen hand.

Vad får ni ut av föreläsningarna?

  1. Förståelse: Lyssna, anteckna lagom mycket och interagera under föreläsningarna så går ni därifrån klokare än innan.
  2. Guidning: Föreläsare kan peka ut viktiga delar av kurslitteraturen, betona centrala koncept och varna för vanliga misstag.
  3. Exempel: Föreläsningar i programmering kan inkludera kodexempel som belyser koncepten som diskuteras. Att se dessa exempel livekodas kan hjälpa er att bättre förstå ämnet.
  4. Nätverk: Föreläsningarna ger er möjlighet att träffa andra med liknande intressen, ställa frågor och diskutera ämnet utanför klassrummet.
  5. Förvänta er inte att föreläsningar ska kunna ersätta att läsa boken.

Vad förväntas av er inför, under och efter föreläsningarna?

  1. Förberedelse: Följ kursen genom att läsa boken, göra OLI-materialet och kom igång och träna på labbarna.
  2. Anteckna lagom: Ett väldigt bra sätt att följa med på en föreläsning är att anteckna stödord långsamt. Att försöka skriva ner allt som sägs och görs ger för lite utrymme för att hänga med och reflektera själv. Att anteckna med papper och penna eller med ett digital penna på en surfplatta fungerar mycket bättre än att skriva på en laptop.
  3. Passa på att ställa frågor: Under föreläsningar med kopiloter (assistenter i klassrummet) så finns det möjlighet att ställa frågor i en chat för de som har med sig en dator/surfplatta/mobiltelefon. Det finns också möjlighet att räcka upp handen för att ställa en fråga under själva föreläsningen och att komma fram med frågor till föreläsaren i pausen.
  4. Föreläsningar är ofta tysta: Under presentation av material så är föreläsningarna ofta tysta från åhörarnas sida medans pratet tilltar under övningar och pauser. Tänk på att hålla nere ljudnivån i en föreläsningssal. Många upplever det som svårt att koncentrera sig eller stå ut om det blir för mycket oväsen och inte alla har modet att berätta det för er.
  5. Repetition är kunskapens moder. Efter föreläsningarna kan du kolla upp slides, videos från tidigare års föreläsningar och kodexemplen från föreläsningarna finns på Github för att ta hem och experimentera med.

 

Övningar påminner om föreläsningar men är i mindre grupper, i mindre salar och mer fokuserade på problemlösning relaterat till kursen. Övningar leds av assistenter eller föreläsare. De flesta tar med sig en laptop som har Python och Git installerat så att ni kan ta ner programmen som gås igenom och testa själva att modifiera dessa, men ni är välkomna utan laptop också.

Labbar är schemalagda tider då ni förväntas arbeta med kursens formativa (lärande men inte examinerande) och summativa (examinerande) uppgifter. Under labbpassen är vissa av Kth:s datasalar bokade för er och assistenter är inbokade för att hjälpa er på plats. Det finns också viss möjlighet att få hjälp via Zoom av assistenter i kursen. För att få hjälp vid ett labbpass, köa på https://queue.csc.kth.se/Queue/Gruprog
På labbpass går det också att redovisa färdiga labbar och P-uppgifter. Idealiskt sett ska du då ha gjort ett issue på ditt githubrepo där det står "Redovisning" och fått en bokning via assistenter, men som backupstrategi så finns möjlighet till drop-in-redovisning på labbpass genom att ställa dig i kö för redovisning.

Observera att den hjälp ni kan få av assistenter i kursen mest handlar om att hitta information och förstå vad uppgifterna går ut på. Att faktiskt planera, hitta angreppssätt, uppfinna algoritmer, skriva kod, felsöka kod och testa kod är er uppgift som kursdeltagare.

Allmänhandledningen är ett centralt system där Kth ger hjälp under luncher och kvällstid. Allmänhandledningen kan hjälpa till med att komma igång, sätta upp Git, terminalen och Visual Studio samt att ge svar på frågor om vad delar av labblydelsen betyder. Allmänhandledningen kan dock inte ta emot redovisningar av labbar. Ni hittar till allmänhandledningen på: https://www.kth.se/social/group/allmanhandledning/. Allmänhandledningen har oftast bara en assistent åt gången till skillnad från labbpassen och dessa ska täcka betydligt fler kurser än vår.

Kth tillhandahåller också restlabbstillfällen. När kursen är klar under vårterminen så finns det möjlighet att redovisa labbar och P-uppgifter här: https://www.kth.se/social/group/labbvecka/page/restlabbar-7/.
 
Självstudier är en viktig del av att lära sig programmera. Exempel på självstudier är att (1) ta till sig av längre texter och (2) interaktivt övningsmaterial som OLI-materialet på Canvas, (3) repetera gymnasiets matematik och (4) tidigare delar av kursen, (5) skriva små testprogram för att testa förståelsen av koncept i kursen och (6) redigera befintliga större program, till exempel exempelkoden från föreläsningarna. Detta kan också göras i små grupper som möts informellt, individuellt på biblioteket eller hemma, via Zoom eller olika mellanting och kombinationer.

Detaljplanering

Detaljplaneringen publiceras under kursöversikt på Canvas för årets kursomgång. Gå till https://www.kth.se, klicka personliga menyn, kurser, DD1331 för årets omgång och slutligen kursöversikt för att få se detaljplaneringen.

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). DD1301 Datorintroduktion rekommenderas och kan läsas parallellt.

Särskilda förberedelser

Inför kursen förväntas deltagarna ha skaffat ett konto på Kth:s Github och åtminstone påbörjat kursen DD1301, datorintroduktion. Datorintroduktionen ger er en grund inom tre centrala verktyg för utbildningen: Bash, Git och LaTeX. Kom igång med åtminstone Bash och Git innan kursstart.

Kurslitteratur

Kursbok är Python Crash Course, 3rd Edition av Eric Matthes publicerad av No Starch Press.

Utrustning

En egen laptop (Mac eller PC) rekommenderas. Ni som kör Windows rekommenderas att ha minst version 10, men Windows 11 är ännu bättre.
Mac är lite enklare att komma igång med eftersom terminalen och Python redan är installerade.
Om du vill köra Linux på din egen dator så är Ubuntu enklast att komma igång med för de flesta, men kursen är helt agnostisk till vilken distro du kör.
Om du inte har någon egen dator så finns det datorer i datasalarna som kör Ubuntu Linux med alla program du behöver i kursen förinstallerade.

Programvara

Något av de tre vanligaste operativsystemen för desktopar rekommenderas: Windows, Linux eller macOS. ChromeOS rekommenderas inte.

Någon av de vanligaste terminalerna krävs. På Mac (Bash på äldre MacOS, Zshell på nyare) och Linux (oftast Bash) är dessa redan installerade. På Windows är den bästa terminalen "Terminal" från Windows store. Installera WSL 2, Windows Subsystem for Linux version 2 och installera till sist Ubuntu, också från Microsoft Store. Oavsett dator och hur detta installerades så kan du sedan söka upp programmet "Terminal" för att starta din terminal i slutändan.

Git krävs. På Mac kan du installera Git med hjälp av Xcode-tools som finns på app store. På Ubuntu Linux kan du installera git med "$sudo apt install git" i en terminal. På Windows rekommenderas Git Bash, alternativt att köra git via Ubuntuterminalen med instruktioner enligt denna.

Python3 används på alla examinerande moment i kursen: labbar, kontrollskrivning, ceriseprov och P-uppgift. Vi använder cpython, dvs den version som installeras från Pythons hemsida för Windowsanvändare. Samma version är förinstallerad på Linux och Mac.

En editor krävs. Den mest populära editorn är Visual Studio Code. Ni får använda vilken editor ni vill i kursen (Vim, Emacs, Pycharm), men Notepad för Windows rekommenderas inte.

Examination och slutförande

Betygsskala

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

Examination

  • KONT - Kontrollskrivning, 1,0 hp, betygsskala: P, F
  • PRO1 - Individuellt programmeringsprojekt, 2,0 hp, betygsskala: A, B, C, D, E, FX, F
  • LAB1 - Laboration, 2,0 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.

Avsnittet nedan kommer inte från kursplanen:

KONT - Kontrollskrivning, 1,0 hp

LAB1 - Laboration, 2,0 hp

PRO1 - Individuellt programmeringsprojekt, 2,0 hp

Målrelaterade betygskriterier/bedömningskriterier

Det är enorm skillnad på programmerares färdigheter. På en del företag blir ett fåtal programmerare tillfrågade varje gång någonting blir svårt, vilket i förlängningen innebär att många applikationer skulle aldrig bli färdiga eller hålla kvalitet utan dessa skickliga programmerare. Detta gäller såklart även för de som programmerar inom matematik och fysik. För att bli duktig behöver man lägga mycket tid på ämnet, sprida ut inlärningen samt lösa fler och svårare uppgifter.

Tanken bakom betygskriterierna är att belöna de som gör extrauppgifter, kommer igång med kursen tidigt och sprider ut sin inlärning lagom mycket. Det är implementerat med bonusdatum som gäller för varje laboration och P-uppgiften. Dessa står på sidan kursöversikt på Canvas på kursen. Om en examinerad uppgift verkar för svår, tänk på att det finns övningsuppgifter i kursboken, OLI-material samt föreläsningar och övningar där du kan träna på koncepten och teknikerna lite mer isolerat innan du ger dig i kast med en laboration, P-uppgift eller kontrollskrivning.

Extrauppgiftera har samma deadline som motsvarande grunduppgift.

Kontrollskrivningen har ingen deadline, men det är enklare att klara utbildningen som helhet om ni klarar den på första försöket.


Detaljerade krav för varje betygssteg

Betyg E:

Fyra labbar godkända.
Godkänd Individuell P-uppgift.
Godkänd kontrollskrivning.

 

Betyg D:

Börja med kraven för E. Dessutom krävs minst ett av följande: (1) Betyg D eller bättre på den individuella P-uppgiften ELLER (2) minst en godkänd extrauppgift. Extrauppgiften får överskrida sin deadline med högst en vecka.

Betyg C:

Börja med att uppfylla kraven för E. Dessutom: Minst tre av labbarna ska vara godkända inom deadline för bonus. Högst en labb får överskrida sin deadline med högst en vecka. Betyg C eller bättre krävs på den individuella P-uppgiften som behöver vara redovisad senast sista labbtillfället. Dessutom krävs minst två godkända extrauppgifter. Minst en av extrauppgifterna måste vara godkänd inom sin deadline. Högst en annan (än den som var i tid) av de godkända extrauppgifterna får överskrida sin deadline med högst en vecka.

Betyg B:

Börja med kraven för E. Dessutom: Minst tre av labbarna ska vara godkända inom deadline för bonus. Högst en labb får överskrida sin deadline med högst en vecka. Betyg B eller bättre krävs på den individuella P-uppgiften som behöver vara redovisad senast på sista labbtillfället. Dessutom krävs minst tre godkända extrauppgifter. Minst två av extrauppgifterna måste vara godkända inom sina deadlines. Högst en av extrauppgifterna får överskrida sin deadline med högst en vecka. 

Betyg A:

Börja med kraven för E. Dessutom: Minst tre av labbarna ska vara godkända inom deadline för bonus. Högst en labb får överskrida sin deadline med högst en vecka. Betyg A krävs på den individuella P-uppgiften som ska vara redovisad senast på sista labbtillfället. Dessutom krävs fyra godkända extrauppgifter. Minst tre av extrauppgifterna måste vara godkända inom sina deadlines. Högst en av extrauppgifterna får överskrida sin deadline med högst en vecka.

Möjlighet till komplettering

Det finns möjlighet att komplettera upp till betyg E åtminstone fram tills två år efter att kursen slutat gå (vilket kan dröja många år). Om ni inte skulle hinna med något delmoment av typen labb eller P-uppgift så kan dessa lämnas in på restlabbstillfällen https://www.kth.se/social/group/labbvecka/page/restlabbar-7/ som går under hela våren. Tidigt på sommaren finns dessutom labbveckan https://www.kth.se/social/group/labbvecka/. Det går också att komplettera under nästa ordinarie kursomgång.

Möjlighet till plussning

Denna kurs erbjuder viss möjlighet till plussning under kursens gång. Det är möjligt att höja från E till D genom många steg. Om du överskrider för många labbdeadlines så stängs dörren till de höga betygen så om du siktar högt - börja tidigt. Efter sista labbtillfället finns dock ingen möjlighet att plussa sitt betyg längre. För detaljer, se betygskriterier. För deadlines, se avsnittet kursöversikt på Canvas för kursen.

Resultatrapportering

Inom 2 veckor efter kursens avslutande ska kursdeltagare med alla moment godkända antingen ha fått feedback från examinator om vad som behövs för att komplettera, eller sina betyg införda i Ladok. Innan ni mailar för att fråga om detta, kolla att varje delmoment i P-uppgiften faktiskt står inrapportera i Canvas, som specifikation, utfört peer review, mottagit peer review och slutredovisning.

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.

Avsnittet nedan kommer inte från kursplanen:

Generativ AI är strängt förbjudet att använda vid examinerande moment såsom labbar, P-uppgift och kontrollskrivning. Verktygen kan genera felaktiga lösningar eller lösningar av sämre kvalitet än en bra student i kursen skulle producera. Även om den genererar en bra lösning så kommer ni inte att kunna förklara den eller vara kritisk mot andra saker den genererar och ni kommer inte att vara förberedda på kommande kurser där generativ AI fungerar (ännu) sämre. Att använda AI på detta sätt är jämförbart med att be en assistent, eller en duktig kompis att lösa den åt dig och om du lämnar in den med ditt eget namn utan att berätta ursprunget så har du begått plagiat, vilket är ett disciplinärende.

Det är dock tillåtet att använda i samband med icke-examinerade moment som uppgifter i boken, uppgifter på övningar och egenpåhittade icke-examinerade uppgifter. Det är också tillåtet att fråga en AI om delar i boken, eller att be en AI att ge er uppgifter. ChatGPT är den bästa generativa AI:n och den kan liksom alla andra tjänster av detta slag halucinera fakta, så lita inte blint på vad den skriver utan var kritisk. Använd inte AI på ett sätt som hindrar er utveckling.

Generativ AI.

Ingen tillåten användning av generativ AI-verktyg

All användning av generativ AI är förbjuden i kursens examinerande moment. Du rekommenderas även att undvika användningen av generativ AI vid dina egna studier och under lektionstid. Detta grundar sig i att användning av generativ AI anses ha en negativ inverkan på studenternas möjlighet att uppfylla kursens lärandemål. Användning av generativ AI motverkar er framtida förmåga att kunna producera program på och bortom AI:ns förmåga. Det påverkar negativt förmågan att bedöma program, oavsett om dessa är människoproducerade eller AI-producerade.

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. 

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 rekommenderas även undvika att använda generativ AI för stöd och handledning vid egen instudering, då svaren är opålitliga och kan utelämna viktiga delar av kursen. Ta i stället stöd av dina medstudenter och lärare för handledning och stöd, samt använd 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.   

Ytterligare Information

Övriga föreskrifter

Kursplanen gäller från och med HT 2024 enligt grundutbildningsansvarigs beslut: J-2024-0559.

Beslutsdatum: 2024-03-27

Ändringar inför denna kursomgång

Ceriseprovet är inte obligatoriskt, men det rekommenderas för inlärningen

Fakta om kursomgång

Startdatum

Obligatoriskt innehåll saknas

Kursomgång

  • CTFYS HT 2025-51975

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kontakter