CSC 509 Assignment 2:

Readings on the Use of Formal Specification in Testing
Selection of Class Project

Revised 19 April



DUE:
Part 1 (Readings): 2PM Monday 21 April
Part 2 (Project Selection): 2PM Wednesday 23 April


Assignment Overview

This is a two part assignment. Part 1 is some reading on the topic of using formal specifications to support testing. Part 2 is some thinking about the project/paper you want to do for 509.

Part 1: Readings

The reading for next week is on the topic of using formal specifications to support testing. We will discuss this topic on Monday of week 4 in class. For those of you who are looking for a "pre- defined" area of project work in 509, what I have are projects in this area. For those of you who have a different project area in mind, reading about the use of formal specifications in testing will be part of the general class subject matter.

You will read three papers at different depths of understanding, as described in the three-pass reading approach in the article "How to Read a Paper" by S. Keshav at the University of Waterloo. Specifically,

  1. Do a first pass read of the 2009 ACM computing Surveys article "Using Formal Specifications to Support Testing". This is a very in-depth review of the subject matter, for a which a first pass read is appropriate.

  2. Do a first and second pass read of Sections 1 through 4 in the 2005 paper "An Overview of JML Tools and Applications". This paper describes the Java Modeling Language (JML), with which some of you are familiar, and how JML can be used to support testing.

  3. Do a first and second pass read of the paper "JMLUnit: The Next Generation". This paper describes details of a tool that is used to generate unit tests from a JML specification. There are a number of interesting ideas to extend the functionality and utility of JMLUnitNG; these ideas are suitable for a 509 class project.

The concrete deliverable for part 1 of this assignment is simply to have read the papers as described above and be prepared to participate in a class discussion about them (and maybe even a little quiz).

Part 2: Project Selection

Based as appropriate on the initial exploration you did for assignment 1, define the focus area for your 509 class project. As outlined in the syllabus, your project can be related to your thesis or in a separate area. Preferably, the project will involve a combination of implementation and writeup. Alternatively, the "project" can be more of a pure-research paper without a substantial (or any) implementation component. We will discuss your project topic areas individually during class on Wednesday of Week 4.

The concrete deliverable for Part 2 of this assignment is to post on the 590 PolyLearn wiki an overview of your class project topic, with the following specific points:

  1. area of project work (e.g., game development, mobile devices, natural language processing, networks, security , etc.)

  2. type of project (one of the following):

    1. part of thesis -- this includes some aspect of testing implementation and the draft of a testing chapter for your thesis

    2. implementation of some other testing idea -- this can be in area that you've previously done work, or are currently doing in another class

    3. in depth research paper -- on a topic of your interest, with little or no implementation

  3. additional readings to be done in your area of work, including references to specific papers if you have them; note that your readings list will almost certainly expand as your project progresses

  4. other class member(s) or other student(s) you want to team with (if any)

  5. one to three paragraph abstract describing what your project work will entail