Fr. 149.00

Formal Methods, Informally - How to Write Programs That Work

English · Hardback

Will be released 31.01.2026

Description

Read more










Learn to program more effectively, faster, with better results... and enjoy both the learning experience and the benefits it ultimately brings. This undergraduate-level textbook is motivated by Formal Methods, encouraging habits that lead to correct and concise computer programs; but its informal approach sidesteps reliance on Formal Logic that programmers are sometimes led to believe is required. Instead, a straightforward and intuitive use of simple 'What's true here' comments encourages precision of thought without prescription of notation. Drawing on decades of the author's experience in teaching/industry, the text's careful presentation concentrates on key principles of structuring and reasoning about programs, applying them first to small, understandable algorithms. Then students can concentrate on turning those reliably into their corresponding -and correct- program source-codes. The text includes over 200 exercises, with full solutions available online for instructors' use, plus mini-projects and automated quizzes to support instructors in building their own courses.

List of contents










Preface; List of Figures; Part I. Everyday Programs: 1. Programs that work; 2. Using invariants to design loops; 3. Finding invariants; 4. Finding variants; 5. Assignments and conditionals; 6. Summary of Part I; Part II. Data Structures: 7. Introduction to Part II; 8. Coupling invariants; 9. Fibonacci numbers; 10. Encapsulated data-types; 11. The Mean Calculator; 12. Summary of Part II; Part III. Concurrency: 13. What is 'concurrency'?; 14. The Owicki-Gries method; 15. Critical sections with Owicki-Gries; 16. Peterson's algorithm; 17. Garbage collection on the fly; Part IV. Machine-assisted Checking, and Testing: 18. Machine-assisted program checking; 19. Program testing; Afterword; Appendix A. Drill exercises; Appendix B. Rules for checking programs; Appendix C. Data refinement: the real story; Appendix D. The 'arithmetic' of conditions; Appendix E. Some helpful logical identities; Appendix F. Illustration of garbage collection; Appendix G. Python-specific issues; Appendix H. Answers to selected drills; Appendix I. Answers to selected exercises; Bibliography; Index.

About the author

Carroll Morgan has been an innovator, educator and researcher in Computer Science for his whole career, first at the University of Oxford, now as Professor at the University of New South Wales, and he has worked in industry. He is best known for his pioneering work in systematic- and correctness-oriented methods of writing computer programs and systems, and especially for his text Programming from Specifications. He is a member of IFIP Working Groups 1.3, 1.7, 2.1 and 2.3 and received (jointly) the “Best Cybersecurity Paper of the Year” award from the National Security Agency in 2015.

Customer reviews

No reviews have been written for this item yet. Write the first review and be helpful to other users when they decide on a purchase.

Write a review

Thumbs up or thumbs down? Write your own review.

For messages to CeDe.ch please use the contact form.

The input fields marked * are obligatory

By submitting this form you agree to our data privacy statement.