Software tools are extensively used in various phases of software development to make software reliable and efficient. Such tools include code generators and synthesizers, optimizing compilers, automated test generators, debuggers, and smart Integrated Development Environments (IDEs) supporting code completion and static bug detection (e.g. https://www.jetbrains.com/idea/). Software tools are often based on traditional program analysis techniques and formal methods. In the recent years, we have realized that we have access to a large body of open-source software systems. Such open-source systems have massive amount of data and meta-data on programs. This availability of massive amount of data has encouraged researchers to devise data-driven approaches to development of software tools. Such tools have managed to effectively
In this course, we will read several recent papers where machine learning has been used to build effective software development and programming tools. We will read two papers per week. In each lecture a student will present a paper for 40 minutes with all necessary background information. The student will also create three questions on the contents of the paper. The questions should be such that it could be answered only after having a deep understanding of the paper. The rest of the class will then review the paper and post their reviews and answers to the questions on Piazza 14.5 hours before the next lecture. In the next lecture, in addition to the discussion of a new paper, we do a deeper discussion of the paper presented in the previous lecture. If you have registered for 3 units, you need to implement the technique presented in one of the papers and try to reproduce the results. The implementation and report will be due on March 23. If you have registered for 4 units, you need to extend the implementation with new ideas and produce results that are potentially publishable. The deadline for this extended project will be May 4. The relative weight of the components of your grade will be approximately:
#jsnice
#deepfix
#deepcoder
#clone
#mlfuzzer
#qfuzzing
#phog
#r3nn
#ggnn
#summarization
#characterlevel
#nl2program
#codenn
#deepxplore
#mining
#semrepair
#bayou
#opencl
#hoarefeedback
#dynrepair
#apilearning
#seq2sql
#code2vec