Martin Vechev is a an Associate Professor of Computer Science at ETH Zürich where he leads the Secure, Reliable, and Intelligent Systems Lab. Prior to ETH, he was a Research Staff Member at the IBM T.J. Watson Research Center in New York, USA (2007 - 2011). His work spans the intersection of artificial intelligence and programming languages, including both theoretical and system aspects.
BL: To get started, why don't you tell me about yourself.
MV: I'm originally from Sofia, Bulgaria. From age four until twelve, I played music, I played piano and cello because my mom is a musician. Now my uncle is a professor at the technical university, in computer science. He actually did a postdoc with Andrew Tanenbaum [of VU Amsterdam]. I used to go to their lab and play computer games. I was maybe 9 or 10. I would be in the lab and I always had to ask someone sitting there working in the lab to start the games for me. I remember thinking that if one day I could figure out how to start the games on my own that would be a huge success.
BL: This was when you were still pretty young.
MV: Yes, and during that time, when I was small, my uncle used to tell me about these big famous labs like IBM Watson and Livermore Labs. I was very fascinated to think about what these places were like.
BL: How did you get interested in computer science?
MV: I went to one of the elite high schools in Sofia that is focused on mathematics. I was primarily focused on mathematics, but I learned some computer science also. To get into these high schools there is about one year of preparation time, solving mathematics problems, and then there is an exam. The one where I went, many of the Mathematics Olympiad winners come from there. It is very challenging and very difficult to get in. I remember these experiences with my uncle in his lab and I was not sure, whether I wanted to get into mathematics or into computer science. It was not clear to me, I just got interested in these subjects.
BL: It seems uncommon to have such an inside track to the world of technical research at such a young age, like you had through your uncle.
MV: Yes, my uncle exposed me to computer science early, at least through interesting stories. He was a professor at a university, a researcher, and eventually he started a successful company.
BL: I imagine your uncle's influence then pushed your toward research?
MV: Yes, that is one thing. And of course being at one of these mathematics high schools also led me there. In high school we were always playing with computers, not just games, but we trying to configure them and hack them, figuring out how to write assembly code, things like that.
BL: You said you were a musician when you were a kid. That seems like a contrast to getting involved in math and computer science.
MV: Yes, that was only until I was about 12. I lived in Moscow, Russia for three years during that time, while my mom studied for her PhD at Moscow Conservatory. I played a lot while I was there. Around grade six it became clear: I was either going to be a musician and play the cello, or I was going to enter one of the specialized high schools and study mathematics or language or something else. My mom wanted me to be a musician, but I did not want to be a musician. My way out of that was to enter into one of these specialized high schools. If I could get into one of these high schools, then I wouldn't have to play the cello all the time.
BL: And your experience in high school solidified that.
MV: Yes, although around 1994, my mother moved to Canada and I left my high school. I did my last year of high school living in Vancouver, on Vancouver island when I was 17. That was the first time I had been to a western country and it was a big shock.
BL: What was the big shock about moving to Canada to finish high school?
MV: Well, I moved from Sofia to Vancouver Island, which is basically a small town. I had been working very hard at this specialized high school where everyone is very motivated and I moved to a place where people did not really have much of an academic focus.
BL: You went from the pressure cooker of your high school in a big city, into that sleepy island town environment. That does seem like it would be jarring.
MV: Yes, and I remember thinking it was strange that everyone was 16 and driving cars! I had never seen that before. That was not how it was in Bulgaria or Russia back in those days. Kids were not going to high school by car. It was interesting, everything was new. I spent a year on the island, our house was almost in the middle of the forest. I was there for one year, then we moved to to the city of Vancouver.
BL: Did you go to college right after that?
MV: Yes, I went to Simon Fraser because it was close to home. My mom had moved, we were all still trying to make it. My mother was working very hard. In fact, before I started college, for one year I was working at the Granville Market, which is a famous tourist destination. I carried boxes, non-stop every day for ten hours to earn money to pay the tuition. I remember, in five months I made exactly 5000 dollars. I did odd jobs in the summer. One summer I was a chocolate cook, I spent night shifts making cardboard pizza boxes, selling Cutco knives. It was a crazy time. We worked very hard to make it. My mother worked hard to set up and run a music school. Now it is quite successful, but of course in the first few years, everything was quite difficult.
BL: What was your college experience like?
MV: I went to college and my math was still very good. I was deciding whether or not I wanted to go into math, or if I wanted to get into computer science. My uncle, the researcher, he suggested that I read the Communications of the ACM. I read it in my first year of college and I did not understand any of it. I remember just thinking "oh my god, what is this?" I decided to go into computer science because I had been programming already.
BL: Did you have any experience with academic research as an undergrad?
MV: I did, in my second year of college. My college had an internship program and I applied and got an internship with BCTEL, which is now Telus. I remember talking to my boss for the first time and he told me it was 2000 dollars salary per month. I said "I get to work this job AND you're going to pay me?" He said "Yes, would you rather not get paid?". I had been lifting boxes and cooking chocolate for very little money, and I was thinking that I could do this job and make some money. I did that for four or five months, writing shell scripts and Perl CGI scripts for the web back then.
BL: After that you got involved with research?
MV: Not directly. I had a lot of projects going on all the time when I was in college. I was working on my own operating system, for automotive applications. Sometimes I didn't like taking my courses because they took time away from doing the projects that I wanted to work on. I went to one of my professors, in data mining, and I said that I did not want to take the course because it was taking time away from my other projects. He was amused, but said "well I guess that is your problem."
That next summer, I went and did an internship with my uncle's company and worked on implementing device drivers in his lab; this was s the company where I used to play games when I was a kid, back in Sofia.
I got back from that internship and I talked to one of my professors. I had gotten very good grades in his class and he asked me if I wanted to do some work on one of his research projects. I would read papers, write code to help the postdocs and PhD students, and I ended up working on mixed integer linear programming.
BL: Was grad school right after that?
MV: No, and in fact I remember thinking that I would never do a PhD because courses were taking so much time away from the projects that I wanted to be working on. I had no clue what the PhD was for.
After college, I went back to Sofia and got a job working on realtime systems in my uncle's company again. I worked for two more years in that company. In that two years we wrote a Java Virtual Machine for DSP processors. That was a pretty cool project. The main company was working on insurance software, but this was very interesting, we made boards and it was all supposed to be embedded and realtime.
I worked on that project for quite a while with a few other people, eventually porting the JVM to many processors, DSPs; ARM and a few others. To do that work I was reading a lot of papers at the time. I remember reading and understanding at this point some of what I was seeing, but then seeing other papers and not knowing what the hell they were talking about! In particular, I was implementing a JVM bytecode verifier. I remember seeing a paper about program analysis and lattice theory and just not knowing how to read it. I thought that what I was working on was interesting, but at that point, I saw that I needed a few years to increase my level; I had reached my level in this job. I had a lot of great mentors who were really great people --- Linux committers, gcc core developers --- and I learned a lot, but I felt that I needed more time to not just hack and write code, but also to do some thinking.
BL: Where did you go for grad school?
MV: I went to Cambridge. My reasoning was that I had this goal for my whole life that I wanted to go to one of these famous research labs that I learned about when I was younger, IBM Watson or Livermore. I figured that at Cambridge, the PhD is shorter. That way, I can finish quickly and get a job at one of these labs. That was my naive thinking on the way in to getting a PhD, I'd spend three to four years doing that and then be out of there and get a job at a research lab.
I started out and I was looking for a good research topic. In my first months, I was doing a lot of reading and trying to find a topic. I applied for an internship after my first year and one of the places I applied to was IBM Watson. I went there to work with David Bacon. I had a topic I was interested in already when I arrived. We worked on that and got a paper together that we submitted to ISMM and that was my first paper. David was an amazing technical mentor to me during that time that I was at IBM. During this time I also met lots of other great people. I met Eran Yehav while I was there and we ended up being very close friends and long-term collaborators down the line.
BL: It's pretty cool that you had always wanted to go and work at IBM Watson since you were a kid and then ten years later, there you were, working there.
MV: Yes, it was really amazing the first time I went there. When I arrived for my internship for the first time, I spent like 20 minutes outside the Hawthorne building just taking pictures. It was amazing!
And so I finished up my PhD and eventually got lots of nice job offers in academia and industry. One of them was from IBM, to work there at Watson, and I turned the other offers down because I had the job that I had always wanted. That year I got married, had a kid, and we moved to New York.
BL: Sounds like a pretty exciting year! Let's switch gears a little bit from the personal narrative and talk about technical stuff a bit. What do you think is the biggest open problem, capital O, capital P, in the PL community? What stands out to you?
MV: One of the biggest problems that we have today, in general, not just in PL, is managing the third wave of artificial intelligence systems. The first wave was mostly symbolic and based on logic, the second wave was all data driven, and the third wave is really about systems that can explain decisions and reason about causality. There have been Turing Awards for each of the first waves, for logic and verification, and for Deep Learning. I think it is a really important open problem to build systems that can solve problems and explain their decisions to some degree, at least. I think there are lots of practical issues building such a system, but also there need to be some fundamental theoretical breakthroughs for us to make progress toward something like "thinking systems" that are more human-like. I think this is one of the biggest problems in computer science.
BL: Yes and I have seen a turn in your recent work to topics that are closer to machine learning, especially with your work applying NLP techniques to programming, for instance.
MV: We have three main research interests in these areas. One is machine learning for programming, which Eran Yahav likes to call "PLP: programming language processing", analogously to NLP: Natural Language Processing. This problem domain requires reasoning at the intersection of symbolic and continuous reasoning, including new kinds of models that we've built for these problems. Another related area we work in is probabilistic programming, which also requires working at the intersection of symbolic and continuous reasoning. The third one is focused on safety for AI systems. All three of these are in some sense instances of the bigger problem that I just mentioned, the combination of symbolic and continuous reasoning.
BL: It seems like this shift to combining symbolic and continuous reasoning is a strong current in the PL community and more broadly in the CS community.
MV: I agree, and our recent results are in that direction. Last year we had a paper on training provably verifiable neural networks. This year, we have one on combining deep learning and logic; how do you do that?
BL: In the same vein, do you have a favorite result from the last decade of research?
MV: I really like the work by Armando [Solar-Lezama] and Ras [Bodik] on sketching. Specifically, the work on how to apply counter-example guided inductive reasoning to program synthesis. It was in ASPLOS '06. I like the identification of that connection, between counter-example guided reasoning and synthesis. I think this is a nice, clean result, one of my favorites.
I also really like the Fortress language that Guy Steele developed. It was the mathematical Fortran. I just liked the structure of the language, the type system. I liked that they were motivated by the HPC community and trying to make it easy to express mathematical problems cleanly. That was just a generally good idea there; it was like FORTRAN 2.0.
PL has many many great people that have done great work. Another favorite of mine is Eran Yahav's work on semantic code search from OOPSLA 2011. That work was a major precursor to a lot of work on Big Code throughout the community. David Bacon's metronome work, on realtime GC is another really beautiful result.
BL: Your work and your interests cover a very broad swathe of PL topics. How receptive do you find the PL community to new ideas? Are there things that you think the PL community should collectively be thinking about more?
MV: I think that the PL community has some really amazing technical tools. I think that the community wants to be precise and well-reasoned. That can be good and makes the PL community unique, but I think that this attitude can slow down the PL community a bit, making it in some cases less outward-looking, to other related fields where there is value in applying these methods.
There is clearly a positive and a negative to this tendency. There are powerful tools and general techniques produced by the PL community, which is great, but these can sometimes slow us down as a community by missing connections to other areas. As an example, you can see that many of the most influential papers in the area of PL and networking appeared in the systems conferences, not in the PL conferences. Much of what is going on in safety for AI systems is not happening in the PL community and instead is happening in the AI/ML conferences. Yet, the PL community may be better positioned to contribute to solving that problem. With a few small adjustments, I think the PL community can have a big impact across computer science.
One thing that I think we could do more of is to, instead of just applying PL tools in domains, to go into depth in an area outside of PL. I think that people should be looking to sit and study a subject in depth, to where you can connect areas fundamentally. I think it is important to be putting in this time, to where you don't just want to write a paper on something, but instead spend a lot of time learning things.
I also think that PL researchers should be releasing the thing things that they build. We spend a lot of cycles releasing systems that people can actually use. I think that the PL community should spend more time working on this, making things that are useful to others.