**Mordechai (Moti) Ben-Ari**

**Professor**

Department of Science
Teaching

Weizmann Institute of Science

Rehovot 76100 Israel

Tel: 972-8-934-2940

Fax: 972-8-934-4115

Email:

- Mathematical Logic for Computer Science (Third edition)
- Computer Science Concepts in Scratch
- Ada for Software Engineers (Second Edition with Ada 2005)
- Principles of the Spin Model Checker
- Principles of Concurrent and Distributed Programming (Second edition)
- Just a Theory: Exploring the Nature of Science
- How To Do It In Java

- Mathematical Logic for Computer Science (Second edition)
- Ada for Software Engineers
- Understanding Programming Languages.

Electronic edition available for download. - Principles of Concurrent and Distributed Programming
- Mathematical Logic for Computer Science
- Principles of Concurrent Programming

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.

See also LearnSAT, software that facilitates learning about the important algorithms for SAT solving as discussed in Chapter 6 of the textbook.

- On the book's website there is also a link where instructors can obtain the solution manual.
- Errata (last update 13 August 2015).
- Slides of the figures and tables in PDF and LaTeX.
- Prolog implementation of the algorithms and their documentation.

Michal Armoni and Moti Ben-Ari.

Computer Science Concepts in Scratch

Weizmann Institute of Science, 2010.

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.

The books is available in both English and Hebrew for download under the CreativeCommons BY-NC-ND license. The web pages include archives of Scratch programs for the examples and exercises.

- English website.
- Hebrew website.
- Hardcopies of the Hebrew book can be purchased from Tarbut la-Am.

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.

- Source code of the case studies
- Source code of the quizzes.
- Slides (PDF and LaTeX).
- Preface and Table of Contents.
- Errata (12 April 2012).

Principles
of the Spin Model Checker.

Springer, 2008. ISBN: 978-1-84628-769-5.

This is an introductory textbook on the use of the Spin Model Checker for modeling and verifying concurrent and distributed systems.

- Foreward, preface and table of contents.
- Supplementary material on version 6 of Spin.
- Source code of the Promela programs in the book.

The Promela programs have been adapted to use the new features of version 6 of Spin; "-6" has been added to their file names to distinguish them from the original programs that are still in the archive. - Source code of the Promela programs in the book adapted for use with the Erigone Model Checker.
- Slides (PDF and LaTeX).
- Errata (last update 24 August 2008).
- Spin reference card (PDF and LaTeX).

Tools for learning model checking and Spin:

- jSpin: An integrated development environment.
- Erigone: A reimplementation of Spin for facilitating learning.

Japanese translation published by Ohmsha

Principles of Concurrent and Distributed Programming (Second
edition).

Addison-Wesley, 2006. ISBN 0-321-31283-X.

- On the book's website there is also a link where instructors can obtain the solution manual.
- Source code of the example programs.
- Slides (PDF and LaTeX).
- Errata (13 June 2012).

The Promela program for the fourth attempt is incorrect; the inner loops should have "else -> break". - Preface and table of contents.

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."

- Errata (18 August 2010).
- Review by David Ludden.
*Skeptic*12(3), 2006, 78-79. - Review by Andreas Quale.
*Science in School*9, 2008, 76. - Review by Michael Zimmerman.
*Reports of the National Center for Science Education*27(5-6), 2007, 46-47.

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.

Mathematical Logic for Computer Science (Second edition).

Springer 2001. Corrected printing, 2008.
ISBN 978-1-85233-319-5.

- Source code of Prolog programs.
- Slides (PDF and LaTeX).
- Preface and Table of Contents.
- Errata for 6th printing (last update 23 October 2011).
- Errata for 1st-5th printing (last update 26 January 2011).

Ada for Software Engineers.

John Wiley & Sons, 1998. ISBN 0-471-97912-0.

- Source code of case-studies and quizzes.
- Preface and Table of Contents.
- Errata.

Understanding Programming Languages.

John Wiley & Sons, 1996. ISBN 0-471-95846-8.

- Electronic edition for download
(including LaTeX source, program source, slides and instructors guide).

Copyright 2006 by M. Ben-Ari. This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. - Errata for the print edition. Thanks to Vsevolod Shtarkman (the Russian translator) for bringing many of these mistakes to my attention.

Principles of
Concurrent and Distributed Programming.

Prentice-Hall International, 1990. ISBN 0-13-711821-X.

- Source code of the examples.
- Preface and Table of Contents.
- Errata.

Mathematical Logic for Computer Science.

Prentice-Hall International, 1993. ISBN 0-13-564139-X.

Principles of Concurrent Programming.

Prentice-Hall International, 1982. ISBN 0-13-701078-8.