Muutke küpsiste eelistusi

Formal Methods, Informally: How to Write Programs That Work [Kõva köide]

(University of New South Wales, Sydney)
  • Formaat: Hardback, 374 pages, kõrgus x laius x paksus: 244x170x30 mm, kaal: 1005 g, Worked examples or Exercises
  • Ilmumisaeg: 19-Feb-2026
  • Kirjastus: Cambridge University Press
  • ISBN-10: 1009420992
  • ISBN-13: 9781009420990
  • Formaat: Hardback, 374 pages, kõrgus x laius x paksus: 244x170x30 mm, kaal: 1005 g, Worked examples or Exercises
  • Ilmumisaeg: 19-Feb-2026
  • Kirjastus: Cambridge University Press
  • ISBN-10: 1009420992
  • ISBN-13: 9781009420990
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.

Arvustused

'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, Åbo Akademi University

Muu info

An undergraduate textbook showing how to use formal methods informally, without formal logic, to write and maintain computer programs.
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 OwickiGries method;
3. Critical
sections with OwickiGries;
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.
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.