{"id":{"repo_id":"iastate","oai_identifier":"oai:dr.lib.iastate.edu:20.500.12876/31911"},"canonical_url":"https://search.dev.ndltd.org/etd/iastate/oai:dr.lib.iastate.edu:20.500.12876/31911","repository":{"repo_id":"iastate","name":"Iowa State University","base_url":"https://dr.lib.iastate.edu/server/oai/request"},"display":{"title":"Identify algorithms from code","abstract":"<p>Choosing an algorithm to use can depend on a variety of factors such as runtime, space, and</p> <p>problem requirements. Many algorithms already have tested implementations in open source code.</p> <p>Reusing or interchanging algorithms can help save development time and improve the performance</p> <p>of applications.</p> <p>Existing code search techniques often rely heavily on natural language components of the code.</p> <p>Simple techniques, such as Grep, are sensitive to the naming choices and conventions in code. Grep</p> <p>in particular do not precisely find implementations, outputting single lines. Grep does not rank</p> <p>the result, and is subject to lots of noise.</p> <p>We develop a technique to search for algorithms in code using existing pseudo code as a query.</p> <p>We leverage the structural, mathematical and natural language components of pseudo code to find</p> <p>its corresponding implementation in code. This approach defines a simple language to represent</p> <p>pseudo code with atoms that include different features of the algorithm. We then use these features</p> <p>to search code using a bounding box and extract the code snippet that contains the functionality</p> <p>of the pseudo code.</p> <p>We collected 19 different repositories in both C and Java and searched for 27 different algorithms.</p> <p>Using our technique we found over 60 algorithm implementations in roughly 1.8 million lines of</p> <p>code. We also conduct a comparison of our tool against a search implementation using a popular</p> <p>enterprise search platform Apache Solr and show our approach can find more algorithms with high</p> <p>rank.</p>","abstract_html":"&lt;p&gt;Choosing an algorithm to use can depend on a variety of factors such as runtime, space, and&lt;/p&gt; &lt;p&gt;problem requirements. Many algorithms already have tested implementations in open source code.&lt;/p&gt; &lt;p&gt;Reusing or interchanging algorithms can help save development time and improve the performance&lt;/p&gt; &lt;p&gt;of applications.&lt;/p&gt; &lt;p&gt;Existing code search techniques often rely heavily on natural language components of the code.&lt;/p&gt; &lt;p&gt;Simple techniques, such as Grep, are sensitive to the naming choices and conventions in code. Grep&lt;/p&gt; &lt;p&gt;in particular do not precisely find implementations, outputting single lines. Grep does not rank&lt;/p&gt; &lt;p&gt;the result, and is subject to lots of noise.&lt;/p&gt; &lt;p&gt;We develop a technique to search for algorithms in code using existing pseudo code as a query.&lt;/p&gt; &lt;p&gt;We leverage the structural, mathematical and natural language components of pseudo code to find&lt;/p&gt; &lt;p&gt;its corresponding implementation in code. This approach defines a simple language to represent&lt;/p&gt; &lt;p&gt;pseudo code with atoms that include different features of the algorithm. We then use these features&lt;/p&gt; &lt;p&gt;to search code using a bounding box and extract the code snippet that contains the functionality&lt;/p&gt; &lt;p&gt;of the pseudo code.&lt;/p&gt; &lt;p&gt;We collected 19 different repositories in both C and Java and searched for 27 different algorithms.&lt;/p&gt; &lt;p&gt;Using our technique we found over 60 algorithm implementations in roughly 1.8 million lines of&lt;/p&gt; &lt;p&gt;code. We also conduct a comparison of our tool against a search implementation using a popular&lt;/p&gt; &lt;p&gt;enterprise search platform Apache Solr and show our approach can find more algorithms with high&lt;/p&gt; &lt;p&gt;rank.&lt;/p&gt;","abstract_has_math":false,"creators":["Leslie, Stroh"],"institution":null,"degree_name":"Master of Science","degree_level":"thesis","degree_discipline":"Computer Science","degree_department":"Department of Computer Science","school":null,"contributors":[],"advisors":["Wei . Le"],"committee_chairs":[],"committee_members":[],"year":2019,"date_issued":"2019-01-01","date_published":"2019-01-01","updated_at":"2026-07-24T02:38:12Z","subjects":[],"languages":["en"],"rights":[],"rights_urls":[],"identifier_entries":[{"key":"dc:identifier","label":"Identifier","values":["archive/lib.dr.iastate.edu/etd/17728/"],"render_values":[{"text":"archive/lib.dr.iastate.edu/etd/17728/","href":null,"code":true}]}]},"links":{"outbound_url":"https://dr.lib.iastate.edu/handle/20.500.12876/31911","outbound_label":"Repository record","outbound_source":"dc:identifier.uri"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor.advisor","label":"Advisor","values":["Wei . Le"]},{"key":"dc:contributor.department","label":"Department","values":["Department of Computer Science"]},{"key":"dc:creator","label":"Author","values":["Leslie, Stroh"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date","label":"Dc Date","values":["2020-02-12T22:57:28.000"]},{"key":"dc:date.accessioned","label":"Dc Date Accessioned","values":["2020-06-30T03:20:30Z"]},{"key":"dc:date.available","label":"Dc Date Available","values":["2020-06-30T03:20:30Z"]},{"key":"dc:date.issued","label":"Date","values":["2019-01-01"]},{"key":"dc:type","label":"Dc Type","values":["thesis"]},{"key":"thesis:degree_discipline","label":"Discipline","values":["Computer Science"]},{"key":"thesis:degree_level","label":"Degree Level","values":["thesis"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Master of Science"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language.iso","label":"Language (ISO)","values":["en"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier","label":"Identifier","values":["archive/lib.dr.iastate.edu/etd/17728/"]},{"key":"dc:identifier.uri","label":"Identifier URI","values":["https://dr.lib.iastate.edu/handle/20.500.12876/31911"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description.abstract","label":"Abstract","values":["<p>Choosing an algorithm to use can depend on a variety of factors such as runtime, space, and</p> <p>problem requirements. Many algorithms already have tested implementations in open source code.</p> <p>Reusing or interchanging algorithms can help save development time and improve the performance</p> <p>of applications.</p> <p>Existing code search techniques often rely heavily on natural language components of the code.</p> <p>Simple techniques, such as Grep, are sensitive to the naming choices and conventions in code. Grep</p> <p>in particular do not precisely find implementations, outputting single lines. Grep does not rank</p> <p>the result, and is subject to lots of noise.</p> <p>We develop a technique to search for algorithms in code using existing pseudo code as a query.</p> <p>We leverage the structural, mathematical and natural language components of pseudo code to find</p> <p>its corresponding implementation in code. This approach defines a simple language to represent</p> <p>pseudo code with atoms that include different features of the algorithm. We then use these features</p> <p>to search code using a bounding box and extract the code snippet that contains the functionality</p> <p>of the pseudo code.</p> <p>We collected 19 different repositories in both C and Java and searched for 27 different algorithms.</p> <p>Using our technique we found over 60 algorithm implementations in roughly 1.8 million lines of</p> <p>code. We also conduct a comparison of our tool against a search implementation using a popular</p> <p>enterprise search platform Apache Solr and show our approach can find more algorithms with high</p> <p>rank.</p>"]},{"key":"dc:format.mimetype","label":"Dc Format Mimetype","values":["application/pdf"]},{"key":"dc:title","label":"Title","values":["Identify algorithms from code"]}]}],"canonical_facts":{"dc:contributor.advisor":["Wei . Le"],"dc:contributor.department":["Department of Computer Science"],"dc:creator":["Leslie, Stroh"],"dc:date":["2020-02-12T22:57:28.000"],"dc:date.accessioned":["2020-06-30T03:20:30Z"],"dc:date.available":["2020-06-30T03:20:30Z"],"dc:date.issued":["2019-01-01"],"dc:description.abstract":["<p>Choosing an algorithm to use can depend on a variety of factors such as runtime, space, and</p> <p>problem requirements. Many algorithms already have tested implementations in open source code.</p> <p>Reusing or interchanging algorithms can help save development time and improve the performance</p> <p>of applications.</p> <p>Existing code search techniques often rely heavily on natural language components of the code.</p> <p>Simple techniques, such as Grep, are sensitive to the naming choices and conventions in code. Grep</p> <p>in particular do not precisely find implementations, outputting single lines. Grep does not rank</p> <p>the result, and is subject to lots of noise.</p> <p>We develop a technique to search for algorithms in code using existing pseudo code as a query.</p> <p>We leverage the structural, mathematical and natural language components of pseudo code to find</p> <p>its corresponding implementation in code. This approach defines a simple language to represent</p> <p>pseudo code with atoms that include different features of the algorithm. We then use these features</p> <p>to search code using a bounding box and extract the code snippet that contains the functionality</p> <p>of the pseudo code.</p> <p>We collected 19 different repositories in both C and Java and searched for 27 different algorithms.</p> <p>Using our technique we found over 60 algorithm implementations in roughly 1.8 million lines of</p> <p>code. We also conduct a comparison of our tool against a search implementation using a popular</p> <p>enterprise search platform Apache Solr and show our approach can find more algorithms with high</p> <p>rank.</p>"],"dc:format.mimetype":["application/pdf"],"dc:identifier":["archive/lib.dr.iastate.edu/etd/17728/"],"dc:identifier.uri":["https://dr.lib.iastate.edu/handle/20.500.12876/31911"],"dc:language.iso":["en"],"dc:title":["Identify algorithms from code"],"dc:type":["thesis"],"thesis:degree_discipline":["Computer Science"],"thesis:degree_level":["thesis"],"thesis:degree_name":["Master of Science"]},"updated_at":"2026-07-24T02:38:12Z"}