TTK4145
Sanntidsprogrammering
Vår
Trondheim
Engelsk
Om emnet
Faglig innhold
Tema: Programmeringsformalismer for sanntid; POSIX, Ada, Java og Go. Tråder/prosesser, scheduling, synkronisering og kommunikasjon concurrency. Feilhåndtering, tilgjengelighet og konsistens. Programvare kvalitet og utviklingsmetodikk.
Et programeringsprosjekt gjort som gruppearbeide er en vesentlig del av faget.
Øvinger.
Læringsmål
Kunnskap:
- Inngående kjennskap til synkroniseringsmekanismer som semaforer og monitorer.
- Inngående kjennskap til meldingsbasert synkronisering.
- Inngående kjennskap til tråder, prosesser, scheduling og synkronisering i perspektiv av et sanntids operativsystem.
- Inngående kjennskap til vanlige fallgruber ved sanntidsprogrammering.
- Inngående kjennskap til feilhåndtering og feiltoleranse.
- Inngående kjennskap til høytilgjengelighet og konsistens i systemer med flere tråder/prosesser.
- Kjenskap til programmeringsspråkene C, C++, Java, Ada og Go.
- Kjenskap til CSP, Formelle metoder og bruk av analyseverktøy for sanntidssystemer.
Ferdighet:
- Gode ferdigheter i design og utvikling av sanntids programvare herunder både systemer basert på meldingssending og delt variabelsynkronisering.
- Evne til å planlegge og gjennomføre praktisk implementasjon av et programvaresystem av signifikant kompleksitet. (1-2 tusen linjer C-kode).
- Gode ferdigheter i et fritt valgt programmeringsspråk (sannsynligvis C, C++, Java eller ADA).
- Studenten skal kunne forholde seg konstruktivt i sitt design til feilhåndtering og konsistens i systemer med flere deltagere.
Generell kompetanse:
- Gruppesamarbeide.
- Programvareutvikling
- Informasjonsteknologi generelt.
Læringsformer og aktiviteter
Forelesninger, øvinger og prosjekt. Prosjektet er ganske stort og vil bli gjort i samarbeide med to andre studenter i hovedregelen.