Christopher Erwin

Hi there. A little bit about me: I've been writing code since I was 15, back in 2009. In May of 2017 I graduated from San Francisco State University with a B.S. in Computer Science. I also worked at the university in the Fall 2016 and Spring 2017 semesters teaching CSC 412, a lab class which introduced students to web development. In total, I instructed 122 students in three classes.

When not writing code, I enjoy photography, cooking, keeping up with the latest machine learning research, and writing.

I was 15 when I first made the decision to learn how to develop software. The directive I set myself was to learn how computers do all these crazy things they do. How can Excel just "make a graph" when you press that button? What happens when a scientist makes a "computational model" and generates all those interesting visualizations? Questions like these drove a decade of inquiry and education. C holds a special place in my heart because it was my first language.

C is sometimes unforgiving and it has a steep learning curve, but it immediately made teenage-me aware of so many complex and fascinating concepts. Pointers -- the bane of so many new-commers -- fell on my plate in my first week. Instead of a brick wall, they represented an awesome first departure from the familiar. Variables and types have obvious analogues with comparisons to every-day ideas, but pointers and the concept of indirection are quite foreign. C is a rich, dense, bare-bones language, and its insistance on manual memory management forced me to learn a great many things which were in line with my aforementioned directive. C's quirks were difficult to navigate, but they taught a self-reliance and attention to detail which many students seem to lack.

Later I found that C++, though messier, adds so many desirable features which C lacks that it can't be ignored. As such, C++ is my language of choice when performance is an issue. However, when hacking together a quick prototype for personal projects I tend to choose Python. The vastness of easily accessable third party code makes it an easy choice for testing new ideas.

My interest in data analysis and machine learning developed later. In the summer of 2016 I took a class on the "Theory of Computing" at SFSU. Because the summer is so short and I was taking another class as well, it was an intense crash course in automata, the theory behind languages, and complexity theory. The mathematical formality so conspicuously absent in previous courses was fascinating. For the first time, material from the standard purely theoretical math classes and my mostly hands-on experience in software development was connected and integrated into a beatiful new conceptual world.

After that summer epiphany, I signed up for a graduate course which offered an overview of pattern analysis and machine intelligence. The final project for that course was a literature review of a subject related to the course's objectives. My reading was a little scattered scattered at first, exploring graph embedding, optimization problems, and image completion. That eventually led me to the problem of non-linear dimensionality reduction. I prepared a 24 page review of kernel-based dimensionality reduction methods. The next semester I registered for another elective, Biomedical Imaging and Analysis. This took me deeper into the realm of image analysis. In preparation, I learned a great deal about image registration and segmentation algorithms. My hope is to continue with this trajectory in a professional setting.

Skills

Projects

Contact