This research seminar will provide PhD students a comprehensive overview of current state-of-the-art research that sits at the intersection of software engineering and deep learning. In particular, we will examine how we can use deep learning to build the next generation of intelligent developer tools, and how we can use software engineering principles to improve the process of building deep learning models.
As software continues to be tightly integrated into the modern fabric of our society, it is imperative that we are able to equip developers with the tools they need build ever more complex software systems easily, efficiently, and with fewer bugs. One the key attributes that is driving the modern complexity of software is the integration of machine learning algorithms that enable complex behaviors which are difficult to stipulate analytically. A large contributor of the popularity of such learning-based algorithms is the emergence of *deep learning*, which uses multi-layer artificial neural networks to learn patterns from data. In this course, we will explore the synergies between software engineering and deep learning. Namely, we will examine ways in which deep learning can be used to build the next generation of intelligent developer tools, and how we can adapt software engineering tools and practices to aid in the development of deep learning systems.
As such, this course has three main philosophical objectives:
1) Survey recent research that aims to leverage the prevalence of open-source software data and deep learning to build new intelligent developer tools.
2) Explore how we can build upon decades of research in software engineering to develop tools, techniques, and processes that can assist in the development of deep learning systems.
3) Develop essential research skills such as conceptualizing and carrying out an advanced research project, presenting research effectively, and critically reading and critiquing research papers.