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
Modul | LP1 | LP2 | LP3 | LP4 | Sommar | Ej LP | Tentamensdatum |
---|---|---|---|---|---|---|---|
0104 Tentamen 4,5 hp Betygsskala: TH | 4,5 hp |
| |||||
0204 Laboration 3 hp Betygsskala: UG | 3 hp |
I program
- TKIEK - INDUSTRIELL EKONOMI, CIVILINGENJÖR - Informationsteknik, Årskurs 2 (obligatorisk)
- TKTEM - TEKNISK MATEMATIK, CIVILINGENJÖR, Årskurs 3 (obligatoriskt valbar)
- TKTFY - TEKNISK FYSIK, CIVILINGENJÖR, Årskurs 3 (valbar)
Examinator
- Alex Gerdes
- Universitetslektor, Computing Science, Data- och informationsteknik
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
- 2020-11-02: Inställd Ändrat till inställd av Alex Gerdes
- Ä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]
- 2020-10-27: Examinator Examinator ändrat från Wolfgang Ahrendt (ahrendt) till Alex Gerdes (alexg) av Prefekt