profile picture

Nick C

- Research Program Mentor

MS at University of Chicago

Expertise

Programming, Computer Science, Machine Learning, Android App Development, Proof Assistants

Bio

I received a Master's in Computer Science from the University of Chicago, researching the future of programming languages and proof assistants. I have also taken graduate level classes in machine learning, and did an undergrad thesis in robotics at UT Austin. I previously worked on the Facebook Android team for two years. In my free time, I like watching TV, playing video games, and playing the game Go. I also have off and on aspirations to be a writer (not holding my breath on this one). I think I will be a good mentor thanks to my experience as a teaching assistant.

Project ideas

Project ideas are meant to help inspire student thinking about their own project. Students are in the driver seat of their research and are free to use any or none of the ideas shared by their mentors.

Machine Learning for Type Checking

Programming languages such as Haskell and OCaml have inferential type systems that can determine the type of an expression without requiring the type to be specified. The type of an expression tells us a lot about its meaning, so training a machine-learning model to determine the type of an expression could be a valuable step toward developing an AI that can read and write programs. Furthermore, I think this could be very useful as a component of an AI that is used to prove programs correct - proof systems generally make heavy use of type-checking, but type-checking can be slow, so a fast AI model that guesses whether or not a proof type-checks would be really important for an automated prover.

Continuous Go Mobile Game

Go is an ancient Chinese board game - like tic tac toe or reversi, players take turns placing pieces on an N x N grid. I think it would be interesting to make a "continuous" version, where you can play a circle (i.e. a piece) at any arbitrary position within a larger circle (i.e. the board), so that the pieces may partially overlap to varying degrees. This variant of the game could be more casual and faster paced, appealing to many mobile gamers, while also offering a high level of strategic depth for strategy enthusiasts who want a way to pass time on their phones. Of course, this is just one idea for a mobile game - the possibilities are limitless.

Structure Editor for Javascript

Conventional text-based programming permits syntax errors, which can sometimes be annoyingly hard to detect. Structure editors such as Scratch prevent syntax errors by ensuring that all edits preserve program validity. A structure editor for javascript might encode javascript programs as JSON objects, rather than as .js text files, and then would show the programmer a GUI that they could use to view and edit the code in a manner similar to regular javascript, but with more potential for visualization and without the possibility of introducing syntax errors.

Coding skills

Python, Java, Scheme, Haskell, OCaml, Elm, Perl, some knowledge of front-end web, C++, Ruby

Teaching experience

I have been a teaching assistant for three quarters as part of my PhD program. I help students work through homework problems and their class projects.

Credentials

Work experience

Facebook (2013 - 2015)
Software Engineer

Education

University of Texas Austin (UT Austin)
BS Bachelor of Science (2012)
Computer Science / Mathematics
University of Chicago
MS Master of Science
Computer Science - Programming Languages

Interested in working with expert mentors like Nick?

Apply now