Kursplan för Objektorienterad programvaruutveckling, fortsättningskurs

Kursplanen innehåller ändringar
Se ändringar

Kursplan fastställd 2019-02-21 av programansvarig (eller motsvarande).

Kursöversikt

  • Engelskt namnObject-oriented programming, advanced course
  • KurskodTDA550
  • Omfattning7,5 Högskolepoäng
  • ÄgareTKIEK
  • UtbildningsnivåGrundnivå
  • HuvudområdeInformationsteknik
  • InstitutionDATA- OCH INFORMATIONSTEKNIK
  • BetygsskalaTH - Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3), Underkänd

Kurstillfälle 1

  • Undervisningsspråk Svenska
  • Anmälningskod 51132
  • Max antal deltagare120
  • Sökbar för utbytesstudenterNej
  • Endast studenter med kurstillfället i programplan.

Poängfördelning

0104 Tentamen 4,5 hp
Betygsskala: TH
4,5 hp
  • 15 Jan 2021 em J
  • 07 Apr 2021 fm J
  • 18 Aug 2021 fm J
0204 Laboration 3 hp
Betygsskala: UG
3 hp

    I program

    Examinator

    Gå till kurshemsidan (Öppnas i ny flik)

    Behörighet

    Grundläggande behörighet för grundnivå
    Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

    Särskild behörighet

    Samma behörighet som det kursägande programmet.
    Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

    Kursspecifika förkunskaper

    Denna kurs är en direkt fortsättning på kurserna TIN212 Programmeringsteknik eller TDA143 Programmerade system, vilka, eller en motsvarande kurs, utgör förkunskapskrav.

    Syfte

    Kursen ska ge fördjupade kunskaper om objektorienterad programmering. Efter genomgången kurs skall studenten känna till mer sofistikerade koncept och tekniker som är speciellt användbara för att utveckla större programvaruapplikationer. Kursen skall utveckla studentens förmåga att utifrån genomgången teori värdera olika programmerings- och designmässiga kvalitéer, t ex med avseende på utbyggbarhet, testbarhet, återanvändbarhet och underhåll.

    Kursen skall även träna upp kompetenserna problemlösning, modellering samt ingenjörsmässighet (kompetenserna beskrivs närmare i programplanen).

    Lärandemål (efter fullgjord kurs ska studenten kunna)

    * Beskriva principerna för objektorienterad programmering, använda dem i programmeringsfasen och förklara hur de kan realiseras i ett specifikt objektorienterat programspråk.
    * Använda UML's klassdiagram för att på ett överskådligt sätt planera och dokumentera eget programmeringsarbete.
    * Resonera om och utvärdera olika egenskaper för program, bedöma dess fördelar och nackdelar med avseende på olika utvecklingsmål - t ex underhåll, återanvändning och robusthet - och därpå göra lämpliga val.
    * Tillämpa ett antal vanligt förekommande designprinciper och designmönster för att åstadkomma en design som underlättar underhåll och återanvändning.
    * Implementera generiska programenheter.
    * Använda och beskriva hur ett applikationsramverk kan vara uppbyggt.
    * Beskriva olika kriterier och principer för god programdesign.
    * Redogöra för innebörden av synkronisering och trådsäkerhet samt kunna implementera trådsäkra objekt.
    * Utforma och implementera objektorienterade lösningar för medelstor programvara, samt att avlusa och testa implementeringen.
    * Använda centrala delar i en integrerad utvecklingsmiljö för design, implementering och omstrukturering av program.

    Innehåll

    * Fördjupning av begreppen implementationsarv, specifikationsarv, abstrakta klasser, polymorfism, dynamisk bindning, inkapsling och information hiding. Introduktion till UML.
    * Några fundamentala designprinciper, såsom Dependency Inversion Principle, Open-Closed Principle, Liskov Substitution Principle, Single Responsibility Principle, Separation of concern Principle, Law of Demeter och Interface Segregation Principle.
    * Generiska programenheter.
    * Kanonisk form för klasser ¿ equals(), hashCode(), clone(), toString() och serialisering.
    * Kontraktbaserad design ¿ förvillkor, eftervillkor, klassinvarianter och assertions.
    * Muterbara och icke-muterbara objekt. Representationsexponering.
    * Inre klasser och anonyma klasser.
    * Undantagshantering.
    * Några vanliga designmönster, såsom Singleton, Factory Method, Template Method, Strategy, Decorator, Adapter, Iterator, Observer, State, Façade och MVC.
    * Refactoring.
    * Java's Collection-ramverk och dess uppbyggnad .
    * Java's I/O-ramverk och dess uppbyggnad.
    * Trådar och trådsäkerhet - race conditions, deadlock, kritiska regioner och synkronisering.

    Organisation

    Undervisningen består av föreläsningar, övningar och laborationer samt handledning i samband med dessa.

    Litteratur

    Information om aktuell litteratur ges innan kursstart på kursens hemsida.

    Examination inklusive obligatoriska moment

    Sker i form av godkänd skriftlig tentamen samt godkända laborationer. Baserat på tentamensresultatet ges slutbetyg i skalan U, 3, 4 eller 5.

    Kursplanen innehåller ändringar

    • Ändring gjord på tentamen:
      • 2020-11-02: Inställd Ändrat till inställd av Alex Gerdes
        [2021-01-15 4,5 hp, 0104] Inställt
      • 2020-09-30: Plussning Inte längre plussning av GRULG
        Beslut GRULG, plussning ej tillåten
    • Ändring gjord på kurstillfälle:
      • 2020-10-27: Examinator Examinator ändrat från Wolfgang Ahrendt (ahrendt) till Alex Gerdes (alexg) av Prefekt
        [Kurstillfälle 1]