Here,
I describe my expectations for a project,
and suggest some possible ideas for projects.
If you have an idea of what you'd like to pursue for a project, that's great.
Look at this list for ideas, and feel free to talk with me and we can brainstorm
to find a fun and interesting project.
The goal of the project is for you to go a bit deeper into some aspect of formal verification
than what we covered in class. A realistic project should take about 40-60 hours of your time --
a term is 14 weeks; a 3 credit course should be about 9 hours/week of total work; the project is
40% of your grade, that works out to (14 weeks) *(9 hours/week) *.4 = 50.4 hours.
The final product of your project is a report.
If you're a M.Sc. student, this report should be a M.Sc. thesis proposal.
You're not obligated to do your M.Sc. with me, it's practice for formulating a thesis proposal
no matter who you end up choosing to work with. Of course, if you're project leads to our working
together, I'll be happy with that as well, but it's not required, and it's certainly not part of your
grade. As such, the proposal should:
Basic Expectations for a Project
Typically, a project will include a proof-of-concept implementation of the main idea
that you will try on a few examples and report the results. This shows that the basic idea is feasible.
It also means that you'll have the experience of doing something with formal methods that goes beyond what
we cover in the homework assignments.
I will also consider projects that are primarily a literature survey or address a theoretical aspect of formal methods using paper-and-pencil proofs. A literature survey project will be much more extensive in the papers that it covers (e.g.\ 15-20 papers) and should present them in an organized, coherent way, for example, putting forward a taxonomy of the research approaches and results. If you want to do a literature survey or theory project, please talk to me first.
I am sometimes asked if a team or partner project is acceptable. Yes, but only if there is a really good reason for it. I prefer to avoid projects where student X depends on student Y to pass. If the team or partner project can be divided into separate projects (at least from an evaluation perspective), then I strongly prefer that. Otherwise, the project needs to clearly state who is responsible for what, and the milestones and dependencies make sure that each member of the team has a clear path to success.