SOEN7481 - Software Verification and Testing

Course Objective

This course explores leading research in software testing and quality assurance, discusses state-of-the-art testing approaches, highlights industrial engineering practice, and outlines future research directions. In particular, the course covers topics such as leveraging data mining to analyze test results and detect bugs, how different companies leverage static analysis tools in their quality assurance process, and many more. Students will acquire the advance knowledge about the software testing and quality assurance in the field. Once completed, students should be able to conduct research in topics related to software quality and will be able to leverage the learned knowledge in other system and software engineering related research or practice.

Course Schedule

Every Tuesday 5:45pm to 8:15pm in FG B030.

Course Requirements

Prerequisites: SOEN 6461, SOEN 6481

Students are expected to have background knowledge in programming, fundamentals of computer science, software development, software systems, and software engineering.

Course Format and Grading Scheme

Students are expected to present three papers each week. A detailed course schedule can be found at the bottom of the page.

1. Paper presentation and discussion (20%)
2. Weekly critique and summary (5%)
3. Programming assignment (20%)
4. Project (40%)
5. In-class exam (15%)
  1. Paper presentation and discussion (10% + 5% + 5% = 20%)

    • Each paper will be assigned to one group of students who will act as a presenter (10%).
    • Another one group of students who will act as discussant (5%).
    • Students need to ask questions after the presentation (may be randomly picked). Afterwards, the discussion will last 10-20 minutes (5%).

    Role of presenter: As a presenter you should not simply repeat the paper content (remember you only have 20 mins), instead you should point out the main important findings of the work. You should highlight any novel contributions, any surprises, and other possible applications of the proposed techniques. You should check the other work of the authors that is related to the presented paper. Finally, you should discuss how the presented work relate to other papers covered in the course (especially the papers covered in that particular week).

    Role of discussant: As a discussant, you should take an adversarial position by pointing out weak and controversial positions in the paper. You should present a short rebuttal of the paper. You should come prepared with problems and counterexamples for the presented work.

    Your presentations should have (at least):

    1. One slide that describes the main technique that is used in the paper.
    2. One slide that lists the main contributions of the paper.
    3. One slide that places the paper relative to any recent work done by the authors of the paper.
    4. One slide that links places the paper relative to other papers presented that week.
    5. As the final slide, a listing of at least three technical points that you liked and three areas that should be improved.

    Your presentations as discussant should have:

    1. Points that you think should be improved/discussed.
    2. DO NOT repeat what the paper is about.

    Your presentations will be graded according to the above-mentioned points, the style (e.g., it is a bad style to have a lot of text in your slide), and time.

  2. Weekly critique and summary (5%)

    Each week, each student should pick one of the papers for that week and submit a one page critique of the paper before Sunday midnight.

    The critique should offer a brief summary of the paper, points in favor, points against, and comments for improvement.

    Additional advice for critiquing papers is here.

    You do not need to submit a critique if you act as presenter in that week. You still need to submit a critique if you act as discussant for that week. Note that you are required to read at least the abstract and introduction of the other papers that you did not write the critique on.

  3. Assignment (20%)

    One programming assignment done in a group of 3 to 5 students. More details in class.

  4. Project (40%)

    One original project (10 pages ACM conference format) done alone or in a group of 3 to 5 students. The project will explore one or more of the themes covered in the course.

    1. Project update presentation (5%)
    2. Final project presentation (10%)
    3. Final project report (25%)

    The project can be related to any topic as long as it is related to the course. You can also choose to replicate one of the papers that is covered in the course.

    Code for both assignments and course project must be stored on GitHub. We will need to see the development history of the work. There will also be a peer-evaluation for both assignment and course project at the end of the term.

  5. In-class Exam (15%)

    We will have a in-class exam in the second last week. The exam coverage will be based on the assignment and a few papers that are covered in the course. More details will be announced.

Weekly Schedule

SOEN7481 Fall 2018