Course pages 2019–20
Prolog
Our Prolog course has some of the characteristics of a flipped classroom: the core material is provided in a series of online lectures which for Lecture 2 onwards you should view before the lecture, where we will reprise that content with the help of worked examples.
All lectures this year are in the William Gates Building, Lecture Theatre 1.
So for this course we have two sets of material:
1. The video material, with the embedded slides (each also available as PDF):
This is provided via a dedicated site:
http://prolog.cl.cam.ac.uk/ls/teaching/1920/prolog
For example the first introductory video is Prolog Basics (Raven login).
The 'PDF's containing the slides used in each video (should you want to print them to annotate with your own notes) are available by clicking the 'PDF' link at the bottom-right of each video as in the example above (PDF: here).
2. We also have the lecture slides:
- Lecture 1 is an introduction to Prolog and this course. We will view the "Prolog Basics" video and spend time talking about why Prolog is a language you should learn about.
- Slides for Lecture 2 Prolog rules and lists.
- Slides for Lecture 3 Arithmetic, Backtracking
- Slides for Lecture 4 More backtracking, Generate and Test, the Search Tree.
- Slides for Lecture 5 The minefield of extralogical predicates like Cut, Negation, Database update.
- Slides for Lecture 6 Graph search. Exam considerations.
- Slides for Lecture 7 Difference Lists, Accumulators
- Slides for Lecture 8 Q&A catchup, iterative deepening.
Errata
Errors in the lecture videos and questions are indexed by video number (V), slide number (S) and time (T).
V | S | T | Errata | Corrige | From |
---|---|---|---|---|---|
15b | No slide or question index | Slide and question index built | rsa33 | ||
12 | 10 | div | intdiv (div is an infix operator in some versions of prolog) | hp343 | |
8 | 6-9 | 4:30 | Video and audio are not quite in sync | (under investigation) | awc32, vbt22 |
7 | 13 | 8queens | eightQueens | ns532 | |
7 | When asking to generalise from 8-Queens to n-Queens its not clear what the chessboard size should do | You should generalise to n-Queens on an nxn chessboard | cdk23 | ||
3 | 8 | The text typed during the lecture on this slide should read rule2 rather than rule. | Correct.... | jp581 | |
3 | 8 | Implicit binding of the exists quantifier is too large. This is important because otherwise the statement holds when thing(1,2) and thang(2) is true but rule2(1) is false - this happens because false implies anything and the overlarge capture of the exists allows you pick a z for which the LHS is false. | There should be an open bracket before the exists and a close bracket before the implication arrow | jp581 | |
8 | 6 | 10:00 | eval(mult(A2,B2),C2) :- eval(A2,A3),eval(B2,B3), C2 is A2*B2 is incorrect. | It should read C2 is A3*B3. | mjh233 |
17 | 23 | The domain of P is {1,2,3,4} | The domain of P is {1,4}. | arg58 |