Course Project Information, COMP 408 (Spring 1997)
For the course project, you will verify a sizeable problem or system
using both model-checking and theorem-proving. You may either choose
your own problem or select one from the project
list. You are encouraged to find your own problem to work on. If
you do, be sure to clear it with the instructor before proceeding!
There are four components to the course project:
- Project Proposal: A 3-5
page report describing the problem you are working on and the
techniques you expect to use to verify it. Your grade will be based
on how well you described the problem and how realistic your
expectations are as to how you will verify it. Due in class on
Wednesday, March 12.
- Verification of
Problem: The actual verification work you do using the
software tools introduced in the course. Your grade will be based on
how well you applied the tools to your problem.
Presentation: A presentation made to the class in the
penultimate week of the semester describing the problem and how you
went about verifying it. Your grade will be based on the clarity and
thoroughness of your presentation.
- Project Report: A report
of approximately 10 pages describing how you specified and verified
the problem and how your actual experience differed from the
expectations set out in your proposal. Your grade will be based on
the thoroughness and clarity of your report. Due by the last day of
Project proposals are due in class on Wednesday, March 12.
Note: You should not work on the verification
aspects of the project until after I have graded your project
proposal. Therefore, if you want to work on the verification aspects
of your project during the break, you must turn in your project
proposal before break.
Write your proposal assuming that I know nothing about the system you
are verifying. Your proposal should cover the following points:
In grading these proposals, I am looking to see how well you can
describe a verification problem to others and how realistic you are
about where the different types of verification can be applied to your
chosen problem. I expect these proposals to be formal papers
and will grade them for English usage and writing style
accordingly. Spell-check and proofread your proposal, and
write it as clearly and compactly as possible.
- What does the system do?
- What is the high-level architecture/algorithm of the system? Use
diagrams if appropriate.
- What are the desired properties of the system? Properties should
be explained in English, not stated in any of the logics we have
- What techniques do you expect to use to verify this system? For
example, you should indicate where you will use model checking and
where you will use theorem proving. If you intend to use abstraction
to verify the system, explain in English what you expect to have to
abstract (for example: I expect to abstract the 8-bit counter to a
non-deterministic 2-bit counter). Justify your claims (for example,
"Part X will require abstraction because it has Y states, which I
believe will be too many for effective model checking", "I believe
theorem proving will be a more straightfoward approach for part X
because of ...", etc).
- What aspects of the verification do you expect to be the most
challenging and why?
The goal of this project is to get you to explore the practical
differences between theorem proving and model checking. I expect you
to use both approaches in your verification. Therefore, your
verification should follow one of two general formats:
- Use the approaches interactively to verify the design. The
interaction between the approaches should be natural for the problem.
For example, for the systolic array element, we could have verified
the behavior of a single stage using model checking, then verified how
the results from the individual stages compose into a result on the
entire circuit using theorem proving. It would not have been natural
to simply pick some properties to theorem prove and some to model
check, unless those you verified using theorem proving were not
amenable to model checking due to the size of the design.
- Use each approach separately to verify the design. In this case,
your project is more of a case study in different approaches and I
expect your final report to compare and contrast the practicality of
the two approaches relative to your design in some detail.
In class on April 23, you will give a 30 minute presentation on your
course project. Your presentation should include
The goal of these presentations is to have you all learn from each
others' experiences on the projects. The emphasis of your
presentation should therefore be on the verification and modeling
aspects of the project, particularly the aspects you found most
interesting, challenging, etc.
- A brief overview of the design you are verifying.
- The properties you want to verify (also brief).
- How you modeled the design.
- The techniques you are using to verify your design. Discuss (as
appropriate to your project) where you are using abstractions, how you
are decomposing problems, how you are using each of model-checking and
- Discussion of which aspects of the project have been easy or
difficult to verify.
You can do your presentation either using the overhead projector or
using handouts and the whiteboard.
Your final project report will summarize your experience in verifying
your problem. The report should contain the following items:
As with the proposals, these reports are intended to be formal
papers. They will be graded for English usage and writing style
- A description of the problem you worked on. While this material
may be largely repeated from the project proposal, I expect that you
will have incorporated any comments I made regarding your problem
statement from the proposal into the writeup in the final report.
- Formal statements of the properties you verified and appropriate
statistics on how long it took for them to verify.
- An analysis of how rigorous and/or complete you feel your
- A discussion of how you used both theorem proving and model
checking. If you used both on the same aspects of a single problem,
discuss which approach you feel was more suitable for the problem and
- An analysis of your expectations from the project proposal.
Indicate where your expectations varied from your actual experience
and try to describe what you had not anticipated in each case. Also
indicate where your experience matched your expectations.