  In this paper, we explore the feasibility of finding algorithm
implementations from code. Successfully matching code and algorithms can help
understand unknown code, provide reference implementations, and automatically
collect data for learning-based program synthesis. To achieve the goal, we
designed a new language named p-language to specify the algorithms and a static
analyzer for the p-language to automatically extract control flow, math, and
natural language information from the algorithm descriptions. We embedded the
output of p-language (p-code) and source code in a common vector space using
self-supervised machine learning methods to match algorithm with code without
any manual annotation. We developed a tool named Beryllium. It takes pseudo
code as a query and returns a list of ranked code snippets that likely match
the algorithm query. Our evaluation on Stony Brook Algorithm Repository and
popular GitHub projects show that Beryllium significantly outperformed the
state-of-the-art code search tools in both C and Java. Specifically, for 98.5%,
93.8%, and 66.2% queries, we found the algorithm implementations in the top 25,
10, and 1 ranked list, respectively. Given 87 algorithm queries, we found
implementations for 74 algorithms in the GitHub projects where we did not know
the algorithms before.
