by Krysia Broda et al
Publisher: Prentice Hall Trade 1994
Number of pages: 311
The book is divided into two complementary parts, the first on Programming and the second on Logic. Though they are both about logical reasoning, the first half concerns the ideas about programs that the reasoning is intended to capture, while the second half is more about the formal machinery. The distinction is somewhat analogous to that often seen in books about programming languages a first part is an introduction to programming using the language, and a second part is a formal report on it. To read the book from scratch, one would most likely read the two parts in parallel, and this is in fact how the material was used for the computer science course at Imperial College. However, the division into two reasonably disjoint parts means that people who already have some background in logic can see the programming story told without interruption.
Home page url
Download or read it online for free here:
by Tobias Nipkow, Gerwin Klein - Springer
The book teaches the reader the art of precise logical reasoning and the practical use of a proof assistant as a tool for formal proofs about computer science artefacts. All the mathematics is formalised in Isabelle and much of it is executable.
by William R. Cook - UT Austin
This document is a series of notes about programming languages, originally written for students of the undergraduate programming languages course at UT. It assumes knowledge of programming, and in particular assume basic knowledge of Haskell.
by Noah D. Goodman, Andreas Stuhlmüller - dippl.org
by Harold Abelson, Gerald Jay Sussman, Julie Sussman - McGraw-Hill
The book teaches how to program by employing the tools of abstraction and modularity. The central philosophy is that programming is the task of breaking large problems into small ones. You will learn how to program and how to think about programming.