Our systems are now restored following recent technical disruption, and we’re working hard to catch up on publishing. We apologise for the inconvenience caused. Find out more

Recommended product

Popular links

Popular links


Formal Methods, Informally

Formal Methods, Informally

Formal Methods, Informally

How to Write Programs That Work
Carroll Morgan , University of New South Wales, Sydney
January 2026
Not yet published - available from January 2026
Paperback
9781009421027
c.
£39.99
GBP
Paperback
GBP
Hardback

    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.

    • Teaches the principles and practice of Formal Methods - but without requiring Formal Logic or Discrete Mathematics as a prerequisite
    • Introduces the conceptual tools step-by-step, as they are needed
    • Presents numerous examples in Python, including many extremely simple ones, so that principles of the systematic approach are not obscured by the complexity of the programs themselves
    • Develops example programs both in the 'conventional' style and in the style of the book, allowing students to see the advantages of a more systematic –but still informal– approach
    • Online extras include mini-projects and automated quizzes

    Product details

    January 2026
    Paperback
    9781009421027
    382 pages
    244 × 170 mm
    0.25kg
    Not yet published - available from January 2026

    Table 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.
      Author
    • Carroll Morgan , University of New South Wales, Sydney

      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.