Aarhus Universitets segl

modulbeskrivelser

1. enkeltfag Værktøjer og teknikker for store objektorienterede systemer

Enkeltfaget vil præsentere teori og begrebsdannelse inden for et antal områder, samt indeholde et større antal praktiske design og programmeringsopgaver som underbygning og illustration af teorien.

Enkeltfaget vil dække emnerne (eksempler på underemner angivet i parentes):

  • grafiske notationer for objektorienterede programmer (UML, views)
  • sprogkonstruktioner (concurrency, genericity, pakker, undtagelseshåndtering)
  • teknikker (systematik test, test-dreven udvikling, versionskontrol, build-management, persistens i relationelle databaser, distribueret programmering)
  • værktøjsstøtte (integrerede udviklingsmiljøer, testomgivelser, versionsstyring, build-management)

Deltagerne skal ved afslutningen af enkeltfaget kunne:

  • beskrive objektorienterede systemer ved hjælp af UML og arkitekturviews
  • beskrive, anvende, og programmere avancerede sprogkonstruktioner til concurrency, undtagelseshåndtering, genericity, og distribueret programmering
  • definere og anvende databaser, relationel algebra samt query sprog (fx SQL) på mindre problemstillinger
  • beskrive værktøjer til håndtering af store objektorienterede programmer (fx build-management, software konfigurationsstyring, test-management), forklare deres virkemåde og anvende dem på givne problemstillinger
  • definere systematisk test teknikker og anvende dem på mindre problemstillinger

Prøveform: En mundtlig prøve med intern censur. 7-trins skala

Vægt: 5 ECTS-point.

2. enkeltfag Arkitektur, patterns og frameworks

Enkeltfaget vil præsentere teori og begrebsdannelse inden for et antal områder, samt indeholde et større antal praktiske design og programmeringsopgaver som underbygning og illustration af teorien.

Enkeltfaget vil dække emnerne:

  • responsibility-driven design og variabilitetshåndtering
  • principper for fleksibel og genanvendelig software
  • software kvalitet, metrikker og måleteknikker
  • design og arkitektur mønstre/patterns
  • frameworks
  • test-dreven udvikling

Deltagerne skal ved afslutningen af enkeltfaget kunne:

  • beskrive softwarearkitektur
  • beskrive og klassificere kvalitetsattributter for softwarearkitektur
  • analysere og sammenligne parametrisk, polymorph, og kompositionel design
  • anvende og programmere teknikker til variabilitetshåndtering på en konkret problemstilling
  • beskrive og implementere gængse design patterns
  • beskrive og konstruere frameworks
  • forklare, evaluere og anvende patterns for test-dreven udvikling
  • anvende værktøjer til dokumentation og styring af store systemer såsom UML, Ant og JUnit
  • anvende Java eller et andet moderne objekt-orienteret sprog
  • diskutere og perspektivere de enkelte kursusemner til hinanden

Forudsætning

Enkeltfaget forudsætter, at den studerende har fulgt faget Værktøjer og teknikker for store objektorienterede systemer.

Prøveform: En mundtlig prøve med intern censur. 7-trins skala

Vægt: 5 ECTS-point.

3. enkeltfag Programmeringsprojekt i store objektorienterede systemer

Projektet formuleres som en central, bunden opgave samt krav om en eller flere udvidelser, som vælges af den studerende.

Projektet vil tage udgangspunkt i et antal centrale problemstillinger:

  • objektorienteret design og designdokumentation
  • fleksibilitet gennem brug af variabilitetshåndtering, design- og arkitektur patterns
  • anvendelse og konstruktion af frameworks
  • systematisk test og test-dreven udvikling
  • værktøjsstøtte, build-management, versionskontrol

Desuden vil den studerende kunne inddrage et eller flere andre aspekter i projektet, såsom relationelle databaser, distribution og concurrency o.a.

Deltagerne skal ved afslutningen af enkeltfaget kunne:

  • anvende begreber, teknikker og praktiske metoder fra fagpakken til at analysere, designe, og implementere en pålidelig og fleksibel løsning for en given problemstilling af større kompleksitet
  • evaluere og diskutere teknikkers, metoders, og fundamentale begrebers styrker og svagheder i den konkrete sammenhæng
  • beskrive og dokumentere løsningen og analysere klart og utvetydigt på skrift

Forudsætning

Projektet forudsætter, at den studerende har fulgt fagene Værktøjer og teknikker for store objekt-orienterede systemer samt Arkitektur, patterns og frameworks.

Prøveform: Et skriftligt projekt med intern censur. 7-trins skala

Vægt: 5 ECTS-point.

1. enkeltfag: Diskret matematik

Deltagerne skal ved afslutningen af enkeltfaget kunne:

  • definere og referere den basale terminologi
  • anvende begreber og teknikker på givne problemstillinger
  • forklare og udføre beviser for simple problemstillinger.

Indholdsbeskrivelse

  • Tal (elementær talteori, talsystemer, primtal, fibonacci tal, etc.)
  • Konkrete funktioner (specielt logaritme- og eksponentialfunktioner)
  • Matematiske strukturer (mængder, multimængder, sekvenser, funktioner, relationer, grafer)
  • Propositionslogik (booleske værdier, operatorer, regneregler)
  • Prædikatlogik (typede variabler, kvantorer, regneregler)
  • Bevisførelse (induktion, modstrid, reduktion, etc.).

Prøveform:

En mundtlig prøve. Intern censur. 7-trins-skala.

Vægt: 5 ECTS-point.

2. enkeltfag: Kontraktbaseret programmering

Deltagerne skal ved afslutningen af enkeltfaget kunne:

  • definere og referere den basale terminologi
  • formulere og skrive kontrakter i form af programudsagn og funktionelle specifikationer for metoder og klasser baseret på prædikatlogik
  • anvende løkke- og klasseinvarianter til systematisk udledning af kode i metoder og klasser
  • forklare og vurdere sammenhængen mellem programudsagn og programkode.

Målbeskrivelse

Målet med enkeltfaget er, at den studerende lærer grundlaget for systematisk, kontraktbaseret konstruktion af programmer.

Efter modulet vil den studerende være i stand til at læse og skrive kontrakter i form af programudsagn og funktionelle specifikationer for metoder og klasser baseret på prædikatlogik, redegøre for sammenhængen mellem programudsagn og programkode samt gøre brug af løkke- og klasseinvarianter til systematisk udledning af kode i metoder og klasser.

Indholdsbeskrivelse

  • Specifikationer vha. prædikatlogik
  • Specifikation versus implementation
  • Programudsagn (”assertions”) og gyldighed
  • Sammenhæng mellem udsagn og kode
  • Løkkeinvarianter (checkliste for løkker)
  • Klasseinvarianter
  • Systeminvarianter (UML m.m.)
  • Praktisk programmering med udsagn (assert-mekanismer)
  • Udsagn og test.

Forudsætning

Enkeltfaget forudsætter, at den studerende har fulgt faget Diskret matematik.

Prøveform:

En mundtlig prøve. Intern censur. 7-trinsskala.

Vægt: 5 ECTS-point.

3. enkeltfag: Regularitet og automater

3. enkeltfag: Regularitet og automater

Indhold:
Kurset dækker følgende emner:

  • endelige automater, regulære udtryk og regulære grammatikker
  • egenskaber ved disse, bl.a. ækvivalens og begrænsninger
  • relation til mere generelle beregningsmodeller som kontekst-fri grammatikker og Turingmaskiner
  • bevisteknikker
  • eksempler på praktiske anvendelser.

Læringsmål:
Viden
Målet er at den uddannede har viden om

  • endelige automater, regulære udtryk og regulære grammatikker
  • egenskaber ved disse, bl.a. ækvivalens og begrænsninger
  • relation til mere generelle beregningsmodeller som kontekst-fri grammatikker og Turingmaskiner
  • bevisteknikker.

Færdigheder
Målet er at den uddannede kan

  • definere den basale terminologi (strenge, sprog, klasser af sprog, samt basale operationer på disse).
  • beskrive basale abstrakte sprogformalismer (regulære udtryk, endelige automater, regulære grammatikker, kontekstfri grammatikker) - fra intuitivt niveau og konkrete eksempler til formel notation og generelle definitioner.
  • beskrive egenskaber ved formalismerne, bl.a. ækvivalens, begrænsninger og beslutningsprocedurer
  • forklare algoritmer, der oversætter mellem formalismerne eller afgør beslutningsproblemer.

Kompetencer
Målet er at den uddannede kan

  • udføre algoritmer, der oversætter mellem formalismerne eller afgør beslutningsproblemer - fra konkrete eksempler til generelle og formelle beskrivelser.
  • bevise og analysere egenskaber ved formalismerne (ved hjælp af konstruktive beviser og induktionsbeviser) - fra intuitivt niveau til formelle detaljer.

Forudsætning:

Modulet forudsætter at kursisten har fulgt faget ”Kontraktbaseret programmering”.

Prøveform:
En mundtlig prøve, ekstern censur, 7-trins-skala.

Valgfag: Introduktion til It-sikkerhed

Indhold:

Fagpakken behandler it-sikkerhed ud fra et teknisk perspektiv, dvs. beskriver teknikker til sikring af

  • Fortrolighed
  • Integritet
  • Tilgængelighed

Disse egenskaber vil blive betragtet ud fra tre vinkler: trusler mod dem, fx spoofing, uautoriseret
adgang, buffer overflows, osv.; strategier for beskyttelse mod disse trusler, dvs. sikkerhedspolitikker,
som fx den der benyttes af Java; og mekanismer til implementering af sikkerhedspolitikker,
som fx kryptografi, adgangskontrol, firewalls osv. Der vil være fokus på mekanismer baseret på
kryptografi og disses anvendelse, herunder fx public-key kryptografi, SSL, VPN, digitale signaturer,
trådsløs sikkerhed.

Læringsmål:
Viden
Målet er at den uddannede har viden om centrale begreber og problemstillinger inden for

  • it-sikkerhed i relation til udvikling af software, samt
  • værktøjer til at analysere it-sikkerhedsproblemer og – løsninger

Færdigheder
Målet er at den uddannede kan

  • beherske og anvende centrale sikkerhedsrelaterede begreber til udvikling og vurdering af konkrete løsninger

Kompetencer
Målet er at den uddannede kan

  • abstrahere fra konkrete problemstillinger til mere generelle sikkerhedsmæssige begreber og løsninger.

Prøveform:
Mundtlig, intern prøve med censur. Bedømmelse: 7-trins-skalaen. Der vil være et antal obligatoriske opgaver som skal være afleveret for at kunne tilmelde sig eksamen.