Recently I came aross this book called "Software abstractions: logic, language, and anlysis" by Jackson. The book presents a specification language called "Alloy" that Jackson (and others) have developed. Much of the work in model checking uses (in my opinion) unreadable temporal logic notations. By contrast, Alloy is similar to languages such as "Z" (pronounced "zed"; look for paper by Jackson: A comparison of object modelling notations: Alloy, UML/OCL, and Z) and allows you to write readable models and properties. But unlike Z, Alloy has a tool that uses model checking-like approaches to allow you to test whether the model satisfies the specified properties. Except that it is not {\em exhaustive} (unlike standard model checking systems); so even if a given system does not satisfy a specified property, the Alloy checker may not find a counterexample . Nevertheless, Alloy seems fairly powerful and Jackson's book is very readable.
One could easily write both the papers for the class on this topic. The first paper could be on modeling languages such as Z, Alloy, even UML. The second paper could be on model checking approaches.