- they write beautiful and precise descriptions in English (or other languagges) of what should be done,
- they ask AI to produce code,
- ... and ... they throw out the natural language descriptions!
Luca de Alfaro
Professor
luca@ucsc.edu
Computer Science and Engineering
University of California, Santa Cruz
Ph.D. Stanford University, 1998
Office: Bld E2, Rm 339A
Nowadays, people code mostly as follows:
This is a shame. It is as if someone wrote very carefully a C++ program, compiled it, and then once the binary works, threw out the C++ code because "the binary works". The problem with this approach is that the natural language description can be so much more useful, as everybody, and not only programmers, can read and modify them!
We aim to answer the question: what would it take for natural languages to replace programming languages? What do we need to give people the confidence that their natural language descriptions are correctly implemented? What do we need to replace the programming-language ecosystem with a natural-language one? We have various projects in this area. They include these (we will add more as we go along).
This project aims to develop notebooks like the Jupyter ones, except, in natural language. AI is used to convert the natural language to code and to check that the code correctly implements the natural language. Multiple AIs can be used, so that one does not need to trust a single one.
The goal of this project is to develop the theory and the tools that enable people, from data scientists to non-specialists, to analyze datasets, and identify anomalous behavior that has potential fairness implications. This is joint work with Elena Baralis and Eliana Pastor.
We have just released DivExplorer: a Python package, and an associated Web Application, that enables anyone to analyze a dataset, and identify data subgroups where a classifier behaves in a way that deviates from the average. This can be used, for instance, to identify who benefits, and who is disadvantages, from errors in machine-learning classifiers. We are looking for contributors!
Natalia Ocampo-PeƱuela and I are starting a project at the intersection of computer science and ecology. The project will apply the methods of neural computation, ML, optimization, and parallel processing to the mapping and analysis of animal distributions, and in particular, of birds. We want to develop computational tools to analyze habitat changes, such as urbaninzation and natural disasters, and to propose interventions such as habitat protections that benefit species survival. This project is just starting, and we are looking for students who might be interested in joining it. In particular, we welcome applications from prospective Ph.D. students. Contact us if you are interested.
NotebookGrader is an open source web app for assigning and grading Python notebooks. Instructors can create assignments consisting of Python notebooks. When students join the assignments, they are shared a notebook on Google Colab on which they can work. They have a grade button; when they press it, they get both a grade, and feedback. The code can be found on GitHub. NotebookGrader has been written to facilitate teaching at UC Santa Cruz, and to be a vehicle for experimentation in innovative techniques in teaching and education.
In current network protocols, much of the behavior is hardwired in rules that prescribe when to transmit packets, how frequently to send them, how to route them, and so forth. The project seeks to leverage reinforcement learning to obtain protocols that adapt to their environment and achieve both greater efficiency, and greater robustness via their adaptation capability. We have developed techniques for channel access in wireless networks that, by using reinforcement learning, enable network nodes to co-adapt and collaborate to achieve fair and efficient bandwidth sharing. We are now looking at channel access, routing, congestion control, and more.