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.
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.
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.
This is an introductory textbook on the use of the Spin Model Checker for modeling and verifying concurrent and distributed systems.
Tools for learning model checking and Spin:
Principles of Concurrent and Distributed Programming (Second edition).
Addison-Wesley, 2006. ISBN 0-321-31283-X.
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.