I was in the second semester of a 3-year Master of Architecture program and was struggling. I had been accepted into the program a few years out of a liberal arts undergrad, and, having spent most of the intervening time working as a web designer and developer, considered it a pivotal shift for me. Architecture culture was, however, completely unfamiliar. In drawing and representation courses, as well as the core studio, I was continually frustrated by the seemingly arbitrary nature of architectural form, and perceived a lack of scientific rigor in analyzing and solving design problems through it. Architecture defied the systematic rationalization I was used to in digital design contexts. So I gravitated toward projects where I could apply my background in math and programming to architectural design — for example, representing the paths of a city park with an undirected graph structure, building a custom software tool to generate rectilinear forms from sketches, and likening the functioning of spaces in a building design to ‘cooperative parallelism’ (as in multithreaded computing). Of course, a park is not a graph, and a building is not a computer, but these metaphors helped me to comprehend the world of architecture — and made me a misfit among aspiring architects.
Not long after my decision to take a leave of absence from the M.Arch. program, I discovered the Computational Design track at Carnegie Mellon University and enrolled. Here was a world of people whose work and research didn’t fit neatly into the traditional disciplines, who were using computation and digital technology not only as instruments for doing design, but as lenses and metaphors for design, and as areas to be explored, to bring back new ways of thinking and designing. The Master of Science in Computational Design program has given me a wide latitude for my research, and the opportunity to take courses from architecture and computer science, design and human-computer interaction, all under a multidisciplinary umbrella. Through it I have come to see computational design (like architecture) as an openly promiscuous field, borrowing from diverse disciplines, with the potential to apply its approaches to larger questions of technology, design, and society.
In this thesis, my aim is to bring together the methods, techniques, and strategies of computational design that are particularly oriented toward addressing problems of social complexity, and that provide productive frames for thinking about and doing design. My hope is that this work will combine the most fruitful practices of both computation and design, and in doing so, show that these worlds are not at all disparate, but significantly overlap. My goal is to provide illustrative approaches for those with a computational mindset interested in learning to work in ambiguity and socio-technical systems as well as designers who want to incorporate computation into their practices without giving up their unique, human role.