More details on each of the titles at the bottom of the page.

Click here to read / download Thousands of Free Ebooks on Robotics, Artificial Intelligence, Automation & Engineering
Click here to read / download Artificial and Computational Intelligence in Games
Click here to read / download Practical Artificial Intelligence Programming in Java
Click here to read / download Recent Advances in Face Recognition
Click here to read / download Machine Learning, Neural and Statistical Classification
Click here to read / download Design: Creation of Artifacts in Society
Click here to read / download The Boundaries of Humanity: Humans, Animals, Machines
Click here to read / download Reinforcement Learning: An Introduction
Click here to read / download Artificial Intelligence
Click here to read / download Implementing Mathematics with the Nuprl Proof Development System
Click here to read / download Computer Vision:Â Models, Learning, and Inference
Click here to read / download The Quest For Artificial Intelligence - A History Of Ideas And Achievements
Click here to read / download 37 Free Artificial Intelligence Courses
Click here to read / download A Gentle Guide to Constraint Logic Programming via ECLIPSE (3rd Edition)
Click here to read / download Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations (Rev 1.1)
Click here to read / download Simply Logical: Intelligent Reasoning by Example
Click here to read / download Artificial Intelligence Through Prolog
Click here to read / download Encyclopedia:Computational intelligence
Click here to read / download Global Optimization Algorithms: Theory and Application
Click here to read / download Automated Theorem Proving Handouts
Click here to read / download Proofs and Types
Click here to read / download Computer Vision: Algorithms and Applications
Click here to read / download Artificial Intelligence – Foundations of Computational Agents
Click here to read / download Logic for Computer Science – Foundations of Automatic Theorem Proving
Click here to read / download Computers & Thought: A Practical Introduction to Artificial Intelligence
Click here to read / download Essentials of Metaheuristics: A Set of Undergraduate Lecture Notes (2nd Edition)
Click here to read / download Computability and Complexity
Click here to read / download Artificial Intelligence and Molecular Biology
Click here to read / download From Bricks to Brains: The Embodied Cognitive Science of LEGO Robots
Click here to read / download Building Expert Systems in Prolog
Click here to read / download Artificial Intelligence and Responsive Optimization (2nd Edition)
Click here to read / download The Elements of Statistical Learning: Data Mining, Inference, and Prediction (2nd Edition)Thousands of Free Ebooks on Robotics, Artificial Intelligence, Automation & Engineering by – PDF, Online reading (HTML), Thousands of free ebooks

Collection of free ebooks covering robotics, numerical analysis & scientific computing, artificial intelligence, human-computer interaction, mobile robotics, electrical & electronic engineering, information & knowledge engineering, robotics & automation, biomedical engineering and control engineering.

The Quest For Artificial Intelligence – A History Of Ideas And Achievements by Nils J. Nilsson, Stanford University – PDF, 707 pages

Artificial intelligence (AI) may lack an agreed-upon definition, but someone writing about its history must have some kind of definition in mind. For me, artificial intelligence is that activity devoted to making machines intelligent, and intelligence is that quality that enables an entity to function appropriately and with foresight in its environment.

Artificial Intelligence – Foundations of Computational Agents by David Poole & Alan Mackworth – Online reading only (HTML / E-text), 16 chapters

This book is published by Cambridge University Press, 2010. The complete text and figures of the book are here, copyright David Poole and Alan Mackworth, 2010. The html is made available under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 Canada License. We hope that you enjoy reading the book and that you get excited about the development of artificial intelligence.

A Course in Machine Learning by Hal Daume III – PDF, 189 pages

The purpose of this book is to provide a gentle and pedagogically organized introduction to the field. This is in contrast to most existing machine learning texts, which tend to organize things topically, rather than pedagogically (an exception is Mitchell’s book, but unfortunately that is getting more and more outdated). This makes sense for researchers in the field, but less sense for learners. A second goal of this book is to provide a view of machine learning that focuses on ideas and models, not on math. It is not possible (or even advisable) to avoid math. But math should be there to aid understanding, not hinder it. Finally, this book attempts to have minimal dependencies, so that one can fairly easily pick and choose chapters to read. When dependencies exist, they are listed at the start of the chapter, as well as the list of dependencies at the end of this chapter.

Artificial and Computational Intelligence in Games by Simon M. Lucas, Michael Mateas, Mike Preuss, Pieter Spronck and Julian Togelius (Eds.) – PDF, 8 chapters, 121 pages

In May 2012, around 40 world-leading experts convened in Schloss Dagstuhl in Saarland, Southern Germany, to discuss future research directions and important research challenges for artificial and computational intelligence in games. The volume you are now reading is the follow-up volume to that seminar, which collects the distilled results of the discussions that went on during those May days. As organisers of the seminar and editors of the follow-up volume, it is our sincere hope that the chapters you are about to read will prove to be useful both as references for your existing research and as starting points for new research projects.

37 Free Artificial Intelligence Courses by – Online courses, 37 courses (Various formats)

LEARNfree, an IIMRA initiative, provides the most comprehensive list of Massive Online Open Courses (MOOC) and other free online courses. IIMRA’s LEARNfree is the largest web space focused on the free online course details. LEARNfree initiative was started on June 18, 2013. The ultimate aim of LEARNfree is to bring together the details of free courses, free audio and e-Books to a single page.

Logic for Computer Science – Foundations of Automatic Theorem Proving by Jean H. Gallier – PDF, 534 pages

This book is intended as an introduction to mathematical logic, with an emphasis on proof theory and procedures for constructing formal proofs of formulae algorithmically. This book is designed primarily for computer scientists, and more generally, for mathematically inclined readers interested in the formalization of proofs, and the foundations of automatic theorem-proving. The book is self contained, and the level corresponds to senior undergraduates and first year graduate students. However, there is enough material for at least a two semester course, and some Chapters (Chapters 6,7,9,10) contain material which could form the basis of seminars. It would be helpful, but not indispensable, if the reader has had an undergraduate-level course in set theory and/or modern algebra.

Planning Algorithms by Steven M. La Valle – PDF, 15 chapters, 512 pages

The text is written primarily for computer science and engineering students at the advanced-undergraduate or beginning-graduate level. It is also intended as an introduction to recent techniques for researchers and developers in robotics, artificial intelligence, and control theory. It is expected that the presentation here would be of interest to those working in other areas such as computational biology (drug design, protein folding), virtual prototyping, manufacturing, video game development, and computer graphics. Furthermore, this book is intended for those working in industry who want to design and implement planning approaches to solve their problems.

Practical Artificial Intelligence Programming in Java by Mark Watson – PDF, 7 chapters, 122 pages

This book was written for both professional programmers and home hobbyists who already know how to program in Java and who want to learn practical AI programming techniques. I have tried to make this a fun book to work through. In the style of a ‘cook book’, the chapters in this book can be studied in any order. Each chapter follows the same pattern: a motivation for learning a technique, some theory for the technique, and a Java example program that you can experiment with.

A Gentle Guide to Constraint Logic Programming via ECLIPSE (3rd Edition) by Antoni Niederlinski – PDF, 7 chapters, 545 pages

This is to be a painless introduction into an exciting software technology named Constraint Logic Programming, in the sequel abbreviated by CLP. Thebook aims to teach modeling decision problems and solving them using CLP. It addresses the needs of all interested in quickly finding feasible and optimum solutions to combinatorial and continuous decision problems using a well-established tool. It serves to create a basic foothold on CLP for all those wishing to get some operational experience of using it before eventually dwelling into more advanced realms of theory.

Computers & Thought: A Practical Introduction to Artificial Intelligence by Mike Sharples, David Hogg, Chris Hutchison, Steve Torrance & David Young – Online reading only (HTML / E-text), 9 chapters

The aim of this book is to introduce people with little or no computing background to artificial intelligence (AI) and cognitive science. It emphasizes the psychological, social, and philosophical implications of AI and, by means of an extended project to design an Automated Tourist Guide, makes the connection between the details of an AI programming language and the ‘magic’ of artificial intelligence programs, which converse in English, solve problems, and offer reasoned advice. The book covers computer simulation of human activities, such as problem solving and natural language understanding; computer vision; AI tools and techniques; an introduction to AI programming; symbolic and neural network models of cognition; the nature of mind and intelligence; and the social implications of AI and cognitive science.

COMMON LISP: A Gentle Introduction to Symbolic Computation by David S. Touretzky – PDF, 14 chapters, 587 pages

This book is about learning to program in Lisp. Although widely known as the principal language of artificial intelligence research-one of the most advanced areas of computer science-Lisp is an excellent language for beginners. It is increasingly the language of choice in introductory programming courses due to its friendly, interactive environment, rich data structures, and powerful software tools that even a novice can master in short order.

Recent Advances in Face Recognition by Kresimir Delac, Mislav Grgic & Marian Stewart Bartlett – PDF, 15 chapters, 246 pages

Face recognition is still a vividly researched area in computer sci ence. First attempts were made in early 1970-ies, but a real boom happened around 1988, parallel with a large increase in computational power. The first widely accepted algorithm of that time was the PCA or eigenfaces method, which even today is used not only as a benchmark method to compare new methods to, but as a base for many methods derived from the original idea.

Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations (Rev 1.1) by Yoav Shoham & Kevin Leyton-Brown – PDF, 14 chapters, 532 pages

The goal of this book is to bring under one roof a variety of ideas and techniques that provide foundations for modeling, reasoning about, and building multiagent systems. Somewhat strangely for a book that purports to be rigorous, we will not give a precise definition of a multiagent system. The reason is that many competing, mutually inconsistent answers have been offered in the past. For our purposes, the following loose definition will suffice: Multiagent systems are those systems that include multiple autonomous entities with either diverging information or diverging interests, or both.

Essentials of Metaheuristics: A Set of Undergraduate Lecture Notes (2nd Edition) by Sean Luke – PDF, 11 chapters, 253 pages

This is a set of lecture notes for an undergraduate class on metaheuristics. They were constructed for a course I taught in Spring of 2009, and I wrote them because, well, there’s a lack of undergraduate texts on the topic. As these are lecture notes for an undergraduate class on the topic, which is unusual, these notes have certain traits. First, they’re informal and contain a number of my own personal biases and misinformation. Second, they’are light on theory and examples: they’re mostly descriptions of algorithms and handwavy, intuitive explanations about why and where you’d want to use them. Third, they’re chock full of algorithms great and small. I think these notes would best serve as a complement to a textbook, but can also stand alone as rapid introduction to the field

Virtual Reality for Human Computer Interaction by Marc Erich Latoschik – PDF, 15 pages

Objects have been described so far by their spatial attributes position, location and shape (using vertices, surfaces and transformations).

Machine Learning, Neural and Statistical Classification by D. Michie, D. J. Spiegelhalter & C. C. Taylor – PDF, 13 chapters, 298 pages

The aim of this book is to pro vide an up-to-date review of different approaches to classification, compare their performance on a wide range of challenging data-sets, and draw conclusions on their applicability to realistic industrial problems. Before describing the contents, we first need to define what we mean by classification, give some background to the different perspectives on the task, and introduce the European Community StatLog project whose results form the basis for this book.

Simply Logical: Intelligent Reasoning by Example by Peter Flach – PDF, 9 chapters, 247 pages

This book ais to introduce the reader to a number of topics – logic, Artificial Intelligence and computer programming – that are usually treated as distinct subjects elsewhere. Not only does this book succeed in its aim, but it goes further than my own book by showing how to implement the theory in runnable Prolog programs. Both the theory and the programs are presented incrementally in a style which is both pedagogically sound and, perhaps even more importantly, teaches the reader by example how new ideas and their implementations can be developed by means of successive refinement.

Computability and Complexity by Jon Kleinberg & Christos Papadimitirou – PDF, 11 pages

Computation as a technology that follows its own laws; computation as the quintessence of universality; computation as a powerful perspective on the world and on science- these are issues that still drive our study of the phenomenon today. And the more we grapple with the underlying principles of computation, the more we see their reflections and imprints on all disciplines – in the way structured tasks can be cast as stylized computational activities; in the surprising complexity of simple systems; and in the rich and organic interplay between information and code.

AI Algorithms, Data Structures, and Idioms in Prolog, Lisp and Java by George F. Luger & William A. Subblefield – PDF, 32 chapters, 463 pages

This book is designed for three primary purposes. The first is as a programming language component of a general class in Artificial Intelligence. The second use of this book is for university classes exploring programming paradigms themselves. The third intent of this book is to offer the professional programmer the chance to continue their education through the exploration of multiple programming idioms, patterns, and paradigms.

Design: Creation of Artifacts in Society by Karl T. Ulrich – PDF, MOBI, EPUB, Calameo, 9 chapters

The word design presents definitional challenges. Designers tend to view their own particular sphere of activity as the universe of the human activity of designing. For example, one of the twelve schools at the University of Pennsylvania is the School of Design. The school does comprise two clearly recognizable design activities-architecture and urban design-but also fine arts and historic preservation. At the same time, the trade journal Design News, with a subscription base of 170,000, focuses quite narrowly on engineering design, a domain not included in Penn’s School of Design. I can’t think of another human endeavor with such confusing intellectual jurisdictions.

Artificial Intelligence Through Prolog by Neil C. Rowe – Online reading only (HTML / E-text), 15 chapters

Artificial intelligence is a hard subject to learn. I have written a book to make it easier. I explain difficult concepts in a simple, concrete way. I have organized the material in a new and (I feel) clearer way, a way in which the chapters are in a logical sequence and not just unrelated topics. I believe that with this book, readers can learn the key concepts of artificial intelligence faster and better than with other books. This book is intended for all first courses in artificial intelligence at the undergraduate or graduate level, requiring background of only a few computer science courses. It can also be used on one’s own.

Artificial Intelligence and Molecular Biology by Joshua Lederberg, edited by Lawrence Hunter – Online reading only (HTML / E-text), 13 chapters, 298 pages

Historically rich in novel, subtle, often controversial ideas, Molecular Biology has lately become heir to a huge legacy of standardized data in the form of polynucleotide and polypeptide sequences. Fred Sanger received two, well deserved Nobel Prizes for his seminal role in developing the basic technology needed for this reduction of core biological information to one linear dimension. With the explosion of recorded information, biochemists for the first time found it necessary to familiarize themselves with databases and the algorithms needed to extract the correlations of records, and in turn have put these to good use in the exploration of phylogenetic relationships, and in the applied tasks of hunting genes and their often valuable products. The formalization of this research challenge in the Human Genome Project has generated a new impetus in datasets to be analyzed and the funds to support that research.

Brief Introduction to Educational Implications of Artificial Intelligence by David Moursund – PDF, DOC, Online reading (HTML), 8 chapters

This book is designed to help preservice and inservice teachers learn about some of the educational implications of current uses of Artificial Intelligence as an aid to solving problems and accomplishing tasks. Humans and their predecessors have developed a wide range of tools to help solve the types of problems that they face. Such tools embody some of the knowledge and skills of those who discover, invent, design, and build the tools. Because of this, in some sense a tool user gains in knowledge and skill by learning to make use of tools. This document uses the term ‘toolâ’ in a very broad sense. It includes the stone ax, the flint knife, reading and writing, arithmetic and other math, the hoe and plough, the telescope, microscope, and other scientific instruments, the steam engine and steam locomotive, the bicycle, the internal combustion engine and automobile, and so on. It also includes the computer hardware, software, and connectivity that we lump together under the title Information and Communication Technology (ICT).

The Boundaries of Humanity: Humans, Animals, Machines by James J. Sheehan & Morton Sosna – Online reading only (HTML / E-text), 3 chapters

The essays in this volume grew out of a conference held at Stanford University in April 1987 under the auspices of the Stanford Humanities Center. The conference organizers had two goals. First, we wanted to address those recent developments in biological and computer research – namely, sociobiology and artificial intelligence – that are not normally seen as falling in the domain of the humanities but that have reopened important issues about human nature and identity. Second, we wanted to link related but usually separate discourses about humans and animals, on the ond hand, and humans and machines, on the other.

Encyclopedia:Computational intelligence by Dr. Eugene M. Izhikevich – Online reading only (HTML / E-text), Encyclopedia

Scholarpedia is a peer-reviewed open-access encyclopedia written and maintained by scholarly experts from around the world. Scholarpedia is inspired by Wikipedia and aims to complement it by providing in-depth scholarly treatments of academic topics.

From Bricks to Brains: The Embodied Cognitive Science of LEGO Robots by Michael R.W. Dawson, Brian Dupuis & Michael Wilson – PDF, 9 chapters, 354 pages

Accompanying this book is additional web support that provides pdf files of traditional, ‘wordless’ LEGO instructions for building robots, downloadable programs for controlling the robots that we describe, and videos that demonstrate robot behaviour.

Gaussian Processes for Machine Learning by Carl Edward Rasmussen and Christopher K. I. Williams – PDF, 9 chapters

Gaussian processes (GPs) provide a principled, practical, probabilistic approach to learning in kernel machines. GPs have received increased attention in the machine-learning community over the past decade, and this book provides a long-needed systematic and unified treatment of theoretical and practical aspects of GPs in machine learning. The treatment is comprehensive and self-contained, targeted at researchers and students in machine learning and applied statistics. The book deals with the supervised-learning problem for both regression and classification, and includes detailed algorithms. A wide variety of covariance (kernel) functions are presented and their properties discussed. Model selection is discussed both from a Bayesian and a classical perspective. Many connections to other well-known techniques from machine learning and statistics are discussed, including support-vector machines, neural networks, splines, regularization networks, relevance vector machines and others. Theoretical issues including learning curves and the PAC-Bayesian framework are treated, and several approximation methods for learning with large datasets are discussed. The book contains illustrative examples and exercises, and code and datasets are available on the Web. Appendixes provide mathematical background and a discussion of Gaussian Markov processes.

Reinforcement Learning: An Introduction by Richard S. Sutton and Andrew G. Barto – Online reading only (HTML / E-text), 3 chapters

Our goal in writing this book was to provide a clear and simple account of the key ideas and algorithms of reinforcement learning. We wanted our treatment to be accessible to readers in all of the related disciplines, but we could not cover all of these perspectives in detail. Our treatment takes almost exclusively the point of view of artificial intelligence and engineering, leaving coverage of connections to psychology, neuroscience, and other fields to others or to another time. We also chose not to produce a rigorous formal treatment of reinforcement learning. We did not reach for the highest possible level of mathematical abstraction and did not rely on a theorem-proof format. We tried to choose a level of mathematical detail that points the mathematically inclined in the right directions without distracting from the simplicity and potential generality of the underlying ideas.

Global Optimization Algorithms: Theory and Application by Thomas Weise – PDF, 9 chapters, 820 pages

This e-book is devoted to global optimization algorithms, which are methods to find optimal solutions for given problems. It especially focuses on Evolutionary Computation by discussing evolutionary algorithms, genetic algorithms, Genetic Programming, Learning Classi- fier Systems, Evolution Strategy, Differential Evolution, Particle Swarm Optimization, and Ant Colony Optimization. It also elaborates on other metaheuristics like Simulated Annealing, Extremal Optimization, Tabu Search, and Random Optimization. The book is no book in the conventional sense: Because of frequent updates and changes, it is not really intended for sequential reading but more as some sort of material collection, encyclopedia, or reference work where you can look up stuff, find the correct context, and are provided with fundamentals.

Building Expert Systems in Prolog by Springer-Verlag – Online reading only (HTML / E-text), 12 chapters

Prolog is a programmer’s and software engineer’s dream. It is compact, highly readable, and arguably the ‘most strucutred’ languae of them all. Not only has it done away with virtually all control flow statements, but even explicit variable assignment, too!

Introduction to Machine Learning: Draft of Incomplete Notes by Nils J. Nilsson  – PDF, 12 chapters, 188 pages

From this site you can download a draft of notes I used for a Stanford course on Machine Learning. Although I have tried to eliminate errors, some undoubtedly remain—caveat lector. Certain elements of the typography (overflow into margins, etc.) have not been polished. The notes survey many of the important topics in machine learning circa the late 1990s. My intention was to pursue a middle ground between theory and practice. The notes concentrate on the important ideas in machine learning—it is neither a handbook of practice nor a compendium of theoretical proofs. My goal was to give the reader sufficient preparation to make some of the extensive literature on machine learning accessible. The draft is just over 200 pages (including front matter). There have been many important developments in machine learning (especially using various versions of neural networks operating on large data sources) since these notes were written. A modern course in machine learning would include much of the material in these notes and a good deal more.

Artificial Intelligence by Patrick Winston – Online course, Video (RM), 4 chapters

An quick overview of AI from both the technical and the philosophical points of view. Topics discussed include search, A*, Knowledge Representation, Neural Nets.

Automated Theorem Proving Handouts by Frank Pfenning – PDF, PS (Postscript), 7 chapters

Logic is a science studying the principles of reasoning and valid inference. Automated deduction is concerned with the mechanization of formal reasoning, following the laws of logic. The roots of the field go back to the end of the last century when Frege developed his Begriffsschrift, the first comprehensive effort to develop a formal language suitable as a foundation for mathematics.

Artificial Intelligence and Responsive Optimization (2nd Edition) by M. Khoshnevisan, S. Bhattacharya & F. Smarandache – PDF, 87 pages

The purpose of this book is to apply the Artificial Intelligence and control systems to different real models.

Programming in Martin-Lof’s Type Theory: An Introduction by Bengt Nordstrom, Kent Petersson & Jan M. Smith – PDF, PS (Postscript), 23 chapters, 211 pages

This book describes different type theories (theories of types, polymorphic and monomorphic sets, and subsets) from a computing science perspective. It is intended for researchers and graduate students with an interest in the foundations of computing science, and it is mathematically self-contained.

Implementing Mathematics with the Nuprl Proof Development System by RL Constable, SF Allen, HM Bromley, WR Cleaveland, JF Cremer, RW Harper, DJ Howe, TB Knoblock, NP Mendler, P Panangaden, JT Sasaki & SF Smith – Online reading only (HTML / E-text), 14 chapters

Problem solving is a significant part of science and mathematics and is the most intellectually significant part of programming. Solving a problem involves understanding the problem, analyzing it, exploring possible solutions, writing notes about intermediate results, reading about relevant methods, checking results, and eventually assembling a solution. Nuprl is a computer system which provides assistance with this activity. It supports the interactive creation of proofs, formulas, and terms in a formal theory of mathematics; with it one can express concepts associated with definitions, theorems, theories, books and libraries. Moreover, the theory is sensitive to the computational meaning of terms, assertions and proofs, and the system can carry out the actions used to define that computational meaning. Thus Nuprl includes a programming languages, but in a broader sense it is a system for implementing mathematics.

Proofs and Types by Jean-Yves Girard, Paul Taylor & Yves Lafont – PDF, 183 pages

This little book comes from a short graduate course on typed ?-calculus given at the Universit’e Paris VII in the autumn term of 1986-7. It is not intended to be encyclopedic – the Church-Rosser theorem, for instance, is not proved – and the selection of topics was really quite haphazard. Some very basic knowledge of logic is needed, but we will never go into tedious details. Some book in proof theory, such as [Gir], may be useful afterwards to complete the information on those points which are lacking.

The Elements of Statistical Learning: Data Mining, Inference, and Prediction (2nd Edition) by Trevor Hastie, Robert Tibshirani & Jerome Friedman – PDF, 763 pages

During the past decade has been an explosion in computation and information technology. With it has come vast amounts of data in a variety of fields such as medicine, biology, finance, and marketing. The challenge of understanding these data has led to the development of new tools in the field of statistics, and spawned new areas such as data mining, machine learning, and bioinformatics. Many of these tools have common underpinnings but are often expressed with different terminology. This book descibes the important ideas in these areas in a common conceptual framework.

A Brief Introduction to Neural Networks by D. Kriesel – PDF, 244 pages (English & German)

Neural networks are a bio-inspired mechanism of data processing, that enables computers to learn technically similar to a brain and even generalize once solutions to enough problem instances are tought.

Computer Vision:  Models, Learning, and Inference by Simon J.D. Prince – PDF (Students), PPT, PDF, SVG (Teachers), 665 pages

‘With clarity and depth, this book introduces the mathematical foundations of probabilistic models for computer vision, all with well-motivated, concrete examples and applications. Most modern computer vision texts focus on visual tasks; Prince’s beautiful new book is natural complement, focusing squarely on fundamental techniques, emphasizing models and associated methods for learning and inference.’ – David J. Fleet, University of Toronto

Computer Vision: Algorithms and Applications by Richard Szeliski – PDF, 14 chapters, 979 pages

This book also reflects the author’s 20 years’ experience doing computer vision research in corporate research labs, mostly at Digital Equipment Corporation’s Cambridge Research Lab and at Microsoft Research. In pursuing his work, he has mostly focused on problems and solution techniques (algorithms) that have practical real-world applications and that work well in practice. Thus, this book has more emphasis on basic techniques that work under real-world conditions and less on more esoteric mathematics that has intrinsic elegance but less practical applicability.