These lectures aim to introduce the reader to the basic issues surrounding the design and implementation of intelligent agents. They begins by motivating the idea of an agent, presents a definition of agents and intelligent agents, and then discusses the relationship between agents and other software paradigms (in particular, objects and expert systems). The lectures then discuss four major approaches to building agents. First, logic based architectures are reviewed, in which decision-making is viewed as logical deduction. Second, reactive architectures are discussed, in which symbolic representations and models are eschewed in favour of a closer relationship between agent perception and action. Third, we discuss belief-desire-intention architectures, in which decision making is viewed as practical reasoning from beliefs about how the world is and will be to the options available to an agent, and finally to intentions and actions. Fourth, we review layered agent architectures, in which decision making is partitioned into a number of different decision making layers, each dealing with the agent's environment at a different level of abstraction.