Greg Little's Classroom

Director of Studies


I help students who want to learn Computer Science. This can be broadly broken down into two parts. First, the is the part of Computer Science that deals with the theoretical questions like computability and complexity, and this can be thought of as a branch of mathematics. On the other hand, many students want to build computer programs that actually solve real-world problems, and this is a branch of engineering. Many students find their motivation more on one aspect than the other, but in practice it’s a good idea to study both aspects in parallel, at least to begin with.

A great resource for learning about the more theoretical aspects of computer science is the book Computational Theory by Michael Simpson. In terms of more practical aspects, I would recommend starting by learning Javascript, which is the language that runs in all internet browsers. I’ve written a lightweight Javascript environment which you can use here.

About me

My background is mainly in game programming, although I’ve drifted towards computational theory. My PhD title was “Programming with Humans’’, which I completed in 2011. Since then I’ve worked at Upwork as a researcher and also worked on a number of side projects which are mainly viewable on my Github page.



Berkeley, California


Primary Subjects:

  • Computer Science

  • Programming Languages

  • Machine Learning


  • BS (2005) Computer Science, Arizona State University

  • PhD (2011) Computer Science, Massachusetts Institute of Technology