Kursen presenterar logik och logikprogrammering för programvaruutveckling. Detta innefattar en översikt av Horn-klausuler och deras tillämpning i kunskapsrepresentation och resonemang samt logikprogrammering i Prolog och dess semantik. Kursen presenterar algoritmer över listor och träd, samt sökalgoritmer i grafer, databasprogrammering, rekursiv programmering, ickedeterministisk programmering. Verktyg för aritmetik i Prolog, strukturinspektion, metalogik, kontrollmekanismer för sökning, negation i Prolog, ofullständiga datastrukturer, parsning m.h.a. DCG. Olika mera effektiva datastrukturer, såsom differensstrukturer introduceras. Vi visar hur tekniker från funktionell programmering passar in i logikprogrammeringens ramverk och kan uttryckas i programspråket Prolog. Slutligen presenterar kursen några AI-tillämpningar, som enkla expertsystem, och ger en kort översikt av aktuella metodologiska trender.
Under denna kurs kommer studenterna att bekanta sig med teorin och de grundläggande designprinciperna inom logikprogrammering, medan de i till exempel examensarbetet, kan praktisera metoderna.
Tillämpningsexempel: pussel och spel, parsning, kompilering, formelmanipulering, expertsystem. Introduktion till modifikationer och utvidgningar av Prolog: parallell Prolog, ekvations- och restriktionslösning, rikare former av klausuler, moduler, objektorientering och Prolog.
I projektdelen av kursen
- identifierar och definierar studenten ett problemorienterat projekt som lämpar sig för att illustrera användning av logikprogrammeringstekniker
- formulerar studenten projektet med hjälp av logikprogrammeringens terminologi (implementation av ett program eller analys av ett program/system)
- genomför studenten projektet i grupp eller enskilt inom tidsramen
- redovisar studenten sitt arbete med en kort rapport och en muntlig presentation i "miniworkshop".