Statement of Purpose GEneric
Statement of Purpose GEneric
Few areas of Computer Science intrigue me as much as the study of Languages and Compilers. Over the
last few years of my professional work experience at CompanyX, I realized that the most stimulating and
fulfilling projects I had were related to language parsing where I built multiple Domain Specific
Languages for big-data analytics and working on aspects of compiler optimization, such as
understanding CPU register allocations, optimizing the JVM code generation and understanding the
internals of JIT compiler through a performance profiler that I built from the ground up. Unfortunately,
this is an area that I did not focus deeply during my initial undergraduate education.
Theory of Computers, a course I took in spring 2006 had a profound impact on my undergraduate
career. Discrete math, automata and languages gave me an appreciation of computer science that
strengthened my relationship with formal education and changed my approach towards course work,
resulting in significantly improved academic performance in upper-level courses. I attribute academic
immaturity and lack of following proven pedagogical practices for my initial poor performance in
academic course work.
theory of computers
3.45
3.44
3.38
3.11
2.37
1.81
1.97
1.45
My first application of academic course work in a professional situation was as a part-time student
researcher at Some States Plant Genomics Group, where I built a Domain Specific Language for
expressing genome comparison functions. This research work led to a publication (REDACTED_PUB ..)
After graduating, I started working at CompanyXs Product1 team where performance analysis became
my passion. My contributions in significantly improving performance of Disk I/O operations in Product1
led to a XYZ ABC Award a prestigious employee award for significant contribution to the business.
My methodology and focused approach to performance analysis led to my current passion compilers
and program analysis.
I accepted a new challenge at CompanyX Cloud in June 2011, as the burgeoning cloud service made
steady gains against competition. The challenge was to monitor and improve performance of the
Frontend and rendering platform the final door before millions of customers issuing search queries
received their search result.
This challenge was not only of much a larger magnitude, but different from my previous experience in
analyzing and improving performance of ahead-of-time compiled programming languages.
The CompanyX JVM Managed Language environment had a couple of new players in the performance
analysis and improvement game the Garbage Collector and the Just-in-time Compiler (JIT).
Another crucial course at Some State that I regularly find myself referencing is Computer Organization
and Architecture, especially for managed code performance investigations. Early on in my performance
analysis career I noticed the strong effect of data cache misses that were prevalent in managed code,
mostly driven by data structure choices (lists overs arrays, etc.) made by engineers, often not
understanding the tradeoffs they were making. Furthermore, I was fortunate enough to see concepts
like branch prediction and their second order effects like pipeline stalls in our lab course work that
prepared me for the challenges of debugging them in my professional work.
The most ironic (yet delightful) part of my experience of going through college may have been the
number of times I was surprised by the novelty and usefulness of concepts and algorithms that at first
glance I considered ordinary or uninteresting case in point is the computationally hard graph coloring
problem, an application of which is cpu register allocation performed by a compiler.
Understanding the problems computational complexity (NP-complete) helped me devise a strategy of
significantly reducing startup times of Cloud services by splitting methods with larger number of local
variable into multiple methods. The ability to connect a business problem (startup time) with learnings
from academic pursuits has been the most rewarding experience for me.
I find myself now looking at a new goal. A goal that is in harmony with the lifelong learning mantra I
employ in my professional life where I often tap into my academic experience. The programs blend of
academia and industry is an important factor in my decision to choose the University of XYZ Masters
program.
Finally, a large part of my new academic goal involves learning about Programming Language theory and
implementation. I have been perusing the freely available course material on Programming Languages
by Some One from which Ive learnt and explored a lot about my specific interests in Type Theory and
programming languages in general. Moreover, research being done at the Some group with some typechecking in particular is an area Im very inclined to explore academically and professionally.