Project Details

Details from Syllabus

The details below are copied from the Assignments and Project part of the course syllabus.

The bulk of your grade (70%) is based on a project, which will allow you to cover a subset of V&V in depth on real software. This breakdown reflects what I want you to take away from this class: adequate high-level knowledge of a variety of approaches, and in-depth knowledge on an area(s) of your choosing. Details of the project follow, roughly in chronological order:

  1. System under test (SUT) selection. You will choose a software project which you want to apply V&V techniques to, hereafter referred to as a SUT. The SUT should be sufficiently large (anything under 1,000 lines of code is almost assuredly too small), and can be in any state of development. Your grade is based solely on the V&V aspect, so if you select an incomplete SUT (e.g., it is still in the planning stages), the actual SUT implementation is secondary. You are encouraged to select software you have written in the past, but you must be ok with giving everyone in the class access to this code. You may work in pairs, but more will be expected of such projects.
  2. Project proposal (5%). You will propose exactly what you plan to do with the SUT, from a V&V perspective. For all projects, this must include aspects related to details covered in the first four weeks of class, with an included ACC plan being a hard requirement. It is also expected to include something from weeks 5-9 (e.g., testing with an advanced technique), and potentially something from weeks 10-15, too. I will tell you if your proposal needs more or less; in general, it's better to include too much and have me tell you to scale down. You may propose to use V&V techniques which aren't covered in the class, and this is even encouraged. For more details, see Project Proposal.
  3. Project pull requests (12% total). You are required to submit 12 pull requests between weeks 4-15, one per week, each worth 1%. Each one of these should be relatively small (no greater than 200 lines of code, ideally between 20-100 lines of code). It is expected that you will need to make code changes outside of pull requests. Pull requests are intended for reviews (more on that in a bit), to ensure steady project progress is made, and to catch surprises early.
  4. Project code reviews (12% total). You are required to perform 12 code reviews between weeks 5-16, one per week, each worth 1%. The code being reviewed is from previously-submitted pull requests.
  5. Project implementation (30%). Your final implementation of the project. It is expected that this will be larger than the sum of your pull requests (i.e., not all the code you need to write can be reviewed). This grade is based on whether or not your implementation actually implements what you proposed, with fully-conforming implementations receiving full credit. It is important that there are no surprises here; projects which do not conform to proposals will be penalized, irrespective of reason. If you are worried that your project will not conform to the proposal, let me know before this point and we can adjust the proposal without penalty. It is somewhat expected that proposals may be too broad in scope, and oftentimes we won't be able to tell until we really dive into things.
  6. Project report (6%). You will write background information on the techniques you used, how you applied them, and what you've learned from the application.
  7. Project presentation (5%). You will give an oral presentation on your project, detailing the same sort of information in the report.

Project Proposal

Your project proposal should conform to this template. Example project proposals are shown below, to give a better idea of what these should look like. Note that you may use these proposals as-is, if you so choose.

The project proposal asks you to select advanced V&V techniques before you know all the related details. You are being asked to make a decision with incomplete information; it is wholly expected that this information will need to be revised later. In the meantime, some minimal details follow about the techniques we will discuss later in the class:

Note that the above list is not exhaustive; there are many more advanced V&V techniques out there. Anything you find that is not covered under basic techniques is considered an advanced V&V technique for this purpose, and you may select any advanced V&V techniques here, including those which are not listed.

We will be covering verification-based techniques in the couse (week 10 and beyond), and these may count as advanced V&V techniques for the purposes of the project. However, these tend to be much more difficult to use, and we won't get into their details until relatively late in the course. As such, it is recommended to stay away from verification techniques for the project.

Final Project Report

A template for the final project report is here. This template includes the sections you should have in this report, along with the value of those sections.

To further help understand what I'm looking for in the report, an example final report has been provided. The corresponding project proposal for this report is here. This example project covers the codebase here.