
Formal Methods, Informally
How to Write Programs That Work
Carroll Morgan(Author)
Cambridge University Press
Published on 19. February 2026
Book
Hardback
374 pages
978-1-009-42099-0 (ISBN)
Description
Learn to program more effectively, faster, with better results... and enjoy both the learning experience and the benefits it ultimately brings. While this undergraduate-level textbook is motivated by formal methods, so encouraging habits that lead to correct and concise computer programs, its informal presentation sidesteps any rigid reliance on formal logic which 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, for many of which full solutions are provided. A set of all solutions is available for instructors' use.
Reviews / Votes
'This accessible and compellingly written book will deepen your understanding of how code works and why it works correctly. It is full of practical insights for both students and experienced programmers, as well as university educators looking for a new - and better - way to teach programming.' Graeme Smith, University of Queensland 'Carroll Morgan's Formal Methods, Informally is a timely guide to checking everyday code by asking the right questions. Building on distilled logic and math mechanisms, rigorous thinking is promoted as a most valuable tool for developing verifiable software. This book is an insightful must-read for students, educators and practitioners alike.' Luigia Petre, Abo Akademi UniversityMore details
Language
English
Place of publication
Cambridge
United Kingdom
Product notice
sewn/stitched
Cloth over boards
Illustrations
Worked examples or Exercises
Dimensions
Height: 250 mm
Width: 175 mm
Thickness: 29 mm
Weight
1134 gr
ISBN-13
978-1-009-42099-0 (9781009420990)
Copyright in bibliographic data and cover images is held by Nielsen Book Services Limited or by the publishers or by their respective licensors: all rights reserved.
Schweitzer Classification
Other editions
Additional editions

Book
02/2026
Cambridge University Press
€50.00
Shipment within 15-20 days
Person
Carroll Morgan has been an innovator, educator and researcher in computer science for his whole career: first in industry, then as Lecturer and Fellow at the University of Oxford, and finally as Professor at the University of New South Wales. 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 IFIPWorking 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.
Content
Preface; Part I. Everyday Programs: 1. Programs that work; 2. Using invariants to design loops; 3. Finding invariants; 4. Finding variants; 5. Checking assignments and conditionals; 6. Summary of Part I; Part II. Data Structures and Their Encapsulation: 1. Introduction to Part II; 2. Coupling invariants; 3. Case study in coupling invariants: Fibonacci numbers; 4. Encapsulated data-types: how exactly is it done?; 5. Case study: the Mean Calculator; 6. Summary of Part II; Part III. Concurrency - and How to Check It: 1. What is 'concurrency'?; 2. The Owicki-Gries method; 3. Critical sections with Owicki-Gries; 4. Peterson's algorithm for mutual exclusion; 5. Garbage collection on the fly; Part IV. Machine-Assisted Program Checking, and Testing: 1. Machine-assisted program checking; 2. Program testing; Afterword; Appendices; A. Drill exercises; B. Summary of rules for checking programs; C. Data refinement: the real story; D. The 'arithmetic' of conditions; E. Some helpful logical identities; F. Illustration of heap behaviour during garbage collection; G. Python-specific issues; H. Answers to selected drills; I. Answers to selected exercises; Bibliography; Index.