Crowdsourcing and human computation are useful in a number of real-world applications. Crowds generate large data sets useful for natural language process and computer vision; they work together to formulate intelligent responses far beyond what we can automate; and they power intelligent interactive systems currently impossible with automated approaches alone. In this course, students will learn to program the crowd. They will write programs that work with existing sources of crowds (Amazon Mechanical Turk, oDesk, Facebook …), apply usability principles for designing crowd tasks that elicit high-quality responses, use statistical methods to improve the quality of the work received, build systems that interface with crowd labor in real time, and conduct experiments to improve understanding of the differences between different sources of crowd work. Course work will consist of projects in each of these areas, and a final team project decided on by the students in each team.