Syftet med denna kurs är att förse studenten med en teoretisk grund inom programspråksteori. Det betyder främst introduktion av huvudsakliga konstruktioner av samtida programmeringsspråk som ger studenter de verktyg som är nödvändiga för kritisk utvärdering av olika språk och deras användbarhet i olika sammanhang.
Efter avslutade studier skall studenten ha tillägnat sig följande kunskaper och färdigheter:
- kännedom om olika paradigm och grundläggande koncept för programspråk, konstruktioner för olika språk och förmåga att kritiskt jämföra alternativ
- förståelse för formella metoder för syntax och semantik hos språk samt algoritmer för lexikal och syntaktisk analys
- goda kunskaper och färdigheter i att tillämpa grundläggande verktyg för imperativ programmering inkluderande atomära datatyper, loopar och fält samt pekare och subrutiner
- god förståelse för objektorienterade egenskaper, såsom överlagring av operatorer och arv, och förmåga att tillämpa dem i praktisk kodning
- förstå egenskaper hos alternativa paradigm, funktionell och logikprogrammering samt koncept och strukturer som dessa grundar sig på
- elementära kunskaper rörande språkorienterade verktyg för samtidighet
- Utvärdering av programmeringsspråk och programmeringsparadigmer
- Formell grammatik, syntax och semantik, lexikal och syntaktisk analys, parsning.
- Imperativ programmering, identifierare, variabler, deklarationer, uttryck, kontrollstrukturer och deras användning i Fortran, Pascal och C.
- Datatyper och strukturer: fält, poster, pekare och referenstyper.
- Procedurer och underprogram, block, räckvidd, parameteröverföring, nestade och rekursiva procedurer, egendefinierade operatorer
- Objektorienterad programmering. Klasser, inkapsling, run-time polymorfism, arv, mall. Översikt av Smalltalk, C++, Java.
- Funktionell programmering. Funktioner och notation av "lamda calculus". Funktionell programmering för typade och typlösa språk. Översikt av Lisp, Scheme och ML.
- Logikprogrammering. Mindre introduktion till predikatlogik och prövning av teorem. Grunderna i Prolog.
- Introduktion till samtidighet. Processer och trådar. Säker access till delat data. Språkliga stöd för samtidighet: semaforer, monitorer och meddelandeöverföring.
Datateknik GR (AB), 30 hp inkluderande Datateknik GR (A), Operativsystem introduktionskurs, 6 hp och Datateknik GR (B), Programmeringsmetodik, 6 hp. Matematik GR (A), 15 hp, inkluderande Diskret matematik, 6 hp.
Urval sker i enlighet med Högskoleförordningen och den lokala antagningsordningen.
Undervisningen består av cirka 15 % föreläsningar och 10 % handledda laborationer och 8 % övningar. Cirka 68 % av kurstiden är studietid utan lärare som du skall ägna åt inläsning av litteratur, förberedelser för laboration, eget laborerande, redovisning av uppgifter samt förberedelser för tentamen. Vid förändrad resurstillgång kan fördelningen ändras.
5.0 hp, T101: Tentamen
Betyg: A, B, C, D, E, Fx och F. A-E är Godkänt, Fx och F är underkänt
2.5 hp, L101: Laboration och teoretisk inlämningsuppgift
Betyg: Underkänd (F) eller Godkänd (P)
Betygskriterier för ämnet finns på www.miun.se/betygskriterier.
På kursen ges något av betygen A, B, C, D, E, Fx och F. A - E är Godkänt, Fx och F är underkänt.
Obligatorisk litteratur
R. W. Sebesta, Concepts of Programming Languages, Pearson Education, 7th ed, 0-321-312511
Kursen kan inte ingå i samma examen som kurs med kod DTAC09 eller DT086G.