- Research Program Mentor
MS Master of Science
Programming, Computer Science, Machine Learning, Android App Development, Proof Assistants
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.