Imperativ och objektorienterad programmeringsmetodik
Kursplan, Grundnivå, 1DL221
- Kod
- 1DL221
- Utbildningsnivå
- Grundnivå
- Huvudområde(n) med fördjupning
- Datavetenskap G1F, Teknik G1F
- Betygsskala
- Med beröm godkänd (5), Icke utan beröm godkänd (4), Godkänd (3), Underkänd (U)
- Fastställd av
- Teknisk-naturvetenskapliga fakultetsnämnden, 11 februari 2019
- Ansvarig institution
- Institutionen för informationsteknologi
Behörighetskrav
Programkonstruktion och datastrukturer
Mål
Efter godkänd kurs ska studenten kunna:
- förklara hur program exekverar och beskriva hur program lagrar och hanterar information.
- förklara och exemplifiera kvalitativa och kvantitativa aspekter av ett programs design och implementation.
- förklara skillnaden mellan manuell och automatisk minneshantering samt grundläggande relaterade begrepp (som stack, heap, statisk minnesarea) och använda verktyg för felsökning av minnesfel.
- förklara hur större programuppgifter kan lösas och resonera om olika lösningsalternativ.
- redogöra för hur enkla parallelliserbara problem kan lösas effektivt med relevanta hjälpmedel .
- designa, koda, granska, testa, felsöka och dokumentera egna program, med hjälp av lämpliga verktyg.
- läsa, förstå och modifiera icke-trivial kod som studenten själv inte har skrivit samt integrera nyskriven kod med existerande.
- beskriva -- oberoende av programkoden -- den uppgift ett program skall lösa och de förutsättningar som krävs för att det skall kunna arbeta. Motivera varför programmet under dessa förutsättningar är korrekt, samt specificera och konstruera testfall och köra tester för att verifiera detta.
- skriva lämplig dokumentation för programmering och testhantering.
- tillämpa specifika utsnitt av kända utvecklingsprocesser och -metodiker (ex. agil utveckling, parprogrammering och testdriven utveckling).
- beskriva olika former av testning och deras vikt i olika skeden av utvecklingsprocessen.
- bidra till ett konstruktivt samarbete i programmeringsprojekt.
- presentera och diskutera kursens innehåll muntligt och skriftligt med för utbildningsnivån lämplig färdighet.
Innehåll
Principer som ligger till grund för imperativa och objektorienterade språk och variationer mellan språken. Programmering i sådana språk, programutveckling, dokumentation och testning med hjälp av därtill avsedda verktyg. I kursen studeras minst två imperativa språk: ett objektorienterat och ett utan särskilt stöd för objektorientering (ex. Java och C). Kursivt nämns skriptspråk och domänspecifika språk som t.ex. Emacs Lisp, shellskript och byggskript. Jämförelser med funktionella språk görs.
Programstrukturer som tas upp är bland annat: procedur, funktion, array, loop, pekare, struktur, automatisk och manuell minneshantering, objekt, klass, metod, arv, polymorfism, undantag. Olika former av värdeöverföring tas upp - värdesemantik, referenssemantik - och jämförs call-by-name. Testning av moduler, t.ex. genom "svartlådetestning" (baserad på modulens specifikation) och genom "vitlådetestning" (där utvecklaren strävar efter att garantera att alla programsatser, exekveringsvägar eller metoder används under testet). Viss integrationstestning och kravbaserad systemtestning.
Systematisk arbetsgång för kravspecifikation, problemanalys, programdesign, kodning, kodgranskning, testning, felsökning samt dokumentation.
Undervisning
Föreläsningar, lektioner, laborationer, gästföreläsningar/studiebesök. Laborativa moment utgör en stor del av kursen.
Examination
Individuellt kodprov (5 hp) samt genom muntliga och skriftliga redovisningar och presentationer (5+5+5 hp). Vissa kursmål kan även visas genom frivillig skriftlig tentamen.
Om särskilda skäl finns får examinator göra undantag från det angivna examinationssättet och medge att en enskild student examineras på annat sätt. Särskilda skäl kan t.ex. vara besked om särskilt pedagogiskt stöd från universitetets samordnare för studenter med funktionsnedsättning.
Övriga föreskrifter
Kursen kan ej räknas i examen tillsammans med någon av följande kurser:
Programmeringsteknik II, NV2, MN2: 1TD720, 1TD721, 1TD722, 1TD770, 1TD772
Programmering: 1DT042
Objektorienterad programmering (med Java/C++): 1DL013, 1DL100, 1DL028, 1TD292, 1TD321, 2AD510, 2AD512
Datorer och programmering TDB3: 1TD335
Imperativ programmering: 1DL126
Imperativ och objektorienterad programmering 1DL220
Programmering för språkteknologer II: 5LN446
Algoritmer och datastrukturer i objektorienterad programmering: 5LN405
Algoritmer, datastrukturer och objektorienterad programmering: 2AD239.
Programvaruteknik 1DL250, 1DL004
Testmetodik 1DT053
Av Algoritmer och datastrukturer DV1, 1TD442, kan 6 hp (av 9) tillgodoräknas tillsammans med denna kurs.
Litteraturlista
- Litteraturlista giltig från och med höstterminen 2019
- Litteraturlista giltig från och med vårterminen 2015
- Litteraturlista giltig från och med vårterminen 2014
- Litteraturlista giltig från och med höstterminen 2013
- Litteraturlista giltig från och med vårterminen 2013
- Litteraturlista giltig från och med höstterminen 2012
- Litteraturlista giltig från och med höstterminen 2011