Game Theory: Introduction to the course


This course will cover the following aspects of Game Theory:

  • Normal form games and Nash equilibrium
  • Evolutionary Game Theory
  • Some contemporary research

All course materials are available online at You can also find all the source files that create that website at

Course notes

The course notes are written using Jupyter notebooks, you will see mathematics but also Python code used to illustrate and confirm certain results.

For example here is some code verifying the simple identity:

$$ (a + b) ^ 2 = a^2 + 2ab + b ^2. $$

In [1]:
import sympy as sym  # A library used for symbolic computations
sym.init_printing()  # Use LaTeX to clean up the output
a, b = sym.symbols('a, b')
((a + b) ** 2).expand()

$$a^{2} + 2 a b + b^{2}$$

In class we will not follow the course notes: these are there for you to read on your own time. Instead we will use activities and other examples to illustrate the concepts. I have my own notes for those (which are also available to you):

If you would like some information about the pedagogic approach:

It is possible that the course notes will change: for things like typos and clarifications, all of the notes are hosted openly on github and if you're interested you can find a list of all changes here:

Technology in class

Please use whatever resources you need to be successful in this class. Let me know if I can help with anything.

Office hours

I will hold 2-3 hours a week for office hours during which you may come and get help. Specific hours will be determined collaboratively as a class during the first class meeting.


There are two piece of assessment in this course:

  • Individual coursework (25%): The individual coursework includes a programming component.
  • Exam (75%)