Programspråk och programmeringsparadigmer
Kursens mål är att ge dig förståelse för hur programmeringsspråk kan konstrueras och implementeras och erfarenhet av att använda olika språk, framförallt från andra grupper än den objektorienterade och imperativa.
Grundläggande: Historia, designprinciper, syntax, semantik, styrflöden, typsystem, namn, räckvidd, bindning och abstraktionsmekanismer.
Objektorienterade språk: Klassbaserade språk, prototypbaserade språk, inkapsling, informationsgömning, arv, delegering, polymorfism och dynamisk bindning.
Funktionella språk: Polymorfism, rekursion, funktioner som första klassens programkonstruktioner, högre ordningens funktioner, fördröjd kontra ivrig evaluering och currying.
Logikbaserade språk: Fakta och regler, resolution and unifiering, sökning och backtracking, rekursion, funktioner och aritmetik, listor och andra strukturer.
Avslutande sammanfattning och utblick.
Undervisning
Undervisningen består av föreläsningar och seminarier.
Examination
Kursen examineras genom hemtentamen och inlämningsuppgifter.








