Mathematical Foundations of Software Engineering


Book Description

This textbook presents an introduction to the mathematical foundations of software engineering. It presents the rich applications of mathematics in areas such as error-correcting codes, cryptography, the safety and security critical fields, the banking and insurance fields, as well as traditional engineering applications. Topics and features: Addresses core mathematics for critical thinking and problem solving Discusses propositional and predicate logic and various proof techniques to demonstrate the correctness of a logical argument. Examines number theory and its applications to cryptography Considers the underlying mathematics of error-correcting codes Discusses graph theory and its applications to modelling networks Reviews tools to support software engineering mathematics, including automated and interactive theorem provers and model checking Discusses financial software engineering, including simple and compound interest, probability and statistics, and operations research Discusses software reliability and dependability and explains formal methods used to derive a program from its specification Discusses calculus, matrices, vectors, complex numbers, and quaternions, as well as applications to graphics and robotics Includes key learning topics, summaries, and review questions in each chapter, together with a useful glossary This practical and easy-to-follow textbook/reference is ideal for computer science students seeking to learn how mathematics can assist them in building high-quality and reliable software on time and on budget. The text also serves as an excellent self-study primer for software engineers, quality professionals, and software managers.







Foundations of Algebraic Specification and Formal Software Development


Book Description

This book provides foundations for software specification and formal software development from the perspective of work on algebraic specification, concentrating on developing basic concepts and studying their fundamental properties. These foundations are built on a solid mathematical basis, using elements of universal algebra, category theory and logic, and this mathematical toolbox provides a convenient language for precisely formulating the concepts involved in software specification and development. Once formally defined, these notions become subject to mathematical investigation, and this interplay between mathematics and software engineering yields results that are mathematically interesting, conceptually revealing, and practically useful. The theory presented by the authors has its origins in work on algebraic specifications that started in the early 1970s, and their treatment is comprehensive. This book contains five kinds of material: the requisite mathematical foundations; traditional algebraic specifications; elements of the theory of institutions; formal specification and development; and proof methods. While the book is self-contained, mathematical maturity and familiarity with the problems of software engineering is required; and in the examples that directly relate to programming, the authors assume acquaintance with the concepts of functional programming. The book will be of value to researchers and advanced graduate students in the areas of programming and theoretical computer science.













Mathematical Foundations of Computer Science


Book Description

Mathematical Foundations of Computer Science, Volume I is the first of two volumes presenting topics from mathematics (mostly discrete mathematics) which have proven relevant and useful to computer science. This volume treats basic topics, mostly of a set-theoretical nature (sets, functions and relations, partially ordered sets, induction, enumerability, and diagonalization) and illustrates the usefulness of mathematical ideas by presenting applications to computer science. Readers will find useful applications in algorithms, databases, semantics of programming languages, formal languages, theory of computation, and program verification. The material is treated in a straightforward, systematic, and rigorous manner. The volume is organized by mathematical area, making the material easily accessible to the upper-undergraduate students in mathematics as well as in computer science and each chapter contains a large number of exercises. The volume can be used as a textbook, but it will also be useful to researchers and professionals who want a thorough presentation of the mathematical tools they need in a single source. In addition, the book can be used effectively as supplementary reading material in computer science courses, particularly those courses which involve the semantics of programming languages, formal languages and automata, and logic programming.




Concrete Mathematics


Book Description

This book introduces the mathematics that supports advanced computer programming and the analysis of algorithms. The primary aim of its well-known authors is to provide a solid and relevant base of mathematical skills - the skills needed to solve complex problems, to evaluate horrendous sums, and to discover subtle patterns in data. It is an indispensable text and reference not only for computer scientists - the authors themselves rely heavily on it! - but for serious users of mathematics in virtually every discipline. Concrete Mathematics is a blending of CONtinuous and disCRETE mathematics. "More concretely," the authors explain, "it is the controlled manipulation of mathematical formulas, using a collection of techniques for solving problems." The subject matter is primarily an expansion of the Mathematical Preliminaries section in Knuth's classic Art of Computer Programming, but the style of presentation is more leisurely, and individual topics are covered more deeply. Several new topics have been added, and the most significant ideas have been traced to their historical roots. The book includes more than 500 exercises, divided into six categories. Complete answers are provided for all exercises, except research problems, making the book particularly valuable for self-study. Major topics include: Sums Recurrences Integer functions Elementary number theory Binomial coefficients Generating functions Discrete probability Asymptotic methods This second edition includes important new material about mechanical summation. In response to the widespread use of the first edition as a reference book, the bibliography and index have also been expanded, and additional nontrivial improvements can be found on almost every page. Readers will appreciate the informal style of Concrete Mathematics. Particularly enjoyable are the marginal graffiti contributed by students who have taken courses based on this material. The authors want to convey not only the importance of the techniques presented, but some of the fun in learning and using them.




Software Engineering Mathematics


Book Description




Mathematical Foundations of Software Engineering. Essays in Honour of Tom Maibaum on the Occasion of His 70th Birthday and Retirement


Book Description

This Festschrift is dedicated to Tom Maibaum on the occasion of his 70th birthday and on the occasion of his retirement. The Festschrift is also a follow up to the International Symposium on the Mathematics of Software Engineering organized by the Department of Computing of the University of Rio Cuarto, in February 2019. The Festschrift contains contributions by Tom's former students, colleagues, and friends. These contributions address research questions and problems in the general area of Formal Methods for Software Engineering - an area which Tom has spent most of his academic life working on. There are many reasons for publishing a Festschrift. Tom's academic merits alone would suffice for publishing this one. This Festschrift is also a token of appreciation. We wanted to make use of the opportunity to thank Tom for the impact he has had in the academic careers of many of his colleagues and collaborators, and especially in those of his former students.