We teach two courses in this general research area: (1) A graduate class (CS289) on biologically-inspired multi-agent systems where we cover topics like swarm intelligence and evolutionary computing, through discussion of classic and current research papers and through independent research projects (2) An undergraduate class (CS189) that is a hands-on introduction to AI-Robotics where every problem set involves programming real robots. Both classes involve active participation and discussion throughout the semester. 

CS189: Autonomous Robotic Systems: Building autonomous robotic systems requires making Robots that Observe, Reason, and Act. How does a robot make sense of the world from raw and noisy sensor inputs? How does it control it's actions reliably and recover from failures? When does it need to reason about the world and when can it just react? How does it balance short-term problems versus long-term goals? How does it operate in a world where others (human and robots) exist? And how do we program a robot to achieve all these things? The goal of creating a robot is the goal of creating Embodied Artificial Intelligence. In this class we will study methodologies for achieving embodied AI through a hands-on and ground up approach of programming your own. In different years we've used different themese and robots, but the class is always hands-on. Our most recent version uses the Turtlebots (roomba base, depth camera, ROS) and focuses on autonomous behavior, from low level vision and motion control, to navigation and personality.

Robots Roam the Halls: Spring 2019, Spring 2018, Spring 2016WATCH the 2016 Class Movie!
Epucks: Course Website (2014),  Course Website (2013)WATCH the Class Video! 
Robosoccer: Course Website (2010)WATCH our class video!

CS289: Bio-inspired Multi-agent Systems a.k.a. Collective A.I.:How do we engineer robust collective behavior from the cooperation of vast numbers of unreliable agents? This class surveys bio-inspired approaches to understanding and designing collective intelligence in different domains. A unifying theme is the desire to construct robust systems consisting of many individually unreliable but cooperative nodes, and to program complex but predictable global behavior. The class covers bio-inspired algorithms, analysis techniques, and programming paradigms for engineering self-organizing systems. We will read papers that model biological systems and provide inspiration for new ways of thinking. We will then read corresponding papers that focus on algorithms, programming paradigms, and theory for engineering self-organizing systems.Topics vary year to year, and usually include: (1) swarm intelligence: social insects and animal groups, with applications to networking and robotics, (2) cellular computing: including cellular automata/amorphous computing, and applications like self-assembling robots and programmable materials, (3) evolutionary computation and its application to optimization and design. On occasion we cover topics like synthetic biology, dna self-assembly, human collective behavior, etc. The class is primarily based on discussions of research papers, along with a research project.

Course Websites (CS289): Fall 2019, Fall 2018Fall 2017Spring 2016Spring 2015 
Course Websites (CS266): Spring 2011 | Spring 2010 | Fall 2008 (also taught 2007, 2006, 2004)