-
Notifications
You must be signed in to change notification settings - Fork 16
/
cover-letter.tex
166 lines (140 loc) · 7.75 KB
/
cover-letter.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
% \documentclass{letter}
% \usepackage{url}
% \usepackage{etoolbox}
% \usepackage[noheadfoot,margin=1.5in]{geometry}
% \pagestyle{empty}
% \newtoggle{teaching}
% \newtoggle{research}
%%% Parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \toggletrue{teaching}
% \toggletrue{research}
% \def\salutation{Dear Sir or Madam}
% \def\thereaddress{Search Committee \\ 123 Search Committee Lane \\ El
% Frijoles, TX 12345}
% \def\position{the position of Head Frobnosticator}
% \def\foundon{I learned about through a posting on the CRA website}
% \def\opportunity{I am excited by the opportunity to\dots}
% \def\placespecific{On a personal note\dots}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\ronly}[1]{\ifboolexpr{togl{research}}{#1}{}}
\newcommand{\tonly}[1]{\ifboolexpr{togl{teaching}}{#1}{}}
\widowpenalty 10000
\signature{Brent A. Yorgey}
\address{Brent A. Yorgey \\ Department of Computer Science \\ Williams
College \\ 47 Lab Campus Drive, TPL
314 \\ Williamstown, MA 01267}
\begin{document}
\begin{letter}{\thereaddress}
\opening{\salutation:}
I am writing to apply for \position\foundon. \opportunity
Broadly speaking, both my research and teaching are about connecting
theory and practice: I love developing insights into beautiful
mathematical abstractions, applying them to get real things done
powerfully, elegantly, and efficiently, and communicating them in
relevant, engaging ways. \ronly{Specifically, my research is in two
main areas: the first is in the intersection of combinatorics and
programming languages, turning abstract combinatorial results into
practical programming tools; the second is the design and
implementation of domain-specific languages (DSLs). }I am
\ronly{also }passionate about the centrality of community to research
and teaching---collaboration with students and colleagues is one of my
main sources of joy as a computer scientist.
\ifboolexpr{ togl{research} }{
My dissertation focused on the theory of \emph{combinatorial
species}---a unified framework for describing and analyzing a wide
range of combinatorial structures---and specifically on bridging the
gap between the theory's origins in pure combinatorics and its
application to the theory and practice of programming.
Combinatorial species have the potential to revolutionize the way we
reason about and work with data structures, leading to increased
expressivity and precision. \ifboolexpr{togl{teaching}}{My research
statement contains additional details about the work carried out
in my dissertation and my plans for future work.}{Species can
unify ``labelled'' structures (such as arrays and finite maps)
with more traditional ``algebraic'' types (such as lists and
binary trees) under the same framework; at the same time, they
provide the ability to reason about memory allocation and layout,
giving an ``end-to-end'' framework that allows reasoning about
everything from high-level properties of data structures to
practical implementation issues. There is plenty left to explore,
and I am excited to continue the work begun in my
dissertation---for example, investigating the use of species to
work with \emph{symmetric} data structures such as bags and
cycles, or how the closely related theory of \emph{generating
functions} can be interpreted computationally to encompass a
wide range of algorithms (serialization, deserialization,
enumeration, random generation\dots) over data structures.}
For the past six years I have also been developing a
domain-specific language, embedded in Haskell, for describing vector
graphics (\url{http://projects.haskell.org/diagrams/}). My focus
has been on discovering fundamental abstractions through careful
domain analysis, resulting in an expressive, powerful
language. \ifboolexpr{togl{teaching}}{I have many ideas for future
projects in this area---many of which are particularly conducive
to undergraduate involvement---described in more detail in my
research statement.}{For example, diagrams are represented using a
novel tree structure based on the theory of monoids and monoid
actions, enabling many high-level operations on diagrams such as
juxtaposition, finding boundary points, and inclusion testing. I
have ideas for many more projects in a similar vein, including:
developing good abstractions and language constructs for animation
and interactivity; building user interfaces offering dual,
editable, bidirectionally connected views of code and graphical
output; designing and implementing ``natural'' DSLs for
identifying subparts of a diagram (\emph{e.g.} ``the third red
triangle''); and building tools to automatically create ``language
levels'' for complex embedded DSLs by selective suppression of
polymorphism.} More generally, I am also interested in applying
techniques of domain analysis and DSL design to other areas of
computer science, in collaboration with researchers specializing in
those domains.
} % research
{}
\tonly{
Teaching is a way of life for me: it is a central and inextricable
part of my research and creative process. I enjoy writing blog posts
and papers, giving talks, and mentoring, in addition to designing
and teaching courses. I care deeply about my students as whole
persons, and work to make my courses into spaces where they feel
welcomed and challenged. I am also constantly in search of new and
creative ways to communicate ideas effectively. I particularly love
taking abstract, beautiful mathematical ideas and finding intuitive
ways to explain them, helping students make connections between
topics. In the process, I usually end up with better understanding
and intuition myself, and am inspired to explore new and different
questions in my research.
As an example of some of the above themes, at the University of
Pennsylvania I designed and taught a full-credit undergraduate
course entitled ``The Art of Recursion'', which introduced
functional programming in Haskell, and explored such topics as
recursion and induction, the lambda calculus, tail call elimination,
lazy infinite data structures, and fixpoint theory, among others.
This semester I am teaching a similar course at Williams College,
where I am a visitor. Many of these topics were not otherwise
covered in the undergraduate curricula at Penn or Williams, so this
has been a great opportunity for me to make significant
contributions to undergraduate education at both institutions.
Besides being beautiful and mind-expanding, such topics are
increasingly relevant given industry trends towards functional
programming, as also reflected in the inclusion of functional
programming as a core topic in the new ACM curriculum guidelines.
The course is structured in an unusual way, combining traditional
lectures with 75-minute weekly ``conferences'' set aside for student
presentations of problem set solutions. The goal is to engage
multiple modes of learning, and to foster student collaboration and
ownership of the course material. The course received high ratings
and rave reviews from students at Penn, who described it in terms
like ``best course at Penn so far'', ``never have I seen a class so
engaged'', ``this class taught me new ways to think'', and praised
my teaching as ``stimulating'' and ``hands-down the best instructor
I've had in my four years at Penn''.
} % tonly
\placespecific
I recently defended my dissertation, completed under the supervision
of Dr.\ Stephanie Weirich, and officially received my PhD in December
2014. I can be reached by email at \textsf{[email protected]} or by
phone at \textsf{215 350 4532}.
Thank you for your consideration. I look forward to hearing from you.
\closing{Sincerely,}
\end{letter}
\end{document}