GitHub Copilot AI pair programmer: Asset or Liability?
Arghavan Moradi Dakhel, Vahid Majdinasab, Amin Nikanjam, Foutse Khomh,, Michel C. Desmarais, Zhen Ming (Jack) Jiang

TL;DR
This study empirically evaluates GitHub Copilot's ability to solve fundamental algorithmic problems and compares its solutions to those of human programmers, highlighting its strengths and limitations.
Contribution
It provides a comprehensive empirical analysis of Copilot's performance on algorithmic tasks and its comparison with human solutions, which was lacking in prior research.
Findings
Copilot can solve most fundamental algorithmic problems but produces some buggy solutions.
Copilot's solutions are less correct than human solutions but easier to fix.
It struggles with combining multiple methods to generate solutions.
Abstract
Automatic program synthesis is a long-lasting dream in software engineering. Recently, a promising Deep Learning (DL) based solution, called Copilot, has been proposed by OpenAI and Microsoft as an industrial product. Although some studies evaluate the correctness of Copilot solutions and report its issues, more empirical evaluations are necessary to understand how developers can benefit from it effectively. In this paper, we study the capabilities of Copilot in two different programming tasks: (i) generating (and reproducing) correct and efficient solutions for fundamental algorithmic problems, and (ii) comparing Copilot's proposed solutions with those of human programmers on a set of programming tasks. For the former, we assess the performance and functionality of Copilot in solving selected fundamental problems in computer science, like sorting and implementing data structures. In…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Engineering Techniques and Practices · Software Testing and Debugging Techniques
