L is for Languages, compilers, and such.
field we’re involved in so very much.
Why? —naive people may suddenly ask;
‘Cause notation’s oft key to solutions of tasks.
As Benjamin Whorf once said
he did find,
Language does shape the thought and the mind.
We have been heavily involved in languages
and compilers from the start. The PL/C compiler in the early 1970s; the
first text on compiler construction; Tim Teitelbaum’s Cornell Program
Synthesizer; the language Russell, semantics (e.g. interference freedom,
the basis for proving parallel program correct, was developed here) —these
were influential projects in the 1970s and early 1980s.
Compilers themselves have remained an area of intense work here. For
example, Keshav Pingali has had a long an influential project on compiling
for parallel computers, which has expanded to deal with many more issues
in compiling. Radu Rugina also works on compiling and program analysis
to make software more robust, secure, and efficient.
Much of the current language work is inspired by security issues. Besides
the language-design work in Andrew Meyers group, there is emphasis on
analysis and synthesis methods that provide mechanical means for ensuring
that a program and its execution will satisfy certain properties —a
field called “language-based security”. Dexter Kozen works
on various aspects of proof-carrying code, and Fred Schneider, chief
scientist on the multi-university NSF grant TRUST, and his students pioneered
the use of in-lined reference monitors to check for violations of security
Like other work in CS at Cornell, this work is tied to principles and
often addresses problems that transcend technology or specific engineering
issues. “Think first, build second” is a succinct characterization
of our primary modus operandi. Perhaps that is why Cornell has been a
leader in this field.