  The quality of software produced by students is often poor. How to teach
students to develop good quality software has long been a topic in computer
science education and research. We must conclude that we still do not have a
good answer to this question. Specifications are necessary to determine the
correctness of software, to develop error-free software and to write complete
tests. Several attempts have been made to teach students to write
specifications before writing code. So far, that has not proven to be very
successful: Students do not like to write a specification and do not see the
benefits of writing specifications. In this paper we focus on the use of
informal specifications. Instead of teaching students how to write
specifications, we teach them how to use informal specifications to develop
correct software. The results were surprising: the number of errors in software
and the completeness of tests both improved considerably and, most importantly,
students really appreciate the specifications. We think that if students
appreciate specification, we have a key to teach them how to specify and to
appreciate its value.
