Books



Out of print books


Mathematical Logic for Computer Science (Third edition).
Springer 2012. ISBN 978-1-4471-4128-0.

This book teaches mathematical logic using tableaux techniques pioneered by Beth and Smullyan, which are simpler than the usual algebraic techniques, but quite sufficient to give CS students the theoretical tools they need. The book also discusses application of logic to CS. For the third edition, the book has been totally rewritten and additional material has been included on SAT solving and model checking.

The Prolog implementation of the algorithms and their documentation has been removed from the textbook and is now freely available at the project http://code.google.com/p/mlcs/ on Google Code. That project also contains LearnSAT, a Prolog implementation of the DPLL algorithm for SAT solving, including the techniques of conflict-directed clause-learning and non-chronological backtracking.

On the book's website you can download transparencies of the figures and tables (PDF and LaTeX). The website also has a link where instructors can obtain the solution manual.



Michal Armoni and Moti Ben-Ari.
Computer Science Concepts in Scratch.
Weizmann Institute of Science, 2010.
A Hebrew textbook for middle-school students.

This textbook is intended to teach concepts of computer science using Scratch. Each concept is introduced through a sequence of tasks, each task adding a bit more functionality or modifying the animation in some way. The solutions of each task are explained in full, gory detail. We envision that teachers will present the students with sequences of tasks to try to solve on their own, but we firmly believe that full explanations must be available. Each task and exercise as been completely solved in Scratch and an archive containing about 150 working programs can be freely download.


Ada for Software Engineers (Second Edition with Ada 2005). Springer, 2009. ISBN 978-1-84882-313-6.
Ada for Software Engineers teaches the language as it is used in practice through relatively large case-studies such as a discrete event simulation. The presentation emphasizes the features for object-oriented and systems programming that were introduced in Ada 95, as well as the new features in Ada 2005. A graduated introduction to the terminology and style of the language reference manual makes this an ideal textbook for practicing software engineers.




Principles of the Spin Model Checker.
Springer, 2008. ISBN: 978-1-84628-769-5.
Japanese translation published by Ohmsha
.

This is an introductory textbook on the use of the Spin Model Checker for modeling and verifying concurrent and distributed systems. See also the software tools that I have developed for using Spin.


Principles of Concurrent and Distributed Programming (Second edition).
Addison-Wesley, 2006. ISBN 0-321-31283-X.

Visit the Pearson Companion Website http://www.pearsoned.co.uk/ben-ari/.
This is a completely rewritten edition of my earlier textbooks on concurrency. For a detailed explanation, see the preface and table of contents. Instructors can download the answers to the exercises from the Pearson website.




Just a Theory: Exploring the Nature of Science.
Prometheus Books 2005. ISBN 1-59102-285-1.
Some people derogatively claim that evolution is "just a theory," as if it were a fanciful idea that may be accepted or disregarded based on personal taste. But as science well knows, to say that an idea is "just a theory" is actually to pay it a great tribute! Just a Theory is an overview of the modern conception of the nature of science that will enable readers to distinguish the claims of science from the claims of pseudosciences such as creationism and astrology (which illegitimately wrap themselves in the mantle of science). With a light (even humorous) tone and a text that is easy to read, readers are invited to explore the key concepts of the nature of science. Of particular interest is the analysis of the core terms of science (fact, law, proof, and theory) in relation to the vastly different, colloquial meanings often given to these terms by nonscientists. Real theories must be supported by evidence, not opinions, beliefs, and personal experiences, however convincing they may be. The chapters end with biographical vignettes of selected scientists—some will be familiar to all readers while others are less so though they are no less significant. While sharing a common commitment to the enterprise of science and persistence in overcoming obstacles, they exhibit a diversity of background and personality. This accessible, informative, and comprehensive work will give curious readers a good grasp of what real science is, as well as a better understanding of why so many of the claims we hear and read about everyday fall far short of being "just a theory."



How To Do It In Java.
Mabat laHalonot, 2006.

This is a booklet in Hebrew that describes how to do various tasks related to programming in Java such as installing environments, debugging programs, using libraries.




Out of print books



Mathematical Logic for Computer Science (Second edition).
Springer 2001. Corrected printing with a new cover (left), 2008. ISBN 978-1-85233-319-5.
This book teaches mathematical logic using tableaux techniques pioneered by Beth and Smullyan, which are simpler than the usual algebraic techniques, but quite sufficient to give CS students the theoretical tools they need. The book also discusses application of logic to CS: logic programming, temporal logic and the Z language for formal specification. For the second edition, the book has been totally rewritten and additional material has been included on binary decision diagrams, constraint logic programming and model checking. Prolog implementation of algorithms are included.


Ada for Software Engineers.
John Wiley & Sons, 1998. ISBN 0-471-97912-0.
Out of print. An electronic edition was available, but this has been removed since the publication of the second edition (see above).
Ada for Software Engineers teaches the language as it is used in practice through relatively large case-studies such as a discrete event simulation. The presentation emphasizes the features for object-oriented and systems programming that were introduced in Ada 95. A graduated introduction to the terminology and style of the language reference manual makes this an ideal textbook for practicing software engineers.




Understanding Programming Languages.
John Wiley & Sons, 1996. ISBN 0-471-95846-8.
Out of print. Electronic edition available.
Understanding Programming Languages is concerned with comparative analysis of language constructs, and with implementation techniques. Ada 95 and C++ are compared in detail, including the constructs for object-oriented programming. The final chapters are devoted to functional and logic programming languages (ML and Prolog).




Principles of Concurrent and Distributed Programming.
Prentice-Hall International, 1990. ISBN 0-13-711821-X.

This book teaches concurrency constructs and distributed algorithms. Elementary formal methods of verification are presented, as well as an introduction to implementation techniques.



Mathematical Logic for Computer Science.
Prentice-Hall International 1993. ISBN 0-13-564139-X.
Out of print.




Principles of Concurrent Programming.
Prentice-Hall International, 1982. ISBN 0-13-701078-8
Out of print.




Last update on 23 January 2013.