John DeNero is the Giancarlo Teaching Fellow in the UC Berkeley EECS department. He joined the Cal faculty in 2014 to focus on undergraduate education in computer science and data science. He teaches and co-develops two of the largest courses on campus: introductory computer science for majors and introductory data science. He is the author of Composing Programs and co-author of Computational and Inferential Thinking, two online textbooks. His research focuses both on natural language processing and computer science education. He received his Masters in Philosophy from Stanford University and his PhD in Electrical Engineering and Computer Science from UC Berkeley in 2010. Prior to becoming a professor, John was a senior research scientist at Google working primarily on Google Translate and natural language processing.


  • 2010, Ph.D., Computer Science, University of California, Berkeley
  • 2002, M.A., Philosophy, Stanford University
  • 2001, B.S., Mathematical & Computational Science and Symbolic Systems, Stanford University

Selected Publications

  • A. Adhikari, J. DeNero, and M. Jordan, "Interleaving computational and inferential thinking: Data science for undergraduates at Berkeley," {Harvard Data Science Review, vol. 2, pp. 1-24, Sep. 2021.

Awards, Memberships and Fellowships