Mathematical Surprises

This book presents a selection of surprising topics in mathematics: the formalization of origami, little-known constructions with straightedge and compass, the five- and six-color theorems and a taste of Ramsey theory. The highlight of the book is a detailed presentation of Gauss's purely algebraic proof that a regular heptadecagon (a regular polygon with seventeen sides) can be constructed with straightedge and compass.

  • Download PDF from Springer.
  • Download LaTeX source from GitHub.

Elements of Robotics

Mordechai Ben-Ari and Francesco Mondada.

Springer, 2017, ISBN 978-3-319-62533-1, ISBN 978-3-319-62532-4.

The book focuses on robotic algorithms: odometry, feedback control, localization, mapping, image processing, machine learning and swarm robotics. These algorithms are demonstrated in simplified contexts that enable detailed computations to be performed. The theory is supplemented with over 100 activities, most of which can be successfully implemented using inexpensive educational robots.

Mathematical Logic for Computer Science (Third edition)

Springer, 2012, ISBN 978-1-4471-4128-0.

This book is about mathematical logic that has applications in computer science: tableaux, SAT solving and model checking. 

  • Prolog implementation of the algorithms on GitHub.
  • LearnSAT is a software program for learning SAT solving.

Principles of Concurrent and Distributed Programming (Second edition)

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

An introduction to concurrent and distributed algorithms that use the synchronization primitives: semaphores, monitors, channels, rendezvous, spaces and token passing.  Another major topic is verification using deductive methods, temporal logic and model checking. 

  • Source code of the example programs on GitHub.

Computer Science Concepts in Scratch

Michal Armoni and Moti Ben-Ari.

Weizmann Institute of Science, 2010.

This textbook presents concepts of computer science using Scratch, where each concept is introduced through a sequence of tasks. An archive containing about 150 programs in Scratch can be freely download.

English website.
Hebrew website.

Ada for Software Engineers (Second Edition with Ada 2005)

Springer, 2009. ISBN 978-1-84882-313-6.

Ada for Software Engineers teaches the language 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 features from Ada 2005. 

  • Source code of the case studies and the quizzes on GitHub.

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.

The following may be found on GitHub:

  • Document with update for Spin 6.
  • Source code of the Promela programs.
  • Source code of the Promela programs for the Erigone Model Checker.

Just a Theory: Exploring the Nature of Science

Prometheus Books, 2005. ISBN 1-59102-285-1.

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

Books out of print

  • Mathematical Logic for Computer Science (Second Edition)
  • Ada for Software Engineers
  • Understanding Programming Languages
  • Principles of Concurrent and Distributed Programming
  • Mathematical Logic for Computer Science
  • Principles of Concurrent Programming