Hoppa till huvudinnehållet
Till KTH:s startsida Till KTH:s startsida

HI1027 Objektorienterad programmering 8.0 hp

Kurs-PM HT 2022-50034

Version 2 – 2022-09-01 16:50:36

Kursomgång

HT 2022-1 (Startdatum 2022-08-29, Svenska)

Undervisningsspråk

Svenska

Kursen ges av

CBH/Medicinteknik och hälsosystem

Kurs-PM HT 2022

Presentation av kursen

Kursen tar upp objektorienterat tänkande och modellering samt programmering i ett objektorienterat språk (för tillfället Java). Kursen ger kunskaper i objektorienterad programmering och modellering som kommer att användas inom andra områden i utbildningen.

I kursen ingår även implementering av applikationer med grafiska användargränssnitt.

Rubriker markerade med en asterisk ( * ) kommer från kursplan version HT 2022

Innehåll och lärandemål

Kursinnehåll

  • Bakgrunden till objektorienterad programmering, som inkapsling, abstrakta datatyper, gränssnitt, hög kohesion och låg koppling
  • Principer för objektorienterad programmering klasser, objekt, relationer mellan klasser och objekt, arv och interface, polymorfism
  • Introduktion till abstrakta datatyper och objektorienterade designmönster
  • Generisk kod med typarameter
  • Syntax och implementering i något objektorienterat språk
  • Felhantering
  • Strömmar för att läsa från och skriva data till olika typer av källor och mål
  • Trådprogrammering
  • Grafiska gränssnitt och händelsehantering
  • Funktionella inslag i objektorienterade språk, som funktionella interface, strömmar och lambda-uttryck

Lärandemål

Kursen skall ge studenterna grunderna i objektorienterat tänkande vid programmering samt goda kunskaper i syntax och programmeringsteknik i ett objektorienterat språk.
För godkänt betyg skall studenten:

  1. Kunna redogöra för objektorienterade principer som inkapsling, abstrakta datatyper, gränssnitt, arv, hög kohesion och låg koppling
  2. Utifrån en enklare problembeskrivning ta fram en objektorienterad modell för implementation med klasser, med data och metoder, samt relationer, som följer objektorienterade principer
  3. Kunna redogöra för några vanliga objektorienterade designmönster

För godkänt betyg skall studenten dessutom, i ett givet objektorienterat språk, kunna:

4.       Implementera klasser som följer objektorienterade principer som inkapsling, tydliga gränssnitt, arv, hög kohesion och låg koppling

5.       Implementera några vanliga datatyper som lista, kö och stack samt några vanliga designmönster

6.       Använda undantag (exceptions) för att signalera fel samt hantera dessa på lämplig nivå i applikationen

7.       Implementera applikationer med flera trådar samt skydda delat data från synkroniseringsproblem 

8.       Skriva applikationer med grafiska gränssnitt och händelsehantering

Läraktiviteter

Under kursen ges 11 föreläsningar och 12 övningstillfällen. Till övningarna finns uppgifter, med lösningsförslag, på kurswebben, samt i vissa fall förinspelade introduktioner. De schemalagda övningstillfällena är primärt frågestunder.

Detaljplanering

Det är lämpligt att för varje föreläsning skumma motsvarande föreläsningsbilder som är publicerade på kurswebben (Canvas). Du har då en förförståelse inför föreläsningen och kan lättare hänga med i resonemang och fördjupningar.

Efter föreläsningen läser du det som anges nedan och löser de övningsuppgifter som finns på kurswebben (Canvas).

Läraktivitet Innehåll Litteratur, 11e upplagan Föreberedelse

Föreläsning 0

Grundläggande, icke objektorienterad, syntax i Java. Skillnader från C.

[Kap 1 – 6 är repetition av grundl. programmering, i Java - använd som uppslagsbok]

 

Föreläsning 1

Objektorienterad programmering: klass, objekt, datamedlem, metod, inkapsling.
Språket Java. En jämförelse mellan Java och C.

Material från kurswebben
Kap 7, 8.1-8.3

Se föresläsning 0 (förinspelad). Börja med motsvarande övningsuppgifter.

Föreläsning 2

Objektorienterad programmering, forts: referensvariabler och objekt, equals, immutability, enum, static, arrayer

Kap 9, 10 + material på kurswebben

Detta täcker föreläsningarna 2 och 3.

 

Föreläsning 3

Relationer mellan objekt: association, aggregat, komposition; klassdiagram i Unified Modeling Language, UML. ArrayList.
Designmönstret Singleton

Se F2

 

 

Obligatorisk uppgift, ÖVN2

Programmeringslaboration 1

 

Föreläsning och övning 1-3

Föreläsning 4

Arv: super- och subklass: omdefiniering/override; abstrakt klass/metod; superklassen Object

Interface

Kap 11, 13

Detta täcker föreläsningarna 4 och 5

 

Föreläsning 5

Polymorfism – heterogena objektsamlingar

Arv vs aggregat. Designmönstren Strategy, Composite, Proxy
Generics: typparameter. ArrayList. Comparable.

Se F4

Kap 19, 20.4-6

 

Föreläsning 6

Felhantering med exceptions: throw, try, catch, finally
Strömmar: binär vs text; serialisering av objekt

 

12.1-12.9
12.10-12.13, 17

 

Obligatorisk uppgift, ÖVN2

Programmeringslaboration 2

 

Föreläsning och övning 1-4

Föreläsning 7

Objektorienterad analys och design: modellering från problem till klasser 

Abstrakta datatyper: lista, stack, kö

Material från kurswebben.

Kap 20

 

Föreläsning 8

Grafiska användargränssnitt, Java FX
Händelse/event, händelsehantering

Kap 14, 15, 16 samt föreläsningsmaterial
Täcker föreläsning 8 och 9

 

Föreläsning 9

Mer om händelsehantering och grafiska komponenter
Designmönstret Model-View-Controller

 

Se F9
Kap 31 (10th ed: kap 34)
Material från kurswebben.

 

Obligatorisk uppgift, ÖVN2

Programmeringslaboration 3

 

Föreläsning och övning 1-7

Föreläsning 10

Parallell exekvering med trådar: klassen Thread, interfacet Runnable; synkronisering av kodblock/data

 

Kap 32 

 

Föreläsning 11

Mer om designmönster.  Java och funktionell programmering. 

Material från kurswebben.

 

Obligatorisk uppgift, ÖVN2

Programmeringslaboration 5

 

Föreläsning och övning 1-11

Obligatorisk uppgift, ÖVN2

Restredovisningstillfälle, lab 5 (eller 3)

 

Se ovan



Schema HT 2022

Förberedelser inför kursstart

Särskilda förberedelser

Kursen förutsätter goda kunskaper i grundläggande programmering. För att registreras på denna kurs bör du vara godkänd på hela kursen HI1024, programmering grundkurs, eller motsvarande kurs.

Inför kursstarten bör du fräscha upp dina kunskaper från grundkursen i programmering. Speciellt viktigt är att du förstår, och kan implementera, funktioner med argument och returvärden samt struct.

Kurslitteratur

Rekommenderad kurslitteratur

Introduction to Java Programming and Data Structures, Comprehensive Version, Y. Daniel Liang, Pearson Education, ISBN 9781292221878 (11th ed). Både 11e och 12e upplagan kan användas.
Boken finns även som e-bok, ISBN 9781292221892 samt kan även "hyras" via bokab.net.

Det går att använda andra böcker om Java, men läsanvisningar ges endast till ovanstående litteratur.

Referenslitteratur (ej obligatorisk)

För den som vill fördjupa sig i objektorienterat tänkande rekommenderas någon bok om Design Patterns, designmönster. Designmönster för programmerare, Bilting, Studentlitteratur, ISBN 91-44-04312-0, är en välskriven, och billig, introduktion.

Programvara

Du kommer att behöva installera Java SDK (Software Development Kit), som bland annat innehåller en kompilator, samt IntelliJ IDE, utvecklingsmiljön.

På kurswebben sidan ”Resurser/Programvara” finns installationsinstruktioner och i vissa fall introduktioner till dessa programvaror.

Examination och slutförande

Betygsskala

A, B, C, D, E, FX, F

Examination

  • TEN1 - Tentamen, 3,5 hp, Betygsskala: A, B, C, D, E, FX, F
  • ÖVN2 - Övningar, 4,5 hp, Betygsskala: P, F

Examinator beslutar, baserat på rekommendation från KTH:s samordnare för funktionsnedsättning, om eventuell anpassad examination för studenter med dokumenterad, varaktig funktionsnedsättning.

Examinator får medge annan examinationsform vid omexamination av enstaka studenter.

Godkänd tentamen (TEN1; 3,5 hp), betygsskalan A-F
Tentamen innehåller både teoretiska och praktiska moment.

Godkända laborationer (ÖVN2; 4,5 hp), betygsskalan P, F

Slutbetyget grundas på samtliga moment. Betygsskalan A-F.

Avsnittet nedan kommer inte från kursplanen:

Tentamen ( TEN1 )

Tentamen sker vid dator och innehåller både teoretiska (del A) och praktiska moment (del B). Vid tentamen finns tillgång till en syntaxlista samt Javas API-dokumentation. Inga övriga hjälpmedel.

Programmeringslaborationer( ÖVN2 )

Laborationskursen består av 4 obligatoriska programmeringslaborationer.

Vid redovisning av de obligatoriska uppgifterna ska studenten

  • lämna in en komplett lösning, som plagiatkontrolleras, senast dagen före redovisnigen,
  • vid redovisningstillfället muntligen redogöra för sin lösning samt tillfredställande besvara frågor om denna. För uppgifter som löses i par ska varje student enskilt kunna svara för alla delar av lösningen.

Uppgifterna redovisas vid fyra schemalagda tillfällen. Alla uppgifter måste redovisasi ordning, dvs. för att få redovisa laboration 2 måste laboration 1 vara godkänd osv. Endast en uppgift kan redovisas per tillfälle.

Förutom de ovan nämnda finns ytterligare två redovisningstillfällen, ett i tentamensveckan samt ett i anslutning till omtentamen. Vid det senare tillfället kan endast en laboration, den fjärde, redovisas. Om du efter dessa tillfällen inte är godkänd på laborationskursen hänvisas du till nästa läsårs hela ÖVN2.

 

Laboration

Löses och redovisas

Motsvarande föreläsningar

1

Enskilt

1-3

2

Enskilt

1-4

3

Parvis

1-7

4

Parvis

1-11

 

Målrelaterade betygskriterier/bedömningskriterier

ÖVN2

I tabellen nedan anges vad som examineras i momentet ÖVN2.

 

 

Lärandemål

ÖVN2, examineras via

1

kunna redogöra för objektorienterade principer …

Lab 1, 2, 3, 4

2

Utifrån en enklare problembeskrivning ta fram en objektorienterad modell för implementation ...

Lab 2, 3, 4

3

kunna redogöra för några vanliga objektorienterade designmönster

Lab 3, 4

4

implementera klasser som följer objektorienterade principer …

Lab 1, 2, 3, 4

5

implementera några vanliga datatyper ... samt några vanliga designmönster

Lab 3, 4

6

använda undantag (exceptions) …

Lab 3, 4

7

implementera flertrådade applikationer …

Lab 4

8

implementera applikationer med grafiska gränssnitt och händelsehantering …

Lab 4

TEN1

Lärandemål som examineras i TEN1

Tentamen består av ca åtta teoriuppgifter (del A), som tillsammans täcker alla lärandemål, samt fyra programmeringsuppgifter (del B) som täcker målen 4, 5 och 6.

Betyg

För betyget E på TEN1 krävs

  • minst hälften av poängen på A-delen samt ...
  • minst hälften av poängen på B-delen samt
  • att minst en av de två första programmeringsuppgifterna är helt korrekt löst (testar lärandemål 4 och 5).

Om inte hälften av poängen uppnås på A-delen kommer inte B-delen att rättas.

Om en av de programmeringsuppgifter, del B, som krävs för betyg E på TEN1 bedöms vara i det närmaste, men inte helt, korrekt och övriga krav ovan är uppfyllda, ges betyget Fx och möjlighet till komplettering till betyget E.

Kriterier för betyg högre än E

Kraven för betyg E måste vara uppfyllda.

För betyg C krävs totalt minst 70 % av poängen på tentamen. Uppgift 3 och 4 på B-delen är av mer komplex karaktär och kräver att studenten på begränsad tid och på egen hand modellerar lösningen i lämpliga klasser, med tillhörande gränssnitt, samt i vissa fall även applicerar lämpliga designmönster.

För betyg A krävs minst 90 % av poängen på tentamen.

Möjlighet till komplettering

Komplettering av tentamen kan göras om resultatet på tentamen anses ligga nära gränsen för betyg E, se betygskriterierna ovan. Kompletteringen kan endast ge betyg E eller F och sker senast 4 veckor efter tentamenstillfället vid av examinator angiven tid. Examinator avgör om kompletteringen ska vara muntlig eller skriftlig.

Möjlighet till plussning

Plussning är endast tillåtet vid omtentamenstillfällen. En student kan endast plussa vid ett omtentamenstillfälle per läsår.

Anmälan om plussning görs till examinator, senast två veckor innan omtentamenstillfället.

Etiskt förhållningssätt

  • Vid grupparbete har alla i gruppen ansvar för gruppens arbete.
  • Vid examination ska varje student ärligt redovisa hjälp som erhållits och källor som använts.
  • Vid muntlig examination ska varje student kunna redogöra för hela uppgiften och hela lösningen.

Avsnittet nedan kommer inte från kursplanen:

Studenten är skyldig att ta del av och följa givna instruktioner om vad som gäller vid examinationen, och att det kan leda till disciplinära påföljder i form av varning eller avstängning om studenten inte följer instruktionerna. Vid redovisning av obligatoriska uppgifter, momentet ÖVN2, gäller de etiska riktlinjer som presenteras på kurswebben, sidorna för ÖVN2.

Ytterligare Information

Ingen information tillagd

Fakta om kursomgång

Startdatum

2022-08-29

Kursomgång

  • HT 2022-50034

Undervisningsspråk

Svenska

Kursen ges av

CBH/Medicinteknik och hälsosystem

Kontakter

Kursansvarig

Lärare

Examinator