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 - Fem, Fyra, Tre, Underkänd
Kurstillfälle 1
- Undervisningsspråk Svenska
- Anmälningskod 51122
- 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
- Wolfgang Ahrendt
- Viceprefekt, Data- och informationsteknik
Ersätter
- TDA375 Grundläggande objektorienterad programvaruutveckling
Behörighet
För kurser på grundnivå inom Chalmers utbildningsprogram gäller samma behörighetskrav som till de(t) program där kursen ingår i programplanen.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å kurstillfälle:
- 2019-10-03: Examinator Examinator ändrat från Uno Holmer (holmer) till Wolfgang Ahrendt (ahrendt) av Viceprefekt
[Kurstillfälle 1]
- 2019-10-03: Examinator Examinator ändrat från Uno Holmer (holmer) till Wolfgang Ahrendt (ahrendt) av Viceprefekt
- Ändring gjord på tentamen:
- 2020-03-31: Tentamensdatum Tentamensdatum ändrat från 2020-04-06 Förmiddag till 2020-04-30 Förmiddag av Beslut Grulg
[2020-04-06 4,5 hp, 0104] - 2020-01-13: Plats Plats ändrat från Johanneberg till M av annbe
[2020-01-17 4,5 hp, 0104]
- 2020-03-31: Tentamensdatum Tentamensdatum ändrat från 2020-04-06 Förmiddag till 2020-04-30 Förmiddag av Beslut Grulg