Artificial Intelligence: Logic Programming I
Oliver Ray
1. Outline of the Unit
Unit Focus
AI involves replicating aspects of intelligent behaviour from specific tasks (weak AI) to general problem solving (strong AI)
We focus on agent-based, knowledge-driven, white-box forms of AI. Good Old-Fashioned AI (GOFAI)?
We dont study trendy sub-symbolic, data-driven, black-box types of AI like deep nets (available on other courses)
We believe data-driven and knowledge-driven AI will fuse to combine logical explainability with statistical robustness
Unit Structure
1
2 3
Week
Topic
Lecturer
Lab
1
Logic Programming I
Oliver Ray
Intro to Prolog
2
Logic Programming II
Oliver Ray
Intro to GridWorld
3
Logic Programming III
Oliver Ray
Problem Solving + Heuristic Search
4
Genetic Algorithms I
Seth Bullock
Simple Genetic Algorithm
5
Genetic Algorithms II
Seth Bullock
Coevolutionary Genetic Algorithm
6
Multi-Agent Systems I
Nirav Ajmeri
Agent-Based Simulation Model
7
Multi-Agent Systems II
Nirav Ajmeri
Multi-Agent System
8
Coursework (Exam)
9
Coursework (Exam)
10
Coursework (Exam)
11
Recap
All
Xmas
12
Revision
All
Jan
(Bookwork) Exam
COMS30014
COMS30012 (20CP)
COMS30013 (10CP)
In teaching weeks 1-7 there will be
a set of pre-recorded online lecture materials to watch
a live, timetabled Q&A with that weeks lecturer
a live, timetabled lab session in which you get supported practical experience related to the topic being taught
a monitored unit forum for you to ask questions
All will be on-line and all are very important for all students (irrespective of coursework or exam stream)
Blended Learning
Lectures
Lectures will be delivered as pre-recorded videos uploaded into Blackboard by 2pm on Mondays
Main weekly lecture(s) + an AI Classic
You are free to view lectures whenever you like
But, why not consider arranging watch parties More likely to process material with your brain
Ensure you stay in touch with friends
Stay up to date to get the most out of live activities
Q&As
Will probably work best if questions are posted on the forum in advance so the lecturer (or maybe TAs and even students) can answer as many as possible
Hopefully, as we get the hang of how that session runs, we can move towards more live interaction
Students are encouraged to answer questions if you (think you) know (part of) the answer
Q&As will be live on MS Teams on Thursdays 6-7pm
Labs
Labs will happen in Teams between 9-11 on Wednesdays
Students should self-enrol in one of 8 lab bubble groups
(each of 13/14 students) by 5pm, on Tuesday 6th Oct
Well randomly allocate any students that dont self-enrol
(swapping will be permitted, if there are genuine reasons)
Labs comprises 90 mins of group-work with each bubble
supported by a dedicated TA for the first and last 30 mins
Labs are not assessed but are vital for both EXM & CWK)
Bubbles
Bubbles will be interleaved so your precise lab slot will alternate weekly between 09:00-10:30 and 9:30-11:00
Time
SLOT-A
for bubbles 1,3,5,7 in weeks 1,3,5,7
for bubbles 2,4,6,8 in weeks 2,4,6
SLOT-B
for bubbles 2,4,6,8 in weeks 1,3,5,7 for bubbles 1,3,5,7 in weeks 2,4,6
09:00-09:25
TA-supported Group work (get-going)
###############################
9:30-10:55
Staff-monitored Group Work (crack-on)
TA-supported Group work (get-going)
10:00-10:25
TA-supported Group work (wrap-up)
Staff-monitored Group Work (crack- on)
10:30-10:55
###############################
TA-supported Group work (wrap-up)
Unit Staff
This unit is taught by three academics:
Oliver Ray (lecturer and director)
Seth Bullock (lecturer)
Nirav Ajmeri (lecturer, just joined North Carolina State Uni) and a team of Teaching Assistants:
Ed Barker (Head TA), Ruairi Fox, Orion Luo, Holly Millea Please contact any of us through the Unit Discussion Forum.
Grid-World
Artificial world where agents must efficiently navigate a grid and use charging stations to visit oracles and solve various tasks
Focus of Prolog labs (weeks 2&3) will help with understanding for exam and will be directly used in the coursework, where it will tie- in with multi-agent systems
2. Intro to Prolog
1950s
Functional: evaluate function definitions on given arguments
1960s
1970s
1980s
1990s 2000s
Programming Languages (simplified)
Procedural: execute instruction sequences from a given state
Logical: search within relational constraints for answers to queries
Sequel
SQL
Turbo
Prolog Sicstus ANSI
Prolog SQL ISO SQL
Prolog
Edinburgh Prolog
IC- Prolog
Prolog
Parlog
SWI
Prolog
Constraint programming
probabalistic Answer Set relational models Programming
Description Logics
SQL-2003
ISO Prolog
Graphical Databases
XQuery
PROgrammation en LOGique
Prolog is the most commonly logic programming language
Simple syntax, no typing, homoiconic, queries may return any number of answers: none, one or many
It focuses effort on problem definition, is great for proto- typing and has powerful language processing abilities
It is also the basis of a many powerful extensions used in real-world tasks: e.g. Constraint Logic Prog. (CLP), Inductive Logic Prog. (ILP), Answer Set Prog. (ASP),
SWI-Prolog
SWI-Prolog is a popular, well-supported, free Prolog system SWIPL Engine + SWISH IDE
Easy to install on Linux, Mac and Windows
Hosted as a sand-boxed web-service
Pre-installed on CS lab machines
User-friendly with lots of examples
https://www.swi-prolog.org/ https://www.swi-prolog.org/pldoc/man?section=implhistory
All these methods will be suitable for the week 1 lab, but weeks 2&3 will be best done with local installation
load
SWI for Sharing (SWISH)
Menu Bar
create
search
Knowledge Base
Answers
Queries
Can run locally or on hosted server at https://swish.swi-prolog.org/
Example Program
Example Program
in-line comments:
%
facts: predicate(terms)
rules:
head :- body
block comments
/* */
(example) queries
VaRS, cOnsts
Example Program
(; or enter)
(ctrl-enter)
Example Program
Example Program
?
Overview of Prolog Term Syntax (simplified)
simple constant
complex
var
atomic
compound
variable
X.. _
start uppercase underscore (anonymous)
_..
start underscore (dont-care)
number
-5 0 15
e.g. integers
string
..
double- quoted
empty list
[ ]
square brackets
atom
a.. ..
(.,.)
Tuple (,/2)
[.,.]
non-empty list ([|]/2)
f(.,.)
functor
start lowercase or single-quoted
https://www.swi-prolog.org/pldoc/man?section=standardorder
comparison operators for (ground) numbers: < , > , =< , >= , == , ==
comparison operators for (arbitrary) terms: @< , @> , @=< , @>= , == , == (take care if comparing variables!)
Actions!
Have a look around the SWI Prolog website and try to download, install, and run the SWIPL engine and SWISH IDE locally on your computer (highly recommended!)
This should be relatively easy, but in case of issues, for now try working through this web-hosted SWISH server or try and remotely run SWIPL on the CS lab machines.
Work through chapters 1 and 3 of the excellent free on-line tutorial Learn Prolog Now! which will take you through the basics of Prolog very simply and effectively
Thank you
Reviews
There are no reviews yet.