En kurs i grundläggande programmeringsteknik.
Kurs-PM HT 2022
Presentation av kursen
Rubriker markerade med en asterisk ( * ) kommer från kursplan version HT 2020
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,
- 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.
Läraktiviteter
Kursen består av aktiviteterna föreläsningar, övningar, laborationstillfällen. Till varje aktivitet ska man förberea sig enligt följande upplägg. Till de flesta föreläsningar ska man ha läst igenom självstudiematerialen OLI-moduler samt göra uppgifterna som finns i modulerna. Föreläsningar fungerar som förberedelse till övningar. Tanken med övningar är att studenterna ska lösa uppgifter i mindre grupp med möjligheten att kunna få hjälp av en lärare, alternativ läraren presenterar uppgifter och dess lösningar för alla. Övningar fungerar som förberedelse till labbarna men för att få tillgång till labbuppgifterna så behöver man göra förberedande quizen. Quizen kan göras obegränsad antal gånger och man måste ha rätt på alla uppgifter i quizen för att kunna få tillgång till tillhörande laborationsuppgifter. I delajplaneringstabellen framgår detta.
Detaljplanering
Följande tabell visar vilka läraktiviteter kursen har, deras innehåll och hur man förbereder sig inför varje aktivitet. Information om datum och tid för läraktiviteterna finner du i schemat.
Läraktivitet | Innehåll | Förberedelse |
Föreläsning 1 |
Kursinformation, python, utskrift, inläsning |
|
Föreläsning 2 |
Variabler, datatyper, aritmetiska operatorer, omvandling mellan datatyper, reserverade ord, logiska operatorer, if, elif, else, while-slinga, kommentarer och modulo operatorn | Läs och gör uppgifterna i OLI-modulerna 1,2 och 5 |
Övning 1 |
Variabler, operatorer, datatyper, if, elif, else, while-slinga |
|
Laboration 1 | Introduktion till linux, terminal, emacs och python | Quiz 1(hederskodex) |
Föreläsning 3 | Listor, tupler, strängar, for-slinga, importera moduler, random, stränghantering, slicing, list-metoder | Läs och gör uppgifterna i OLI-modulerna 3,4,6 och 7 |
Övning 2 | Listor, strängar, for-slinga, importera moduler, random, stränghantering, slicing, list-metoder | |
Laboration 2 | Beräkning mha operatorer, if-sats, while-sats | Quiz 2 |
Föreläsning 4 |
Felhantering, funktioner, parametrar, egna funktioner, parametrar, returvärden, None, globala och lokala variabler
|
Läs och gör uppgifterna i OLI-modulerna 8 och 9 |
Övning 3 |
Egendefinierade funktioner, argumenter, parametrar och return, globala och lokala variabler, felhantering |
|
Laboration 3 | For-satser, range, nästladde slingor, slingor och listor | Quiz 3 |
Föreläsning 5 | Filhantering, introduktion till klasser | Läs och gör uppgifterna i OLI-modulen 10 |
Övning 4 | Filhantering, mer om laboration 4 | |
Laboration 4 | Funktioner, felhantering och matriser | Quiz 4 |
Föreläsning 6 | Klasser, objekt, konstruktormetoden, instansmetoder | Läs och gör uppgifterna i OLI-modulen 11 |
Övning 5 | Klasser och objekt | |
Laboration 5 | Klasser, objekt och filhantering | Quiz 5 |
Föreläsning 7 | Fortsättning på klasser, objekt, klassmetoder, instansmetoder, __lt__, __gt__, __str__, __eq__, sort och sorted | Läs och gör uppgifterna i OLI-modulen 11 |
Föreläsning 8 | Genomgång av datorprov | |
Föreläsning 9 | Hur man skriver specifikation till P-uppgiften | |
Föreläsning 10 | Grafik |
Betygskriterier
För att få ett slutbetyg krävs att studenten får godkänt betyg på tre delar i kursen, introducerande laborationer, datorprovet och projektet.
På laborationer och datorprovet gäller godkänt eller underkänt. Men på projektet kan man få betygen E-A. Betyg på projektet blir även slutbetyg på kursen. Studenten väljer en av de befintliga uppgifterna i kursen och skriver ett program i python till det. Betyget sätts sedan på programmets kvalitet. Programmets kvalitet bestäms av regler inom programmeringsmetodik och hur de reglerna har beaktats samt om studenten har tagit hänsyn till användare, administratören, programmerare och datorn som ska köra programmet vid utveckling av programmet.
Tabellen nedan visar betygskriterier för projektet. Betygskriterier för introducerande laborationer är de kriterier som står under kolumnen för betyget E.
Mål |
E |
D |
C |
B |
A |
Kunna konstruera sammansatta datatyper (klasser) |
Kunna konstruera egna datatyper (klasser) och kunna förklara fördelen med egenkonstruerade datatyper |
Kunna konstruera egna datatyper (klasser) för att lösa något mer komplicerade instans av ett problem. |
|||
Kunna dela ett större problem till mindre beståndsdelar av problemet |
Kunna dela upp ett större problem till mindre och hanterliga problem utan väsentliga brister |
Kunna dela upp ett större problem till mindre och hanterliga problem utan några brister |
|||
Kunna dela upp ett program |
Konstruera programmet så att det består av generella funktioner och program-del utan väsentliga brister |
Konstruera programmet så att det består av generella funktioner och program-del utan några brister |
|||
Kunna tillämpa styrstrukturer |
Använda lämpliga styrstrukturer för ett givet problem över det större delen av programmet. |
Använda lämpliga styrstrukturer för ett givet problem genomgående. |
|||
Konstruera program utan kodupprepningar |
Kunna konstruera applikationer utan upprepningar över stora delar av programkoden och kunna förklara nackdelar med koduppreningar. |
Kunna konstruera applikationer utan upprepningar genomgående och kunna förklara nackdelar med koduppreningar. |
|||
Kunna skapa flexibla applikationer |
Konstruera program med flexibilitet i den meningen att programmet klarar av att lösa större instans av problemet genom att införa små förändringar i programkoden. |
Konstruera program med stor flexibilitet i den meningen att programmet klarar av att lösa större instans av problemet genom att införa små förändringar i programkoden. |
|||
Kunna välja lämpliga identifierarnamn |
Kunna konstruera programkod där lämpliga identifierarnamn har valts över det största delen av programkoden. |
Kunna avgöra var i en programkod ska man välja längre identifierarnamn i bekostnad av programkodens storlek samt välja kortare identifierarnamn i bekostnad av programkodens läsbarhet.
|
|||
Kunna konstruera interaktiva program |
Konstruera applikationer där uttrycksfulla förfrågningar ställs till användaren för att minimera risken av feltolkning och missförstånd hos användaren utan väsentliga brister
|
Konstruera applikationer där uttrycksfulla förfrågningar ställs till användaren för att minimera risken av feltolkning och missförstånd hos användaren.
|
Använda sig av lämplig konstruktion för hantering av inmatningsfel och formateringsfel i indatafil. |
Välja och använda lämpliga grafiska komponenter i ett grafiskt användargränssnitt.
|
Tabellen nedan är en del av betygskriterier för projektet (gäller inte introducerande laborationer):
Mål |
E |
D |
C |
B |
A |
Kunna planera programmeringsarbete |
Kunna skriva en planering över vilka delar programmet kommer att bestå av och hur lösningen kommer att se ut. |
||||
Kunna granska ett program |
Kunna undersöka ett program och hitta eventuella brister hos programmet med avseende på principer som har tagits upp i kursen. |
Projektuppgifterna är utformade på så sätt att det finns en grunduppgift som kan ge högst ett D i betyg och det finns påbyggande extrauppgifter för varje högre betyg än D. Så högsta betyg som studenten kan få bestäms av utförda uppgifterna och kvalitet på implementerade koden. Vid redovisningen används ett redovisningsprotokoll med följande punkter.
- Informativa utskrifter
- Enkel inmatning
- Kommentarer
- Beskrivande namn
- Konsekvent språk och typografi
- Felhantering (om det ingår)
- Klasser (minst en)
- Uppdelning i funktioner och metoder
- Parametrar/returvärden
- Ingen kodupprepning
- Flexibilitet
Om det finns smärre brister på någon av ovanstående punkter får man en påpekande på den punkten. Om man totalt får 1-3 påpekanden på alla punkterna så får man betyget E även om man redovisar för högre betyg. Ett protokoll utan några påpekande innebär att studenten får det betyg som hen redovisar för medan ett protokoll med fler än tre påpekanden innebär att studenten får komplettera. I protokollet finns även följande två viktigare punkter.
- Uppfyller kravet i lydelsen
- Studenten kan redogöra för alla detaljer i programkoden
Studenten får komplettering om någon av ovanstående två punkter får påpekande.
Betygskriterier för datorprovet är att kunna identifiera nyckelord i Python, kunna identifiera utdata från ett givet program, kunna bland några lösningar välja de fungerande lösningar som löser ett visst givet problem som handlar om hantering av datastrukturer, filhantering, funktioner, styrstrukturer, särfall, metoder och klasser.
Plussning
Den student som har fått något av betygen E-B innan kursens slut får plussa sitt betyg. Plussning är möjlig endast inom ett år efter kursens startdatum.
Slutbetyg
Projektets betyg är kursens slutbetyg. Kraven att få slutbetyg är att projektet har fått ett betyg samt datorprovet och introducerande labbarna är godkända.
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)
- OLI-material (tillgänglig via canvas)
- Övningsmaterial (delas ut av övningsläraren/ läggs upp på canvas)
- Labbinstruktioner (läggs upp på canvas)
- Följande böcker rekommenderar vi för den som behöver mer material utöver ovanstående men kursen följer inte boken:
Stöd för studenter med funktionsnedsättning
Om du har en funktionsnedsättning kan du få stöd via Funka:
Examination och slutförande
Betygsskala
A, B, C, D, E, FX, F
Examination
- LAB1 - Laborationsuppgifter 1, 1,5 hp, Betygsskala: P, F
- LAB2 - Laborationsuppgifter 2, 1,5 hp, Betygsskala: P, F
- LAB3 - Laborationsuppgifter 3, 3,0 hp, Betygsskala: A, B, C, D, E, FX, F
Examinator beslutar, baserat på rekommendation från KTH:s samordnare för 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:
Laborationsuppgifter 1 ( LAB1 )
Laborationsuppgifter 2 ( LAB2 )
Laborationsuppgifter 3 ( LAB3 )
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.
Ytterligare Information
Ingen information tillagd
Kontakter
Kursansvarig
Lärare
Lärarassistenter
Examinator
Fakta om kursomgång
Startdatum
2022-08-29
Kursomgång
- COPEN+CMATD HT 2022-51462
Undervisningsspråk
Svenska