Funktionell programmering: funktionsbegreppet, högre ordningens funktioner, currying, evalueringsstrategier, strömmar, mönsterpassning, överlagring, polymorfism, interpretering, lat evaluering, typer och typklasser.
Formella språk och syntaxanalys: automater, reguljära uttryck, grammatiker, lexikal analys, rekursiv medåkning, språkklasser.
Språköversättning: interpretering, kompilering och länkning.
Programmeringsparadigm: kontrollflöde, subprogram, rekursion, klasser, typer, beräkningsmodeller och minnesmodeller.
Efter godkänd kurs ska studenten kunna:
- tillämpa och förklara allmänna begrepp inom programmering, särskilt kontrollflöde, rekursion, interpretering, paradigm och beräkningsmodeller
- tillämpa och förklara grundläggande begrepp inom funktionell programmering, särskilt rena funktioner, referenstransparens, högre ordningens funktioner, oföränderlighet, typer
- tillämpa och förklara grundläggande koncept inom formella språk och syntaxanalys, särskilt automater, reguljära uttryck, grammatiker, lexikal analys, och rekursiv medåkning
i syfte att
- få ett bredare perspektiv på programmering
- kunna bedöma vilket paradigm och vilket programspråk som är lämpligt för att lösa en viss uppgift
- kunna använda adekvat programmeringsstil i valt programmeringsparadigm
- aktivt kunna delta i diskussioner om programmeringsparadigm, programspråkshistorik , språkdefinition, egenskaper hos typsystem, principer vid språkdesign, språköversättning, programmeringsprinciper och programmeringsbegrepp.