profile pic

Nick C

- Research Program Mentor

MS Master of Science


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

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

Interested in working with expert mentors like Nick?

Apply now