Hoppa till huvudinnehållet
Till KTH:s startsida

DD1331 Grundläggande programmering 5.0 hp

Kurs-PM HT 2023-50260

Version 2 – 2023-09-04 10:00:34

Kursomgång

CTFYS (Startdatum 2023-08-28, Svenska)

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kurs-PM HT 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 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

  • 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
  • grafiskt beskriva kopplingen mellan variabelnamn, typer och data
  • 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
  • implementera, 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: Genom att lyssna, ta anteckningar och interagera under föreläsningarna får studenter möjlighet att processa och förstå ny information i en takt som är lämplig för lärande.
  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 i realtid kan hjälpa studenter att bättre förstå hur teorin appliceras i praktiken.
  4. Nätverk: Föreläsningarna ger en möjlighet för studenter att träffa andra studenter 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 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
  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.

 

Ö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, 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. Ni hittar till allmänhandledningen på: https://www.kth.se/social/group/allmanhandledning/

Kth tillhandahåller också restlabbstillfällen. När kursen är klar så finns det möjlighet att redovisa labbar och P-uppgifter här: https://www.kth.se/social/group/labbvecka/page/restlabbar-7/

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.

Kurslitteratur

Kursbok är Introduction to programming in Python av Sedgewick, Wayne och Dondero.

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.

Programvara

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

Någon av de vanligaste terminalerna krävs. På Mac och Linux är dessa redan installerade. På Windows 10/11 ä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.

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. Populära editorer är Visual Studio Code, Atom och Sublime text. Det är tillåtet att använda en komplett utvecklingsmiljö som exempelvis PyCharm från Jetbrains. Äldre programmerare använder ibland Emacs eller Vim. Den krångligaste är Vim. Den enklaste och populäraste är Visual Studio Code.

Examination och slutförande

Betygsskala

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

Examination

  • KONT - Kontrollskrivning, 1,0 hp, Betygsskala: P, F
  • LAB1 - Laboration, 2,0 hp, Betygsskala: P, F
  • PRO1 - Individuellt programmeringsprojekt, 2,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.

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. Vissa kan på sin höjd klara av enklare uppgifter utan att fråga om hjälp. 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. Riktigt bra teknikföretag ställer mycket höga krav på sina anställda.

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 i vänstermarginalen.
Om en examinerad uppgift verkar för svår, tänk på att det finns övningsuppgifter i kursboken 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 i kursen åtminstone fram tills två år efter att den slutas ge. 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/ Om ni inte hann med då heller eller har kontrollskrivningen klar så är ni välkomna tillbaka under nästa kursomgång.

Möjlighet till plussning

Denna kurs erbjuder viss möjlighet till plusning 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. För detaljer, se betygskriterier.

Resultatrapportering

Resultatsrapportering till Ladok sker inom 2 veckor efter kursens avslutande.

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. 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 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 säger utan var kritisk. Använd inte AI på ett sätt som bromsar er utveckling, se till exempel inte

Ytterligare Information

Ändringar inför denna kursomgång

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

Vissa föreläsningar i kursen, men inte den första kommer att ha videos som förberedande material för att utgöra flippat klassrum.

Fakta om kursomgång

Startdatum

2023-08-28

Kursomgång

  • CTFYS HT 2023-50260

Undervisningsspråk

Svenska

Kursen ges av

EECS/Datavetenskap

Kontakter