Microsoft Research New York City seeks outstanding applicants for 2-year postdoctoral researcher positions. We welcome applicants with a strong academic record in one of the following areas:
- Computational social science
- Online experimental social science
- Algorithmic economics and market design
- Machine learning
We will also consider applicants in other focus areas of the lab, including information retrieval, and behavioral & empirical economics. Additional information about these areas is included below. Please submit all application materials by January 11, 2013 for full consideration. Instructions are here.
With an increasing amount of data on every aspect of our daily activities — from what we buy, to where we travel, to who we know — we are able to measure human behavior with precision largely thought impossible just a decade ago. Lying at the intersection of computer science, statistics and the social sciences, the emerging field of computational social science uses large-scale demographic, behavioral and network data to address longstanding questions in sociology, economics, politics, and beyond. We seek postdoc applicants with a diverse set of skills, including experience with large-scale data, scalable statistical and machine learning methods, and knowledge of a substantive social science field, such as sociology, economics, psychology, political science, or marketing.
ONLINE EXPERIMENTAL SOCIAL SCIENCE
Online experimental social science involves using the web, including crowdsourcing platforms such as Amazon’s Mechanical Turk, to study human behavior in “virtual lab” environments. Among other topics, virtual labs have been used to study the relationship between financial incentives and performance, the honesty of online workers, advertising impact as a function of exposure time, the implicit cost of “bad ads,” the testing of graphical user interfaces eliciting probabilistic information and also the relationship between network structure and social dynamics, related to social phenomena such as cooperation, learning, and collective problem solving. We seek postdoc applicants with a diverse mix of skills, including awareness of the theoretical and experimental social science literature, and experience with experimental design, as well as demonstrated statistical modeling and programming expertise. Specific experience running experiments on Amazon’s Mechanical Turk or related crowdsourcing websites, as well as managing virtual participant pools is also desirable, as is evidence of UI design ability.
ALGORITHMIC ECONOMICS AND MARKET DESIGN
Market design, the engineering arm of economics, benefits from an understanding of computation: complexity, algorithms, engineering practice, and data. Conversely, computer science in a networked world benefits from a solid foundation in economics: incentives and game theory. Scientists with hybrid expertise are crucial as social systems of all types move to electronic platforms, as people increasingly rely on programmatic trading aids, as market designers rely more on equilibrium simulations, and as optimization and machine learning algorithms become part of the inner loop of social and economic mechanisms. We seek applicants who embody a diverse mix of skills, including a background in computer science (e.g., artificial intelligence or theory) or related field, and knowledge of the theoretical and experimental economics literature. Experience building prototype systems, and a comfort level with modern programming paradigms (e.g., web programming and map-reduce) are also desirable.
Machine learning is the discipline of designing efficient algorithms for making accurate predictions and optimal decisions in the face of uncertainty. It combines tools and techniques from computer science, signal processing, statistics and optimization. Microsoft offers a unique opportunity to work with extremely diverse data sources, both big and small, while also offering a very stimulating environment for cutting-edge theoretical research. We seek postdoc applicants who have demonstrated ability to do independent research, have a strong publication record at top research venues and thrive in a multidisciplinary environment.






How high can high-level programming go?
Our first prototype of Predictalot was written mainly in Mathematica with a rudimentary web front end that Dan Reeves put together (with editable source code embedded right on the page via etherpad!). It proved the concept but was ugly and horribly slow.
Dan and I built a second prototype in PHP. It was even uglier but about twice as fast and somewhat useable on a small scale (at least by user willing/able to formulate their own propositions in PHP). Yet it still wasn’t good enough to serve thousands of users accustomed to simplicity and speed.
The final live version of Predictalot was not only pleasing to the eye — thanks to Sudar, Navneet, and Tom — but pleasingly fast, due almost entirely to the heroic efforts of Mridul M who wrote a mini PHP parser inside of java and baked in a number of datbase and caching optimizations.
It seems that high-level programming languages haven’t climbed high enough. To field a fairly constrained web app that looks good and works well, we benefit greatly from having at least three specialists, for the app front end, the app back end, and the platform back end (apache, security, etc.).
Here’s a challenge to the programming language community: anything I can whip up in Mathematica I should be able to run at web scale. Math majors should be able to create Predictalot. Dan and I can mock up the basic idea of Predictalot but it still takes tremendous talent, time, and effort to turn it into a professional looking and well behaved system.
The core market math of Predictalot — a combinatorial version of Hanson’s LMSR market maker — involves summing thousands of ex terms. Here we are in the second decade of the new millenium and in order for a sum of exponentials to execute quickly and without numeric overflow, we had to work out a transformation to conduct all our summations in log space. In other words, programming still requires me to think about how my machine represents my number. That shouldn’t qualify as “high level” thinking in 2010.
I realize I may be naively asking too much. Solving the challenge fully is AI-complete. Still, while we’re making impressive strides in artificial intelligence, programming feels much the same today as it did twenty years ago. It still requires learning specialized tricks, arcane domain knowledge, and optimizations honed only over years of experience, and the most computationally intensive applications still require that extra compilation step (i.e., it’s still often necessary to use C or Java over PHP, Perl, Python, or Ruby).
Some developments hardly seem like progress. Straightforward HTML markup like border=2 has given way to unweildy CSS like style=”border:2px solid black”. In some ways the need for specialized domain knowledge has gone up, not down.
Visual programming is an oft-tried, though so far largely unsuccessful way to lower the barrier to programming. Pipes was a great effort, but YQL proved more useful and popular. Google just announced new visual developer tools for Android in an attempt to bring mobile app creation to the masses. Content management systems are getting better and broader every day, allowing more and more complex websites to be built with less time touching source code.
I look forward to the day that computational thinking can suffice to create the majority of computational objects. I suspect that day is still fifteen to twenty years away.