Course syllabus
Kurs-PM
Detta är kurs-PM för TDA553/DIT954 Objektorienterad programmering och design. Kursen ges av Institutionen för Data- och informationsteknik på Campus Johanneberg under läsperiod 3, 2026.
Programvaruutveckling kräver mycket mer än bara program som "fungerar" och "gör rätt". För att kunna arbeta med programvara på industriell skala krävs att de program vi skapar också går att underhålla över tid, återanvända, utöka, och arbetas på av många utvecklare. Denna kurs introducerar det objekt-orienterade paradigmet, och lägger stort fokus på sund objektorienterad design.
Kursen ges i huvudsak på Campus Johanneberg.
Se schemat i TimeEdit här: TDA553 | DIT954
Att komma igång
Detta är vad du behöver för att kunna arbeta med övningar och laborationsuppgifter i kursen:
- Vi använder i första hand IntelliJ IDE. Denna IDE finns tillgänglig på skolan datorer genom Chalmers Apps, men ni kan också installera den själva:
- För egen installation, gå till https://www.jetbrains.com/idea/download/ och scrolla ner till IntelliJ IDEA. Community-versionen (som ni får genom att helt enkelt inte starta "Free Trial" är gratis och innehåller allt vi behöver för icke-kommersiell utveckling.
- Behöver du hjälp med detta, fråga en assistent vid något labtillfälle under första veckan.
- Vill du hellre använda annan IDE, t ex VSCode, går det bra - men vi garanterar inte att vi då kan hjälpa dig med problem som uppstår.
- Joina discord-servern. Detta kommer att användas för väntelistor under övningar och laborationspass, och även som en kanal för att ställa frågor och hålla kontakt under kursens gång.
-
Gör surver inför laborationer för att hjälpa oss skapa en gruppindelning.
- Om ni använder en äldre version av IntelliJ kan ni installera en plug-in som heter Code With Me. Detta tillåter din grupp att arbeta på samma filer i realtid, även om ni inte befinner er i samma rum. För de nyaste versionerna av IntelliJ kan Code With Me användas utan att installera någon plugin.
Kursen har ingen obligatorisk litteratur. Vi rekommenderar boken "Object-oriented Design using Java" av Dale Skrien för den som uppskattar att ha en kursbok att läsa; den finns inte längre i tryck, men kan laddas ned via länken ovan.
Därefter...
Alla föreläsningar och övningar streamas: https://chalmers.zoom.us/j/61531200823?pwd=NYSComSLg9X8G70aM3dtruHkICgAQW.1 (Passcode: 583270)
Se framsidan för kursens innehåll och upplägg, inklusive samtliga föreläsningar, övningar, quizzes, etc.
Se Assignments för samtliga examinerade moment i kursen (laborationer, inlämningsuppgift, tentamen).
Se Java resources för online-resurser för självstudier i Java.
Prova på terminologi-quiz.
Kursteam
- Johannes Åman Pohjola (pohjola@chalmers.se): examinator, kursansvarig
- Jonas Duregård: lärare
- Samuel Kajava: TA
- Amir Ahmadian: TA
- Mario Carneiro: TA
- Isabell Nordmark: TA
- Casper Hansen: TA
- Alexander Appelin: TA
- Daniell Cole: TA
- Simon Wiman: TA
- Samuel Karlsson: TA
- Joonsuh Kim: TA
Kursvärdering
I slutet på kursen ges ni möjlighet att besvara en kursvärderingsenkät. Din återkoppling som student är viktig, och vi vill starkt uppmuntra dig att ta del av den, detta givetvis på ett konstruktivt sätt. Enkäten är på engelska, men det går bra att skriva sina fristextsvar på svenska.
Du hittar enkäten i menyn till vänster under "Kursvärdering". Här kommer du även att hitta resultaten av enkäten efter att den har stängt.
Enkäten öppnas sista veckan med undervisning.
Studentrepresentanter:
- Radmehr Daniel Asade Dehghan
- Rohini Singh
- Eigil Wretström
- Vera Åström Rune
- Love Lysell Berglund
Övergripande kursplan
- Vecka 1: Vad är objektorienterad design?
- Vecka 2-3: Typer och polymorfism
- Vecka 4-5: Beroenden och arkitektur
- Vecka 6-7: Design för olika ändamål
- Vecka 8: Sammanfattning
- Vecka 9: Skriftlig tentamen
Varje vecka består av två "moduler", vardera bestående av ett övningspass följt av en föreläsning. På övningen introduceras ett koncept genom uppgifter vi gemensamt arbetar med och diskuterar, och på föreläsningen följs detta upp tillsammans med de generella principer, mönster och tekniker som ligger bakom.
Övningar och laborationer sker i mindre grupper, medan föreläsningar sker i gemensam helklass.
Obligatoriska moment
Kursen innehåller tre obligatoriska moment, som alla måste genomföras med (minst) godkänt betyg för att bli godkänd på kursen som helhet.
- Laboration. Ett moment uppdelat i 4 dellaborationer. Genomförs i grupper om tre studenter.
- Inlämningsuppgift: Skriftlig analys av en kodbas funnen "in the wild". Genomförs i grupper om tre studenter.
- Skriftlig tentamen: Genomförs i tentamenssal.
Se detaljerad information här: Assignments
Skriftlig tentamen
Kursen slutar med en skriftlig tentamen i tentamenssal.
Gamla tentor hittas här: Gamla tentor
Betygsättning
Från kursplanen:
På hela kursen ges något av betygen: Underkänd (U), 3, 4, 5. För att bli godkänd på kursen krävs att få minst en 3:a på både Tentamen och Inlämningsuppgift, samt Godkänd (G) på Laboration. Betyget för hela kursen blir sammansatt av betyget för Tentamen och Inlämningsuppgift. I sammansättningen väger betyget för Tentamen tyngre.
Vad detta innebär i praktiken är att
- om en student får samma betyg på Inlämningsuppgift och Tentamen blir detta slutbetyget.
- om en student får olika betyg på Inlämningsuppgift och Tentamen, och betyget skiljer ett steg mellan dessa moment (dvs en 3:a och en 4:a eller en 4:a och en 5:a), då kommer slutbetyget bli detsamma som för Tentamen.
- om en student får olika betyg på Inlämningsuppgift och Tentamen, och betyget skiljer två steg mellan dessa moment (dvs en 3:a och en 5:a), då kommer slutbetyget bli en 4:a.
- om en student får U på något moment ges U på hela kursen, oavsett övriga betyg.
Med andra ord:
- För att få 5:a i slutbetyg krävs 5:a på Tentamen, och minst 4:a på Inlämningsuppgift.
- En 3:a på Tentamen kan höjas till en 4:a i slutbetyg av en riktigt bra (5:a) Inlämningsuppgift, och vice versa.
För kompletterande gäller följande:
- Ofärdig Laboration kan kompletteras fram till fredag, sista läsveckan före tentaveckan. Därefter krävs särskild diskussion med examinator, och/eller komplettering vid nästa kurstillfälle.
- Underkänd Inlämningsuppgift kan vid små missar kompletteras efter feedback. Vid större missar eller utebliven inlämning hänvisas till nästa kurstillfälle, och kan då endast ge ett godkänt betyg (3:a). För "plussande" av ett godkänt betyg, eller från underkänt till högre än 3:a, krävs diskussion med examinator, och en helt ny analys av en ny kodbas.
- Vid underkänd Tentamen hänvisas till något av omtentamenstillfällena. Kursen har tre tentamenstillfällen per år: ordinarie tentamensperiod efter läsperiod 2 (januari); ordinarie tentamensperiod efter läsperiod 3 (mars); samt omtentamensperioden i augusti.
Lärandemål
Kunskap och förståelse
- Redogöra för objektorienterade design-principer.
- Känna igen och redogöra för olika objektorienterade design-mönster; inklusive deras syfte och effekt.
- Redogöra för koncept inom objekt-orienterad design med användning av adekvat terminologi
- Kommunicera objekt-orienterad design skriftligt, samt visuellt med hjälp av ett grafiskt modelleringsspråk (UML)
Färdigheter och förmåga
- Använda och redogöra för grundläggande objektorienterade koncept, som klasser och objekt, primitiver och referenser, metoder och konstruktorer, variabler och attribut, etc.
- Använda och redogöra för mer avancerade språkmekanismer och tekniker, som exceptions, generics, trådar, defensive copying, etc,
- Använda och redogöra för arv och parameteriserade typer, och därtill hörande mekanismer, för att åstadkomma polymorfism och återanvändning av kod.
- Applicera design-principer och design-mönster för att åstadkomma sund objekt-orienterad design.
- Designa och implementera objektorienterade program för en given domän på ett sunt sätt med avseende på korrekthet, modifierbarhet och återanvändbarhet.
- Utföra och beskriva testning av objektorienterade program.
- Utforma en tydlig och välstrukturerad resonerande text, enligt grundläggande principer för argumentation och diskussion
- Identifiera och tillämpa verksamma metoder för samarbete i grupp, inklusive JML-aspekter
Värderingsförmåga och förhållningssätt
- Argumentera för gjorda design- och implementationsval enligt principer för god objektorienterad design och implementation
- Analysera och utvärdera kod enligt principer för god objektorienterad design och implementation
- Reflektera över olika strategier som främjar inkluderande samarbete i grupp, inklusive JML-aspekter
Course summary:
| Date | Details | Due |
|---|---|---|