Books used. -Michael Huth and Mark Ryan, //[[http://www.cs.purdue.edu/homes/xyzhang/spring17/logicbook.pdf|Logic in Computer Science: modeling and reasoning about systems]]//, Cambridge University Press. -Aditya Mathur, //Foundations of Software Testing//, in print. -Alfred V. Aho, Monical S. Lam, Ravi Sethi, and Jeffrey D. Ullman, //[[http://www.cs.purdue.edu/homes/xyzhang/fall08/book/dragon.pdf|Compilers Principles, Techniques, & Tools.]]// Suggested readings. -Edmund Clarke and Orna Grumberg, //Model Checking//, The MIT Press. -Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, //[[http://www.cs.purdue.edu/homes/xyzhang/fall08/book/pattern.tar.gz|Design Patterns]]//. -Beck, //Extreme Programming explained// — Embrace Change. -Len Bass, Paul Clements, and Rick Kazman, //Software Architecture in Practice //. -Fowler, //Refactoring: Improving the Design of Existing Code//