Computational Creativity

Computational Creativity is the science, engineering and philosophy of how to build software that can take on some of the creative responsibilties in arts and science projects. This course was developed and delivered by Simon Colton at the first Autumn School on Computational Creativity, at the University of Helsinki, in 2011.

The suggested reading for the Autumn School was as follows:

Lecture One - Introduction to Computational Creativity

Lectures Two and Three: Building an Automated Painter (Practical and Cultural Issues)

Lecture Four: Building an Automated Mathematician

Lectures Five and Six: Philosophical Issues, Guiding Principals and Formalisations

Ludic Computing

Ludic Computing is the study of the design, construction and evaluation of computer systems for play. Computers support a huge range of playful and creative activities: from video games and interactive art, to tools for creative expression and playful exploration; as artificial players of games, and as creators in their own right. It is a highly interdisciplinary area with links to many other fields, including Graphics, Human-Computer Interaction and Artificial Intelligence.

This course was given at the Department of Computing, Imperial College, London from 2010 to 2012. It was developed and delivered by Simon Colton, Jeremy Gow, and Alison Pease.

Lecture 1: Introduction
Lecture 2: Computational Creativity
Lectures 3 and 4: Evolutionary Design
Lectures 5 and 6: Design Grammars
Lectures 7 and 8: Non-Photorealistic Rendering
Lecture 9: Steering Behaviours
Lecture 10: Pathfinding
Lecture 11: Behaviour Trees
Lecture 12: Adaptive Games
Lecture 13: Interactive Play
Lecture 14: Designing for Play
Lecture 15: Social Networks
Lecture 16: Monte Carlo Tree Search
Tutorial 1: Evolutionary Design
Tutorial 2: Visual Grammars
Tutorial 3: Non-Photorealistic Rendering
Tutorial 4: Steering and Pathfinding
Tutorial 5: Behaviour Trees and Adaptation
Tutorial 6: Understanding Play
Tutorial 7: Social Networks

Artificial Intelligence

Artificial Intelligence is the study of how to engineer software which is able to undertake intelligence tasks and exhibit intelligence behaviours. There were four main parts to the course: (1) Fundamentals - the basic notions of AI, in particular search and knowledge representation, applied to game playing (2) Automated reasoning - how to get a program to deduce new facts and prove things for you (3) Machine learning - how to get a program to induce hypotheses from data and make discoveries for you, and (4) Evolutionary approaches - how to evolve programs for intelligent tasks by breeding them using crossover and mutation.

This course was developed and delivered by Simon Colton and Jeremy Gow and at the Department of Computing of Imperial College, London, between 2002 and 2009.

Lecture 1: Characterisations of Artificial Intelligence
Lecture 2: Artificial Intelligence Agents
Lecture 3: Search in Problem Solving
Lecture 4: Knowledge Representation
Lecture 5: Game Playing
Lecture 6: First-Order Logic
Lecture 7: Making Deductive Inference
Lecture 8: The Resolution Method
Lecture 9: Resolution Theorem Proving
Lecture 10: Machine Learning Overview
Lecture 11: Decision Tree Learning
Lecture 12: Two Layer Artificial Neural Networks
Lecture 13: Multi-Layer Artificial Neural Networks
Lecture 14: Inductive Logic Programming
Lecture 15: Constraint Satisfaction Problems
Lecture 16: Genetic Algorithms
Lecture 17: Genetic Programming
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
    [ slides ]
Tutorial 1
Tutorial 2
Tutorial 3
Tutorial 4
Tutorial 5
Tutorial 6
Tutorial 7