Week 1 [Sept. 12, 2017]

  • Course Introduction. We will discuss the topics covered in the course, the evaluation methods and marking scheme.
  • First Example of AI in Software Engineering. We will also introduce one example of a search-based algorithm to automatically repairing software bugs.

Week 2 [Sept. 21, 2017]

  • Please note this week’s lecture will take place at a special time – Thursday, Sept. 21, 2017, 9:00am-11:00am in ERC2056.
  • How Often Are AI Techniques Used In Software Engineering? This week we will explore the breadth of the applications of Artificial Intelligence (AI) and Search-based techniques in Software Engineering Research. To explore the breadth we will survey the most recent instances of top Software Engineering research conference: ICSE, ASE, FSE, ICSME, ICST, ISSTA, MSR, VISSOFT

  • We will divide into groups of 2-3 and each group will review the papers published in a particular conference. Each paper that is an AI-based or Search-based technique will be recorded

Week 3 [Sept. 26, 2017]

  • An Industry Perspective On The Intersection Of AI and Software Engineering. In the first half of the week’s lecture we will watch a video featuring Google’s Peter Norvig discussing the intersection of deep learning and Software Engineering. Following the video we will discuss the views presented and how they relate to what we have seen thus far in the research literature.
    • Peter Norvig. “Deep Learning and Understandability versus Software Engineering and Verification” [YouTube]
  • Applications of AI to Software Testing. In the second half of this week’s lecture we will consider how Artificial Intelligence (AI) techniques can be applied to software testing research problems. We will explore one example of machine learning (ML) applied to predicting the results of mutation testing

Week 4 [Oct 3, 2017]

  • Each student will present a paper from the research literature (published 2012 or later) that uses an AI  technique to address a software testing research problem. Presentations will be 10 minutes long including 2 minutes for questions.
  • Student Presentations IA: Applications of AI to Software Testing.
    • Miguel Mendez. “A Framework to Advise Tests Using Tests”
    • Tosan Atele-Williams. “An Improved Beam-Search for the Test Case Generation for Formal Verification Systems”
    • Guilherme Damasio. “Automated Test-Case Generation by Cloning”
    • Md. Maruf. “Automating Performance Bottleneck Detection using Search-Based Application Profiling”
  • Student Presentations IB: Applications of AI to Software Testing.
    • Darren Saguil. “Inferring Mutant Utility from Program Context”
    • Luisa Rojas Garcia. “Predictive Mutation Testing”
    • Brandon Laughlin. “Web Application Vulnerability Prediction Using Hybrid Program Analysis and Machine Learning”
    • Doris Rui Ren. “Discovering Bug Patterns in JavaScript”
    • Gabrielle Perez Dias. “Automatic Text Input Generation For Mobile Testing”
    • Alexandar Mihaylov. “Learning to Prioritize GUI Test Cases for Android Laboratory Programs”

Week 5 [Oct 10, 2017]

  • Student Presentations IC: Applications of AI to Software Testing. Each student will present a paper from the research literature (published 2012 or later) that uses an AI or Search-based technique to address a software testing research problem. Presentations will be 10 minutes long including 2 minutes for questions.
  • Presentation order:
    • Khizar Qureshi. “Search-Based Testing of Procedural Programs: Iterative Single-Target or Multi-target Approach?”
    • Mariana Shimabukuro. “Testing Django Configurations Using Combinatorial Interaction Testing”
    • Nayreet Rupak. ” “Dynamic Tainting for Automatic Test Case Generation.”
  • An Overview of Machine Learning. We’ll consider various aspect of machine learning including applications, individual methods as well as challenges of using ML to solve Software Engineering problems. Methods covered include naive Bayes, support vector machines, random forests and k-means clustering. Challenges discussed include overfitting, underfitting and selecting the write ML method for the right software research problem.

Week 6 [Oct 17, 2017]

  • Group Discussion on “Researcher Bias: The Use of Machine Learning in Software Defect Prediction.” Please read the paper in advance and be prepared to discuss the paper content as well as your personal critique of the research.
  • An Overview of Meta-Heuristic Search Techniques. We’ll consider various aspects of meta-heuristic search methods including local vs. global search. We’ll also cover a number of meta-heuristic search methods including: hill climbing, simulated annealing, particle swarm optimization, ant colony optimization, genetic algorithms and evolutionary computation.

Week 7 [Oct 24, 2017]

Week 8 [Oct 31, 2017]

Week 9 [Nov. 7, 2017]

  • Student Presentations IV: Project Proposals. 5 minute presentations.

Week 10 [Nov 14, 2017]

  • An Overview of Neural Networks and Deep Learning.
    • Slides [PDF]
  • Group Project Updates

Week 11 [Nov 23, 2017]

Week 12 [Nov 28, 2017]

  • Student Presentations V: New Applications of AI to Software Engineering. For this presentation all students should select a paper from the Software Engineering literature that does not utilize AI but could be solved with AI. Each presentation should include a clear description of the research problem, the non-AI approach, the proposed AI approach and the trade-offs of using AI.