Students of the arts and humanities are fascinated by the creative process. How is art created? How are songs written? How are poems developed? We study early versions of manuscripts and music scores in hopes that we can gain some insight into the creative process of successful artists and authors. We seek answers to questions like: How do successful authors write? What approach do effective painters take to composition? How much of the process is creation? How much of the process is revision? We do this, in part, to learn how to train the next generation of creative minds.
In computer science, we don't do this. When was the last time you cracked open an early, but buggy, version of Tony Hoare's quicksort? How did Dijkstra develop his shortest path algorithm? What design choices did Maurice Wilkes make when inventing microcoding? Do you even know who invented red-black trees? (Rudolf Bayer is the answer.) How does your professor write such good code? How do A students write code so fast? Rather than study these works, we are presented with final, polished, perfect (sometimes) code. Textbooks have perfect code, powerpoint slides have perfect code, our libraries have perfect, or at least polished, code. How are we supposed to learn about the software development process if we only ever see the final product?
In this talk, I will present a framework for opening up the software development process so we may examine and reason about it. I'll demonstrate some preliminary tools (with bugs), ask some questions, and use the system to answer some questions. Then, I'll pose many questions I cannot yet answer. My first: What do you want to know about how software is written?
Bio: Mark Bailey is a professor and the chair of computer science at Hamilton College. He holds a Ph.D. in computer science from the University of Virginia. His research interests focus on the boundary between hardware and software including program optimization, embedded systems, computer architecture, and computer security.
Bailey has received fellowships from the National Research Council and the Air Force Research Laboratory, and grants from the National Science Foundation, and Microsoft Research. He's been a consultant with the Air Force Research Laboratory, and Assured Information Security. He served as Editor of SIGPLAN Notices and member of the SIGPLAN executive committee.