This book explains how to build Natural Language Generation (NLG) systems--computer software systems that automatically generate understandable texts in English or other human languages. NLG systems use knowledge about language and the application...

Type theory is one of the most important tools in the design of higher-level programming languages, such as ML. This book introduces and teaches its techniques by focusing on one particularly neat system and studying it in detail. By concentrating on...

What makes some computers slow? What makes some digital systems operate reliably for years while others fail mysteriously every few hours? Why do some systems dissipate kilowatts while others operate off batteries? These questions of speed,...

Functional programming, is a style of programming that has become increasingly popular during the past few years. Applicative programs have the advantage of being almost immediately expressible as functional descriptions; they can be proved correct and...

Cryptography is concerned with the conceptualization, definition and construction of computing systems that address security concerns. This book presents a rigorous and systematic treatment of the foundational issues: defining cryptographic tasks and...

To make a computer do a calculation, however simple, you must describe every step of that calculation in a language the computer can understand: this description is called a program. This book presents a popular and widely available language called...

This is a textbook on graph theory, especially suitable for computer scientists but also suitable for mathematicians with an interest in computational complexity. Although it introduces most of the classical concepts of pure and applied graph theory...

This book describes the many ways that the mind and body are closely interrelated, and how human thought and language are fundamentally linked to bodily action. The embodied nature of mind is explored through many topics, such as perception, thinking,...

This textbook is an introduction to denotational semantics and its applications to programming languages. Dr Allison emphasizes a practical approach and the student is encouraged to write and test denotational definitions. The first section is devoted...

In recent years, Bayesian probability theory has emerged not only as a powerful tool for building computational theories of vision, but also as a general paradigm for studying human visual perception. This book provides an introduction to and critical...

Communication Complexity surveys this mathematical theory, concentrating on the question of how much communication is necessary for any particular process. The first part of the book is devoted to the simple two-party model introduced by Yao in 1979,...

This book shows how continuation-passing style is used as an intermediate representation to perform optimizations and program transformations. Continuations can be used to compile most programming languages. The method is illustrated in a compiler for...

Recent years have witnessed a dramatic increase of interest in sophisticated string matching problems, especially in information retrieval and computational biology. This book presents a practical approach to string matching problems, focusing on the...

In this provocative and ground-breaking book, Keith Devlin argues that in order to obtain a deeper understanding of the nature of intelligence and knowledge acquisition, we must broaden our concept of logic. Classical logic, beginning with the work of...

For many applications, a randomized algorithm is either the simplest or the fastest algorithm available, and sometimes both. This book introduces the basic concepts in the design and analysis of randomized algorithms. The first part of the text...

This textbook explains the basic principles of categorical type theory and the techniques used to derive categorical semantics for specific type theories. It introduces the reader to ordered set theory, lattices and domains, and this material provides...

What can computers do in principle? What are their inherent theoretical limitations? These are questions to which computer scientists must address themselves. The theoretical framework which enables such questions to be answered has been developed over...

Category Theory has, in recent years, become increasingly important and popular in computer science, and many universities now introduce Category Theory as part of the curriculum for undergraduate computer science students. Here, the theory is...

After an introduction to abstract data types and their initial implementation using structures, Michael McMillan analyzes standard OOP topics, including class design, inheritance, access modifiers and scoping issues, abstract classes, design and...

This version of the first edition of Numerical Recipes contains the original 200 routines translated into Pascal along with the tutorial text. In a single volume, Numerical Recipes in Pascal provides lucid, easy-to-read discussions of the most...