Course syllabus
Kurs-PM
https://www.kth.se/kurs-pm/DD1310/DD131020262-11530
Kursinformation och kursplan:
I kursen ingår följande moment:
- LAB1, 1,5 hp, betygskala pass/fail - utgörs av 7 mindre laborationsuppgifter
- LAB2, 1,5 hp, betygskala pass/fail - utgörs av en Kontrollskrivning
- LAB3, 3 hp, betygskala A, B, C, D, E, Fx, F - utgörs av en större individuell uppgift (P-uppgift), som löses i flera steg.
Betyget på kursen avgörs av P-uppgiften (LAB3). För denna uppgift finns en betygskriteriematris, se nedan.
Kursplan: https://www.kth.se/student/kurser/kurs/DD1310
Kurslitteratur
Som frivillig kurslitteratur finns en interaktiv webbok på Runestone Academy: https://runestone.academy/ns/books/published/prgh26/py4eint.html. Kapitel 12-15 och 21-22 ingår inte i kursen.
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å interaktivt kursmaterial (1-2 lektioner) och tillhörande test (1-2 st) 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 med 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. Det går inte att komplettera alla eller merparten av tillfällena - kursen ges på campus och inte på distans.
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 laborationssal 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, förberedande prov och slutredovisning).
Betygskriterierna för uppgiften (notera att du behöver scrolla till höger för att se hela tabellen):
| Mål | E | D | C | B | A |
|---|---|---|---|---|---|
| Kunna konstruera program utan kodupprepningar. | För en given uppgift, konstruerat ett program som är fritt, eller nästintill fritt, från kodupprepningar. Studenten kan också förklara vad det finns för nackdelar med kodupprepningar och varför det bör undvikas. | För en given uppgift, konstruerat ett program som är helt fritt från kodupprepningar. | För en given uppgift, där ny funktionalitet har lagts till, konstruerat ett program som är helt fritt från kodupprepningar. | För en given mer komplex uppgift, konstruerat ett program som är helt fritt från kodupprepningar. | 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 kodupprepningar. |
| 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 funktionalitet 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 funktionalitet 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 programmeringsuppgift, i större delen av det utvecklade programmet, har lämpliga styrstrukturer för att lösa uppgiften används. | För en given programmeringsuppgift, har genom hela programmet lämpliga styrstrukturer för att lösa uppgiften används. | För en given programmeringsuppgift, där ny funktionalitet har lagts till, har lämpliga styrstrukturer för att lösa uppgiften används genom hela programmet. | För en mer komplex programmeringsuppgift, har lämpliga styrstrukturer för att lösa uppgiften används genom hela programmet. | För en mer komplex programmeringsuppgift, 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ändarvä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 komponenter utvalda och designade för att göra presentationen av utdata användarvänlig. | ||
| Kunna skapa flexibla applikationer. | För en given programmeringsuppgift, 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 programkoden. | För en given programmeringsuppgift, har en applikation konstruerats som har stor flexibilitet och enkelt kan ändras om så skulle behövas. | För en given programmeringsuppgift, där ny funktionalitet 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 komplicerad programmeringsuppgift, har en applikation konstruerats som har stor flexibilitet och enkelt kan ändras om så skulle behövas. | För en given, mer komplicerad programmeringsuppgift 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 programkoden har, i stort sett, lämpliga identifierarnamn 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. Identifierarnamnen, 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 programkoden har lämpliga identifierarnamn och kommentar använts. Identifierarnamnen, 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ägningar kring hur långa identifierarnamnen och kommentarerna bör vara för att koden ska bli lättläst. | Genom hela programkoden, där även ny funktionalitet lagts till, har lämpliga identifierarnamn 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ägningar kring hur långa identifierarnamnen och kommentarerna bör vara för att koden ska bli lättläst. | Genom hela programkoden, som löser ett mer komplext problem, har lämpliga identifierarnamn valts och varje funktion/metod/klass har en förklarande kommentar inklusive information om inparametrar och returvärden. Det har gjorts väl valda avvägningar kring hur långa identifierarnamnen och kommentarerna bör vara för att koden ska bli lättläst. | Genom hela programkoden, som löser ett mer komplext problem och som även använder en större inbyggd modul, har lämpliga identifierarnamn valts och varje funktion/metod/klass har en förklarande kommentar inklusive information om inparametrar och returvärden. Det har gjorts väl valda avvägningar kring hur långa identifierarnamnen 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å kraschar inte programmet. För vissa uppgifter ställs också krav på att programmet ska kunna hantera formateringsfel 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 implementera ett grafiskt användargränssnitt på denna nivå, ska lämpliga grafiska komponenter valts ut för att presentera utdata i ett grafiskt användargrä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 sammansatta 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 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. | Konstruerat 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. | ||||