  Program comprehension is a fundamental task in software development and
maintenance processes. Software developers often need to understand a large
amount of existing code before they can develop new features or fix bugs in
existing programs. Being able to process programming language code
automatically and provide summaries of code functionality accurately can
significantly help developers to reduce time spent in code navigation and
understanding, and thus increase productivity. Different from natural language
articles, source code in programming languages often follows rigid syntactical
structures and there can exist dependencies among code elements that are
located far away from each other through complex control flows and data flows.
Existing studies on tree-based convolutional neural networks (TBCNN) and gated
graph neural networks (GGNN) are not able to capture essential semantic
dependencies among code elements accurately. In this paper, we propose novel
tree-based capsule networks (TreeCaps) and relevant techniques for processing
program code in an automated way that encodes code syntactical structures and
captures code dependencies more accurately. Based on evaluation on programs
written in different programming languages, we show that our TreeCaps-based
approach can outperform other approaches in classifying the functionalities of
many programs.
