We will give an overview of the field of Artificial Life (Alife). We study questions such as emergence of complexity, self-reproduction, evolution, both through concrete models and through mathematical results. We will describe some of the most influential Alife models, and learn to implement them.