Kursplan för Imperativ och objektorienterad programmeringsmetodik

Imperative and Object-Oriented Programming Methodology

Det finns en senare version av kursplanen.

Kursplan

  • 20 högskolepoäng
  • Kurskod: 1DL221
  • Utbildningsnivå: Grundnivå
  • Huvudområde(n) och successiv fördjupning: Datavetenskap G1F, Teknik G1F

    Förklaring av koder

    Koden visar kursens utbildningsnivå och fördjupning i förhållande till andra kurser inom huvudområdet och examensfordringarna för generella examina:

    Grundnivå

    • G1N: har endast gymnasiala förkunskapskrav
    • G1F: har mindre än 60 hp kurs/er på grundnivå som förkunskapskrav
    • G1E: innehåller särskilt utformat examensarbete för högskoleexamen
    • G2F: har minst 60 hp kurs/er på grundnivå som förkunskapskrav
    • G2E: har minst 60 hp kurs/er på grundnivå som förkunskapskrav, innehåller examensarbete för kandidatexamen
    • GXX: kursens fördjupning kan inte klassificeras

    Avancerad nivå

    • A1N: har endast kurs/er på grundnivå som förkunskapskrav
    • A1F: har kurs/er på avancerad nivå som förkunskapskrav
    • A1E: innehåller examensarbete för magisterexamen
    • A2E: innehåller examensarbete för masterexamen
    • AXX: kursens fördjupning kan inte klassificeras

  • Betygsskala: Underkänd (U), godkänd (3), icke utan beröm godkänd (4), med beröm godkänd (5)
  • Inrättad: 2011-03-10
  • Inrättad av: Teknisk-naturvetenskapliga fakultetsnämnden
  • Reviderad: 2013-05-30
  • Reviderad av: Teknisk-naturvetenskapliga fakultetsnämnden
  • Gäller från: vecka 28, 2013
  • Behörighet: Programkonstruktion och datastrukturer
  • Ansvarig institution: Institutionen för informationsteknologi

Mål

Syftet med kursen är att studenterna ska få förståelse för de principer som ligger till grund för imperativa och objektorienterade språk och för variationer mellan språken. De ska också lära sig att programmera väl i sådana språk och arbeta med programutveckling, dokumentation och testning på ett strukturerat sätt och med hjälp av därtill avsedda verktyg.

I kursen studeras minst tre imperativa språk: ett objektorienterat, ett utan särskilt stöd för objektorientering samt ett skriptspråk.

Efter godkänd kurs ska studenten kunna

  • redovisa en detaljerad förståelse av centrala delar av programspråken i kursen, till exempel genom att i detalj 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.
  • 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 utvecklingsprocesseer och -metodiker (ex. agil utveckling, parprogrammering och testdriven utveckling).
  • beskriva olika former av testning och deras vikt i olika skeden av
    utvecklingsprocessen.
  • samarbeta med andra studenter i programmeringsprojekt där nyskriven kod integreras med existerande.
  • presentera och diskutera kursens innehåll muntligt och skriftligt med för utbildningsnivån lämplig färdighet.

Innehåll

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 variabelbindning och -överföring tas upp (värdesemantik, referenssemantik, call-by-name och statisk kontra dynamisk variabelbindning).
För att visa att program är korrekt används t.ex. begreppen för- och eftervillkor, representationsinvariant, loop- och rekursionsvariant.
Enklare concurrent- och parallellprogrammering behandlas med tonvikten lagd på enkelt parallelliserbara problem samt concurrency som en programmeringsabstraktion.
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.
Programmeringsspråk som kan förekomma är exempelvis Java, C, C++ samt dynamiska språk och skriptspråk som Perl och Python. Jämförelser med funktionella språk görs.

Undervisning

Föreläsningar, lektioner, laborationer, gästföreläsningar/studiebesök. Laborativa moment utgör en stor del av kursen.

Examination



Kursen examineras genom ett individuell kodprov (5 hp) samt genom muntliga och skriftliga redovisningar och presentationer (5+5+5 hp) som tillsammans med frivillig tentamen (0 hp) lägger grund för kursbetyget.

Ö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.

Litteratur

Litteraturlista

Gäller från: vecka 20, 2014

I bibliotekets söktjänst kan du se om en titel finns elektroniskt.

Referenslitteratur

  • Kernighan, Brian Wilson; Ritchie, Dennis M. The C programming language

    2. ed.: Englewood Cliffs: Prentice Hall, cop. 1988

    Se bibliotekets söktjänst

Versioner av litteraturlistan