Tentative Project List

  • Neer Shay: A PHP to Promela (SPIN) translator for analyzing concurrent database accesses.
  • Puneet Lakhina : Introducing channel contracts to Erlang.
  • Burak Ozek: Automated verification of UML State Machines using Spin by translating XMI to Promela with appropriate abstractions.
  • Jonathan Kupferman: Investigating effectiveness of mutation testing on Ruby on Rails web applications framework.
  • Nupur Garg: Exhaustive profiling of Python code using the Spin model checker.
  • Joshua Bouganim: A case study on verification of the Verilog specification of an 8-bit processor controller using NuSMV.
  • Ben Rubinger: A case study on specification and verification of the data model of a Facebook application using the Alloy Analyzer
  • Youngjoon Choi: Semi-automated exhaustive navigation sequence generation for verification of web applications.
  • Hakan Yildiz: Investigating automata widening operations for string verification.
  • Jaideep Nijjar and Aleksandra Potapova: Analyzing Ruby data models using Alloy analyzer
  • Wei Tang: Verification of the Verilog specification of a multi-threaded MSP430 design using NuSMV.

    CS 267 Class Project

    As a class project you will do a research project on automated verification. You should think of this project as a research project that would be publishable in a workshop or a conference. You can conduct your project as two or three people groups if you can find partners.

    Here are four types of projects that could be done for this course:

    1. Case study: Find an application area and an interesting and non-trivial program or specification in that area. Use one of the model checking tools to analyze it (and hopefully find bugs in it). This type of project may require manual translation of a program or specification to the input language of model checker, or some manual abstractions or reductions to get the verification tool working.
    2. Translator: Find a language which would benefit from automated verification. Write a translator from this language to the input language of one of the existing verification tools. It may be necessary to make some restrictions on the language in order to make the translation feasible. Find some examples demonstrating the technology.
    3. Tool Extension: Extend one of the existing verification tools by adding a new feature to it. There are a bunch of automated verification tools listed at the end of the class webpage.
    4. Tool: Find a language (or create your own) which would benefit from automated verification. Use verification technologies we will discuss in the class (such as symbolic model checking, explicit state model checking, infinite state model checking, or bounded model checking) to develop a verification tool for this language.
    For all these projects the first thing to figure out is the application area and the language, i.e., to find the thing you want to verify. You have to figure this out as soon as possible, I list some things that are on my mind below. Please choose a topic that is related to your interests so that the project is fun for you!

    Project Deliverables

    Some Project Topics

    Students are welcome to come up with their own project topics related to their research interests. Model checking is an active area and there are lots of research opportunities both for applying model checking to new problems and also extending the existing model checking techniques. Below I will list some project topics that I find interesting: