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.
Sprache
Verlagsort
Produkt-Hinweis
Illustrationen
Worked examples or Exercises
Gewicht
ISBN-13
978-1-009-42102-7 (9781009421027)
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 Klassifikation
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.
Autor*in
University of New South Wales, Sydney
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.