Agents are a new technique for trying to model, simulate, and understand systems that are ill-structured and whose mathematics is initially unknown and possibly unknowable. This approach allows the analyst to assemble models of agents and components where micro-decision rules may be understood; to bring the agents and components together as a system where macro-behavior then emerges; and to use that to empirically probe and improve understanding of the whole, the interrelations of the components, and synergies. This approach helps one explore parametrics, causality, and what-ifs about socio-technical systems (technologies that must support people, groups, crowds, organizations, and societies). It is applicable when trying to model and understand human behavior - consumers, investors, passengers, plant operators, patients, voters, political leaders, terrorists, and so on. This course will allow students to investigate and compare increasingly complex agent based paradigms along three lines - math foundations, heuristic algorithms/knowledge representations, and empirical science. The student will gain a toolbox and methodology for attempting to represent and study complex socio-technical systems.