Funktionell programmering: funktionsbegreppet, högre ordningens funktioner, currying, evalueringsstrategier, strömmar, mönsterpassning, överladdning, polymorfi, interpretering, typer och klasser.
Logikprogrammering: unifiering, backtracking, negering, snitt och låddiagram.
Formella språk och syntaxanalys: automater, reguljära uttryck, grammatiker, lexikal analys, rekursiv medåkning, språkklasser
Internetprogrammering.
Språköversättning: interpretering, kompilering och länkning.
Efter genomgången kurs ska studenten kunna
- tillämpa och förklara allmänna begrepp inom programmering: kontrollflöde, rekursion, interpretering, paradigmer
- tillämpa och förklara grundläggande begrepp inom funktionell programmering: högre ordningens funktioner, currying, lat evaluering, mönsterpassning, typer och klasser
- tillämpa och förklara grundläggande begrepp inom logikprogrammering: unifiering, backtracking, snitt, negering och olika programmeringstekniker som t.ex. generate-test
- tillämpa och förklara grundläggande koncept inom formella språk och syntaxanalys: automater, reguljära uttryck, grammatiker, lexikal analys, och rekursiv medåkning
- skriva egna klient-serverprogram samt använda protokoll och kunna förklara hur de tolkas och skrivs
för 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.