Microsoft Research Blog

Python (programming language)

  1. Evaluating Graph Vulnerability and Robustness using TIGER 

    October 25, 2021

    Network robustness plays a crucial role in our understanding of complex interconnected systems such as transportation, communication, and computer networks. While significant research has been conducted in the area of network robustness, no comprehensive open-source toolbox currently exists to assist researchers and practitioners in this…

  2. TeachMyAgent: a Benchmark for Automatic Curriculum Learning in Deep RL 

    July 17, 2021 | Clément Romac, Rémy Portelas, Katja Hofmann, and Pierre-Yves Oudeyer

    Training autonomous agents able to generalize to multiple tasks is a key target of Deep Reinforcement Learning (DRL) research. In parallel to improving DRL algorithms themselves, Automatic Curriculum Learning (ACL) study how teacher algorithms can train DRL agents more efficiently by adapting task selection to…

  3. A Modern Compiler for the French Tax Code 

    January 25, 2021 | Denis Merigoux, Raphaël Monat, and Jonathan Protzenko

    In France, income tax is computed from taxpayers' individual returns, using an algorithm that is authored, designed and maintained by the French Public Finances Directorate (DGFiP). This algorithm relies on a legacy custom language and compiler originally designed in 1990, which unlike French wine, did…

  4. Typilus: Neural Type Hints 

    June 11, 2020 | Miltos Allamanis, Earl T. Barr, Soline Ducousso, and Zheng Gao

    Type inference over partial contexts in dynamically typed languages is challenging. In this work, we present a graph neural network model that predicts types by probabilistically reasoning over a program’s structure, names, and patterns. The network uses deep similarity learning to learn a TypeSpace —…

  5. IntelliCode Compose: Code Generation Using Transformer 

    May 15, 2020 | Alexey Svyatkovskiy, Shao Kun Deng, Shengyu Fu, and Neel Sundaresan

    In software development through integrated development environments (IDEs), code completion is one of the most widely used features. Nevertheless, majority of integrated development environments only support completion of methods and APIs, or arguments. In this paper, we introduce IntelliCode Compose - a general-purpose multilingual code…

  6. CodeSearchNet Challenge: Evaluating the State of Semantic Code Search. 

    September 20, 2019

    Semantic code search is the task of retrieving relevant code given a natural language query. While related to other information retrieval tasks, it requires bridging the gap between the language used in code (often abbreviated and highly technical) and natural language more suitable to describe…

  7. Guigle: a GUI search engine for Android apps 

    May 24, 2019

    The process of developing a mobile application typically starts with the ideation and conceptualization of its user interface. This concept is then translated into a set of mock-ups to help determine how well the user interface embodies the intended features of the app. After the…

  8. Deep learning type inference 

    October 25, 2018 | Vincent J. Hellendoorn, Christian Bird, Earl T. Barr, and Miltos Allamanis

    Dynamically typed languages such as JavaScript and Python are increasingly popular, yet static typing has not been totally eclipsed: Python now supports type annotations and languages like TypeScript offer a middle-ground for JavaScript: a strict superset of JavaScript, to which it transpiles, coupled with a…

  9. SOCK: rapid task provisioning with serverless-optimized containers 

    July 10, 2018

    Serverless computing promises to provide applications with cost savings and extreme elasticity. Unfortunately, slow application and container initialization can hurt common-case latency on serverless platforms. In this work, we analyze Linux container primitives, identifying scalability bottlenecks related to storage and network isolation. We also analyze…

  10. In-RDBMS hardware acceleration of advanced analytics 

    June 30, 2018

    The data revolution is fueled by advances in machine learning, databases, and hardware design. Programmable accelerators are making their way into each of these areas independently. As such, there is a void of solutions that enables hardware acceleration at the intersection of these disjoint fields.…

  11. Pipsqueak: Lean Lambdas with Large Libraries 

    July 17, 2017

    Microservices are usually fast to deploy because each microservice is small, and thus each can be installed and started quickly. Unfortunately, lean microservices that depend on large libraries will start slowly and harm elasticity. In this paper, we explore the challenges of lean microservices that…