Seminars & Colloquia
Computer Science, UC Berkeley
"Automatic Programming Revisited"
Monday March 28, 2011 04:00 PM
Location: 3211, EB2 NCSU Centennial Campus
(Visitor parking instructions)
This talk is part of the Triangle Computer Science Distinguished Lecturer Series
Why is it that Moore's Law hasn't yet revolutionized the job of the programmer? Compute cycles have been harnessed in testing, model checking, and autotuning but programmers still code with bare hands. Can their cognitive load be shared with a computer assistant?
Automatic programming of the 80's failed relying on too much AI. Later, synthesizers succeeded in deriving programs that were superbly efficient, even surprising, but these synthesizers first had to be formally taught considerable human insight about the domain.
Using examples from algorithms, frameworks, and GPU programming, I will describe how the emerging synthesis community rethought automatic programming. The first innovation is to abandon automation, focusing instead on the intriguing new problem of how the human should communicate his incomplete ideas to her computerized algorithmic assistant, and how the assistant should talk back. As an example, I will describe programming with angelic oracles.
The second line of innovation changes the algorithmics. Here, we have replaced deductive logic with constraint solving. Indeed, new synthesis is to its classical counterpart what model checking is to verification, and enjoys similar benefits: because algorithmic synthesis relies more on compute cycles and less on a formal expert, it is easier to adapt the synthesizer to a new domain.
I will conclude by explaining how all this will enable end users to program their browsers, spreadsheets, without ever seeing a line of code.
Ras Bodik is Associate Professor of Computer Science at University of California, Berkeley, and the Vice Chair for Graduate Matters. He has worked in program analysis, compilation, programming languages, computer architecture and programming tools. His group developed highly scalable algorithms for analysis of Java programs, the first automatic program specializer, and a miner of program specifications, among other results. He currently leads two projects. The first project revolves broadly around program synthesis, ranging from programming by demonstration for end users to programming for GPU architectures. The second project explores programming for low-power mobile devices from a web browser perspective. The project spans the entire application stack, from the design of a declarative constraint-based language to replace AJAX, to new specifications of CSS, to algorithms for parallel page layout and rendering.
Ras will also be happy to talk about his new undergraduate course on programming languages in which students develop a language with coroutines, their own parser generator, and a web browser with own layout engine and reactive scripting.
Host: Frank Mueller, Computer Science, NCSU
To access the video of this talk, click here.