Teaching
On this page you can find links to the courses I am or have been teaching,
as well as information on teaching resources of general interest that I have
developed (some widely-used lecture notes on Prolog programming and an
interactive proof assistant). There is a separate page with details on
student supervision.
Courses taught in Amsterdam
- Computational Social Choice
(ILLC, University of Amsterdam, taught in Spring 2007, 2008 and 2009, and in Autumn 2010 and 2011)
This is an advanced course in the Master of Logic programme covering
various topics at the interface of social choice theory with logic
and computation, including preference representation in combinatorial
domains, voting theory, fair division procedures, mechanism design,
and negotiation in multiagent systems.
- Logic, Language and Computation
(ILLC, University of Amsterdam, taught in Autumn 2010 and 2011)
This is the central obligatory course in the Master of Logic programme. Through a series of guest lectures, it provides an overview of the different research areas that are being pursued at the ILLC.
- Multiagent Systems
(ILLC, University of Amsterdam, taught in Spring 2006)
This is an advanced course in the Master of Logic programme. It exemplifies some
of the core contributions to the theory of multiagent systems made by different
disciplines, including logic, economics and computer science. Topics covered include
negotiation, multiagent resource allocation, fair division, combinatorial auctions,
mechanism design, and preference representation in combinatorial domains.
- Introduction to Logic in Computer Science
(ILLC, University of Amsterdam, taught in Autumn 2006 and 2007)
This is an introductory course in the Master of Logic programme covering basic
techniques and concepts of logic in computer science, in particular automated reasoning,
logic programming, and complexity theory.
- Logic Programming and Search
(ILLC, University of Amsterdam, taught in Autumn 2005, 2006 and 2007)
This introductory course for 1st year students following the
BSc Artificial Intelligence programme introduces the declarative
programming language Prolog and discusses some of its applications in the
area of artificial intelligence.
- Modern Classics in Social Choice Theory
(ILLC, University of Amsterdam, taught in Summer 2009)
This has been a one-off project course, in which students read and presented some of the seminal papers in social choice theory of the second half of the 20th century.
The course has been offered together with Stéphane Airiau, Umberto Grandi, and Daniele Porello.
- Programming in Prolog
(ILLC, University of Amsterdam, taught in Summer 2011)
This has been a one-off crash course in logic programming with Prolog, covering the basics of the Prolog language, the implementation of an automated theorem prover, and small student-driven individual programming projects.
Courses taught in London
- 474:
Multiagent Systems
(Department of Computing, Imperial College London, taught in Spring 2004 and 2005)
This is an advanced course for postgraduate and 4th year undergraduate students.
The aim of the part of the course taught by me has been to show how
formal models for rational decision making and negotiation, developed
mostly in the area of economics, have found important applications in
multiagent systems.
- CS3AUR:
Automated Reasoning
(Department of Computer Science, King's College London, taught in Spring 2002)
This advanced course for 3rd year undergraduate students introduces some
of the key techniques used in the field of automated reasoning, such as
tableau-based deduction and resolution. The course also gives an introduction
to knowledge representation with description logics and to temporal
constraint reasoning.
- CS2LAP:
Logic and Prolog
(Department of Computer Science, King's College London, taught in Autumn 1999 and 2000)
This introductory course for 2nd year undergraduate students introduces
logic as a tool for various applications in computer science and artificial
intelligence. It also introduces the logic-based declarative programming
language Prolog.
Tutorials and Short Courses at International Events
- Multiagent Resource Allocation
(AAMAS-2006, EASSS-2006 and EASSS-2007)
This tutorial, given at the 5th International Joint Conference on Autonomous Agents and
Multiagent Systems (AAMAS-2006 in Hakodate) and twice at the European Agent Systems Summer School
(EASSS-2006 in Annecy and EASSS-2007 in Durham), covers some of the central issues in Multiagent Resource
Allocation, including preference representation languages, social welfare orderings, allocation
procedures, and complexity results. Two important topics receive special attention: distributed
(as opposed to centralised) negotiation schemes and fair division issues in multiagent systems
research. The two tutorials at EASSS I taught together with Nicolas Maudet.
- Fair Division
(AAMAS-2008, EASSS-2009, COST-ADT School 2010)
This tutorial, delivered at the 7th International Joint Conference on Autonomous Agents
and Multiagent Systems (AAMAS-2008) in Estoril in May 2008, the 11th European Agent Systems
Summer School (EASSS-2009) in Torino in August/September 2009, and the COST-ADT Doctoral
School on Computational Social Choice in Estoril in April 2010
provides an introduction to the area of fair division, with an emphasis
on computational considerations. Topics covered include fairness and efficiency criteria
and their axiomatic foundations, cake-cutting procedures,
and distributed approaches to the fair allocation of indivisible goods.
- Computational Social Choice
(ESSLLI-2008,
ECAI-2010,
TbiLLC-2011)
This course, taught originally at the 20th European Summer School in Logic, Language and Information
(ESSLLI-2008) in Hamburg in August 2008, is an introduction to computational social choice, an
interdisciplinary field of study bringing together ideas from computer science, artificial
intelligence, logic, political science and economic theory. The course covers topics in
preference modelling, voting theory, and fair division, and it highlights recent contributions
integrating social choice theory on the one hand and Logic & Computation on the other.
A revamped (shorter) version has been delivered at the 19th European Conference on Artificial Intelligence (ECAI-2010) in Lisbon in August 2010 and yet another variant of the course focussing on the axiomatic method, social choice in combinatorial domains, and judgment aggregation has been part of the programme of the 9th Tbilisi Symposium on Language, Logic and Computation in Kutaisi in September 2011.
- Overview of the COMSOC Research Area
(COMSOC-2008)
This has been a short introductory tutorial at the 2nd International Workshop on
Computational Social Choice (COMSOC-2008), held in Liverpool in September 2008.
- Voting Theory
(AAAI-2010)
This tutorial, delivered at the 24th AAAI Conference on Artificial Intelligence (AAAI-2010) in Atlanta in July 2010, provides an introduction to the theory of voting for AI researchers. The material covered includes the most important voting procedures, some of the classical theorems in the field, and several examples for recent work in computational social choice, with an emphasis on voting-related topics.
Teaching Resources
- An
Introduction to Prolog Programming
Lecture Notes, King's College London and University of Amsterdam, 1999-2007.
- WinKE:
An Interactive Proof Assistant for Teaching Logic
This software tool is based on the KE calculus, a refutation system which
combines features from Smullyan's analytic tableaux and Gentzen's natural
deduction, and has been designed to serve as a tutoring system to support
the teaching of logic and reasoning at an introductory level.
It is available free of charge to all interested parties.