Computer Science M.S. Student at Cornell University, B.A. Math, B.A. CS cum laude
I am an M.S. student at Cornell University studying Computer Science, specifically algorithms and CS theory. I work with Professor Bobby Kleinberg on randomized algorithms for oblivious routing.
I completed my undergrad at Cornell in Math and CS. I am interested in networks, graph algorithms, randomized algorithms, and cryptography (and other stuff too!). Here is a link to my resume.
Outside of schoolwork, I am a rock climbing, caving, and tree climbing instructor for Cornell Outdoor Education! I also guided Outdoor Odyssey trips for incoming freshmen.
Email: sylvan.martin@gmail.com
Contents
Here are some of the things I’ve worked on either in the past, or am working on currently! Click on the name of any project to be taken to the GitHub site.
There is a dearth of machine learning libraries for Rust, since it’s such a new language. But, I think that’s a missed opportunity! Rust is great! So, for my CS practicum course at Cornell, my group (me, Owen Wetherbee, and Ethan Ma) created a machine learning library written in pure Rust, containing tools to do deep learning (neural networks, convolutional neural networks, and the training thereof) and singular value decomposition along with its applications (PCA, image compression, regression/planes of best fit). Here is our writeup that we submitted for the class.
This is a Rust application that uses Shamir Secret Sharing to securely and redundantly do cloud storage when there is a lack of trust among parties. The intended audience would be a company or large organization with sensitive information that doesn’t need to be regularly accessed (think a hospital’s patient data, or the addresses of clients). If there is a single password or key that can access this information, that makes for a single point of failure. This splits that responsibility among multiple individuals, so that in order to access the data, some fraction of those individuals must agree. The Hemlock app is my implementation of this, and makes calls to a cloud database to store the secrets, users, and keys. The linked project is just a rust library, but I also began working on a GUI, found here.
MatrixKit
and NeuralKit
are two libraries I developed in tandem with the goal of creating a simple machine learning
library for Swift. Apple has plenty of (more functional) machine learning libraries you can use right from Xcode,
but in my opinion they were not beginner friendly and did not have very intuitive ways to actually craft and train
your own neural network. So, I created my own! Also, I figured that writing a machine learning library from scratch would
teach me a lot more about machine learning than just using other libraries or reading about it. So, NeuralKit
does not use any external libraries other than MatrixKit
, which I also wrote.
MatrixKit
is an abstract linear algebra library. By abstract, I mean that you’ve got this cool Matrix
type which
has elements that can be entries in any arbitrary ring! If entries are in a field, this is detected and
you can compute matrix inverses and the like.
There was an interesting problem I had about computing row-echelon form. When the matrix only has entries in a ring and we can’t do division, we ought to be able to do REF! The issue I run into is that without being able to divide to “re-normalize” things, entries often grow out of control and the matrix blows up.
There are many more but these are just some of my favorites.
As I’m working on new projects, there are certain problems I run into that I realize I will need to re-solve in later projects, or that other people will run into as well. For a lot of these problems, there exists a good online tutorial already written. But, for some topics, I could not find a (in my opinion) well-written tutorial online that actually answered the questions I had. So, I’m writing tutorials and explainers for others and mainly for myself! If you see a typo feel free to let me know.
And here is where you can see cool rock climbing stuff!