Thesis (Ph.D.)--University of Washington, 2012Data is driving the future of computation: analysis, visualization, and learning algorithms power systems that help us diagnose cancer, live sustainably, and understand the universe. Yet, the data explosion has outstripped our tools to process it, leaving a gap between powerful new algorithms and what real programmers can apply in practice. I examine how data affects the way we program. Specifically, this dissertation focuses on using machine learning algorithms to train a model. I found that the key barrier to adoption is not a poor understanding of the machine learning algorithms themselves, but rather a poor understanding of the process for applying those algorithms and insufficient tool support for that process. I have created new programming and analysis tools that support programmers by helping them (1) implement machine learning systems and analyze results, (2) debug data, and (3) design and track experiments