The author has categorized the issues he encounters in his teaching career. The

*…show more content…*

It is also important to understand the syntax and semantics of specification language and difference between them. First order logic can be used to embed it into the specification which is based on assertion language. The smallest change in assertion can have a big change in semantics. The assertion can help to specify the specification precisely. It is a general rule of thumb to used syntactic features to make it easier to read. Most methods have specific grammar and constructs of the language to make it easier to write a complex specification. Another important thing is notations. While writing, the student should not be constrained by the notations. If some concept is difficult to express in given notation it is perfectly fine to design some new syntax which will convenient. The most important part is to specify the inventions. Sometimes it is important to prove theorems while specifying the system. For the large complex system, it is impractical to do a formal proof. It is important to justify each step which could be formalized. While doing informal proofs, we can skip some steps but it is important to understand which steps can be skipped which cannot. There are some tools available to do formal proofs using proof checkers and theorem. The only thing is one must spend time on these tools to learn it. The machine aid method is effective because you cannot skip steps in it. It is important to have some background experience in mathematics which can help to construct own proofs. Also, familiarity with computing diagram can play an important