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
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.