IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Objektorienteret softwarekonstruktion 
Kursusnavn (engelsk):Object Oriented Software Construction 
Semester:Forår 2011 
Udbydes under:Bachelor i softwareudvikling (bswu) 
Omfang i ECTS:7,50 
Kursussprog:Dansk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:72 
Maks. antal deltagere:75 
Formelle forudsætninger:Grundlæggende programmering (BSc i softwareudvikling), eller tilsvarende.


Information om studiestruktur
Dette kursus indgår på andet semester på bacheloruddannelsen i software. Se studieforløbet beskrevet her: Bachelor softwareudvikling  
Læringsmål:Læringsmål:
Efter kurset forventes den studerende at kunne følgende:
• Anvende alle elementer af et moderne objektorienteret sprog (Java)
• Forklare i detaljer hvordan de enkelte elementer af sproget fungerer
• Forklare i detaljer hvordan de enkelte elementer af sproget bruges til at konstruere software som er nem at vedligeholde og udvide
• Konstruere klassehierarkier med anvendelse af interfaces, abstrakte klasser og metoder, superklasser og subklasser
• Konstruere generiske typer og generiske metoder
• Forklare hvordan programmer i sproget afvikles, med begreber såsom virtuel maskine, stak, hob og garbage collection
• Gøre rede for Javas faciliteter til fejlhåndtering og benytte dem i praksis
• Forklare hvordan Java understøtter samtidighed (concurrency) og hvilke problemer det introducerer
• Benytte JDBC-API’et i egne programmer og gøre rede for dets opbygning
• Beskrive programmer vha. UML-diagrammer
• Anvende nogle designmønstre til at strukturere og beskrive software
* Beskrive Javas reflektionsmekanisme og benytte den sammen med Annotationer
• Gennemføre simple induktionsbeviser
• Formalisere givne uformelle udsagn ved hjælp af logik; kunne forenkle givne
logiske udtryk; og indse hvornår to udsagn er ækvivalente.
• Formulere invarianter, særlig løkkeinvarianter, i programmer, og benytte disse
til at ræsonnere om programmers korrekthed. 
Fagligt indhold:Kurset indeholder dels en introduktion (4 uger) til simpel formel logik og bevisførelse og disses anvendelse i ræsonnementer om programmers korrekthed, og dels (8 uger) en grundig gennemgang af objektorienteret programmering med Java. Der lægges vægt på at forklare og illustrere, hvordan man bruger objektorienterede elementer på en fornuftig måde.

Kurset gennemgår nogle af de samme elementer af objektorienteret programmering og Java som kendes fra Grundlæggende Programmering med Projekt, men der gås mere i dybden, der lægges mere vægt på korrekt anvendelse, og der lægges vægt på præcision og fuldstændighed. Desuden gennemgås en række nye emner: trådprogrammering, stak og hob, UML, designpatterns, static import og enumerations, konstruktion af generiske typer og generiske metoder, wildcards i generiske typer, håndtering af kataloger og filer, JDBC, refleksion, annotationer og fejlhåndtering.

For at blive indstillet til eksamen skal du for det første besvare og have godkendt tre obligatoriske opgaver, der behandler emnerne fra de første fire uger.
Desuden skal du have godkendt 6 opgavebesvarelser for de opgaver der hører til den sidste 8 uger af kurset. Det vil sige, at du skal have godkendt i alt 9 obligatoriske opgaver.
Deadline for aflevering af de obligatoriske opgaver vil blive offentliggjort på kursets hjemmeside - det betyder, at de angivne deadlines vil være bindende.

Den efterfølgende mundtlige eksamen vedrører emnerne fra kursets 9 sidste uger.

Følgende emner behandles:

•Induktionsbeviser, induktionshypotese
•Udsagnslogik, logisk ækvivalens, tautologi, de Morgans love, prædikatlogik, kvantorer, relation til logiske operatorer i Java
•Løkkeinvarianter, illustreret blandt andet med algoritmer på arrays, beviser for løkkers korrekthed
•Datastrukturinvarianter
•UML
•Design patterns (Proxy, Observer, Composite, Command, Decorator, Factory, Iterator)
•Genbrug af kode vha komposition og arv.
•Polymorfi, abstrakte klasser og interfaces
•Indre & anonyme klasser
•Static og non-static members
•Enumerations og static import
•I/O – biblioteker, filer, netværk, console, serialisering af objekter
•Exceptions og korrekt håndtering af disse
•Assertions
•Java Database Connectivity (JDBC)
•Generics, herunder wildcards
•Valg af Collection-typer, performance for disse
•Metoder fra Object-klassen og korrekt overriding
•Tråde og interfacet Runnable
•Samtidighed – keywordet synchronized
•Begreberne stack og heap
•Annotationer
•Refleksion 
Læringsaktiviteter:12 forelæsninger og 12 øvelsesgange

12 forelæsningsgange + 11 øvelsesgange
Undervisningsformen er forelæsninger med overheads, tavle og kørende eksempler og en væsentlig del to-vejs-kommunikation for at tilpasse farten til de studerendes forudsætninger og interesser.

Der lægges stor vægt på praktiske øvelser ved computer med personlig feedback på opgavebesvarelser. Vi lægger op til at de studerende samarbejder om opgaverne i mindre grupper (2-3 personer) og afleverer en samlet besvarelse for gruppen.
-----------
Se hvordan undervisningen er tilrettelagt her:
link til skemaoplysninger
Skemaoplysningerne vil være tilgængelige fra kort før semesterstart 

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 7-trins-skala, Ekstern censur

Eksamensspørgsmålene udleveres minimum 14 dage før eksamen.

På dette kursus er der obligatoriske aktiviteter (fx deltagelse, opgaver, øvelser, fremlæggelser, produktioner), som skal opfyldes for at blive indstillet til eksamen:
- For at blive indstillet til eksamen skal du for det første besvare og have godkendt tre obligatoriske opgaver, der behandler emnerne fra de første fire uger.
- Desuden skal du have godkendt 6 opgavebesvarelser for de opgaver der hører til den sidste 8 uger af kurset.
- Det vil sige, at du skal have godkendt i alt 9 obligatoriske opgaver.

Den mundtlige eksamens varighed er 30 minutter.  

Litteratur udover forskningsartikler: 
 
Afholdelse (tid og sted)
Kurset afholdes på følgende tid og sted:
UgedagTidspunktForelæsning/ØvelserStedLokale
Mandag 12.00-14.00 Forelæsning ITU Aud 2
Mandag 14.00-16.00 Forelæsning ITU 3A52, 3A50
Mandag 16.00-18.00 Øvelser ITU 3A52, 3A50

Eksamen afholdes på følgende tid og sted:
EksamensdatoTidspunktEksamenstypeStedLokale
2011-05-18 09:00-15:00 Skriftlige arbejder ITU Eksamenskontoret (2E)
2011-06-20 Kontakt kursusansvarlig for individuelt tidspunkt Mundtlig eksamen ITU 3A18
2011-06-21 Kontakt kursusansvarlig for individuelt tidspunkt Mundtlig eksamen ITU 3A18
2011-06-22 Kontakt kursusansvarlig for individuelt tidspunkt Mundtlig eksamen ITU 3A18
2011-08-01 Re-eksamen - Kontakt kursusansvarlig for tidspunkt Mundtlig eksamen ITU 4A30