To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
Recent years have seen the development of powerful tools for verifying hardware and software systems, as companies worldwide realise the need for improved means of validating their products. There is increasing demand for training in basic methods in formal reasoning so that students can gain proficiency in logic-based verification methods. The second edition of this successful textbook addresses both those requirements, by continuing to provide a clear introduction to formal reasoning which is both relevant to the needs of modern computer science and rigorous enough for practical application. Improvements to the first edition have been made throughout, with extra and expanded sections on SAT solvers, existential/universal second-order logic, micro-models, programming by contract and total correctness. The coverage of model-checking has been substantially updated. Further exercises have been added. Internet support for the book includes worked solutions for all exercises for teachers, and model solutions to some exercises for students.
This book was first published in 2003. Combinatorica, an extension to the popular computer algebra system Mathematica®, is the most comprehensive software available for teaching and research applications of discrete mathematics, particularly combinatorics and graph theory. This book is the definitive reference/user's guide to Combinatorica, with examples of all 450 Combinatorica functions in action, along with the associated mathematical and algorithmic theory. The authors cover classical and advanced topics on the most important combinatorial objects: permutations, subsets, partitions, and Young tableaux, as well as all important areas of graph theory: graph construction operations, invariants, embeddings, and algorithmic graph theory. In addition to being a research tool, Combinatorica makes discrete mathematics accessible in new and exciting ways to a wide variety of people, by encouraging computational experimentation and visualization. The book contains no formal proofs, but enough discussion to understand and appreciate all the algorithms and theorems it contains.
The Internet and World Wide Web have revolutionized access to information. Users now store information across multiple platforms from personal computers to smartphones and websites. As a consequence, data management concepts, methods and techniques are increasingly focused on distribution concerns. Now that information largely resides in the network, so do the tools that process this information. This book explains the foundations of XML with a focus on data distribution. It covers the many facets of distributed data management on the Web, such as description logics, that are already emerging in today's data integration applications and herald tomorrow's semantic Web. It also introduces the machinery used to manipulate the unprecedented amount of data collected on the Web. Several 'Putting into Practice' chapters describe detailed practical applications of the technologies and techniques. The book will serve as an introduction to the new, global, information systems for Web professionals and master's level courses.
Shimon Even's Graph Algorithms, published in 1979, was a seminal introductory book on algorithms read by everyone engaged in the field. This thoroughly revised second edition, with a foreword by Richard M. Karp and notes by Andrew V. Goldberg, continues the exceptional presentation from the first edition and explains algorithms in a formal but simple language with a direct and intuitive presentation. The book begins by covering basic material, including graphs and shortest paths, trees, depth-first-search and breadth-first search. The main part of the book is devoted to network flows and applications of network flows, and it ends with chapters on planar graphs and testing graph planarity.
The multidisciplinary field of quantum computing strives to exploit some of the uncanny aspects of quantum mechanics to expand our computational horizons. Quantum Computing for Computer Scientists takes readers on a tour of this fascinating area of cutting-edge research. Written in an accessible yet rigorous fashion, this book employs ideas and techniques familiar to every student of computer science. The reader is not expected to have any advanced mathematics or physics background. After presenting the necessary prerequisites, the material is organized to look at different aspects of quantum computing from the specific standpoint of computer science. There are chapters on computer architecture, algorithms, programming languages, theoretical computer science, cryptography, information theory, and hardware. The text has step-by-step examples, more than two hundred exercises with solutions, and programming drills that bring the ideas of quantum computing alive for today's computer science students and researchers.
Discrete optimization problems are everywhere, from traditional operations research planning (scheduling, facility location and network design); to computer science databases; to advertising issues in viral marketing. Yet most such problems are NP-hard; unless P = NP, there are no efficient algorithms to find optimal solutions. This book shows how to design approximation algorithms: efficient algorithms that find provably near-optimal solutions. The book is organized around central algorithmic techniques for designing approximation algorithms, including greedy and local search algorithms, dynamic programming, linear and semidefinite programming, and randomization. Each chapter in the first section is devoted to a single algorithmic technique applied to several different problems, with more sophisticated treatment in the second section. The book also covers methods for proving that optimization problems are hard to approximate. Designed as a textbook for graduate-level algorithm courses, it will also serve as a reference for researchers interested in the heuristic solution of discrete optimization problems.
Numerical Methods in Engineering with Python is a text for engineering students and a reference for practicing engineers, especially those who wish to explore the power and efficiency of Python. Examples and applications were chosen for their relevance to real world problems, and where numerical solutions are most efficient. Numerical methods are discussed thoroughly and illustrated with problems involving both hand computation and programming. Computer code accompanies each method and is available on the book web site. This code is made simple and easy to understand by avoiding complex bookkeeping schemes, while maintaining the essential features of the method. Python was chosen as the example language because it is elegant, easy to learn and debug, and its facilities for handling arrays are unsurpassed. Moreover, it is an open-source software package; free and available to all students and engineers. Explore numerical methods with Python, a great language for teaching scientific computation.
Where did SARS come from? Have we inherited genes from Neanderthals? How do plants use their internal clock? The genomic revolution in biology enables us to answer such questions. But the revolution would have been impossible without the support of powerful computational and statistical methods that enable us to exploit genomic data. Many universities are introducing courses to train the next generation of bioinformaticians: biologists fluent in mathematics and computer science, and data analysts familiar with biology. This readable and entertaining book, based on successful taught courses, provides a roadmap to navigate entry to this field. It guides the reader through key achievements of bioinformatics, using a hands-on approach. Statistical sequence analysis, sequence alignment, hidden Markov models, gene and motif finding and more, are introduced in a rigorous yet accessible way. A companion website provides the reader with Matlab-related software tools for reproducing the steps demonstrated in the book.
What makes some computers slow? Why do some digital systems operate reliably for years while others fail mysteriously every few hours? How can some systems dissipate kilowatts while others operate off batteries? These questions of speed, reliability, and power are all determined by the system-level electrical design of a digital system. Digital Systems Engineering presents a comprehensive treatment of these topics. It combines a rigorous development of the fundamental principles in each area with real-world examples of circuits and methods. The book not only serves as an undergraduate textbook, filling the gap between circuit design and logic design, but can also help practising digital designers keep pace with the speed and power of modern integrated circuits. The techniques described in this book, once used only in supercomputers, are essential to the correct and efficient operation of any type of digital system.
The theory of finite fields is a branch of modern algebra that has come to the fore in recent years because of its diverse applications in such areas as combinatorics, coding theory, cryptology and the mathematical study of switching circuits. The first part of this updated edition presents an introduction to this theory, emphasising those aspects that are relevant for application. The second part is devoted to a discussion of the most important applications of finite fields, especially to information theory, algebraic coding theory and cryptology. There is also a chapter on applications within mathematics, such as finite geometries, combinatorics and pseudo-random sequences. The book is meant to be used as a textbook: worked examples and copious exercises that range from the routine, to those giving alternative proofs of key theorems, to extensions of material covered in the text, are provided throughout. It will appeal to advanced undergraduates and graduate students taking courses on topics in algebra, whether they have backgrounds in mathematics, electrical engineering or computer science. Non-specialists will also find this a readily accessible introduction to an active and increasingly important subject.
This complete introduction to two-dimensional (2-D) information theory and coding provides the key techniques for modeling data and estimating their information content. Throughout, special emphasis is placed on applications to transmission, storage, compression, and error protection of graphic information. The book begins with a self-contained introduction to information theory, including concepts of entropy and channel capacity, which requires minimal mathematical background knowledge. It then introduces error-correcting codes, particularly Reed-Solomon codes, the basic methods for error-correction, and codes applicable to data organized in 2-D arrays. Common techniques for data compression, including compression of 2-D data based on application of the basic source coding, are also covered, together with an advanced chapter dedicated to 2-D constrained coding for storage applications. Numerous worked examples illustrate the theory, whilst end-of-chapter exercises test the reader's understanding, making this an ideal book for graduate students and also for practitioners in the telecommunications and data storage industries.
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 to the mathematical foundations of the subject and sufficient detail is given to illustrate the fundamental problems. The remainder of the book covers the use of denotational semantics to describe sequential programming languages such as Algol, Pascal and C. Throughout, numerous exercises, usually in Pascal, will help the student practise writing definitions and carry out simple applications. The book culminates in discussing an executable semantics of the logic-programming language Prolog. Being an introduction, advanced undergraduates in computer science and graduates new to the subject will find this a readily accessible account of one of the central topics of computer science.
Wireless technology is a truly revolutionary paradigm shift, enabling multimedia communications between people and devices from any location. It also underpins exciting applications such as sensor networks, smart homes, telemedicine, and automated highways. This book provides a comprehensive introduction to the underlying theory, design techniques and analytical tools of wireless communications, focusing primarily on the core principles of wireless system design. The book begins with an overview of wireless systems and standards. The characteristics of the wireless channel are then described, including their fundamental capacity limits. Various modulation, coding, and signal processing schemes are then discussed in detail, including state-of-the-art adaptive modulation, multicarrier, spread spectrum, and multiple antenna techniques. The concluding chapters deal with multiuser communications, cellular system design, and ad-hoc network design. Design insights and tradeoffs are emphasized throughout the book. It contains many worked examples, over 200 figures, almost 300 homework exercises, over 700 references, and is an ideal textbook for students.
Distributed algorithms have been the subject of intense development over the last twenty years. The second edition of this successful textbook provides an up-to-date introduction both to the topic, and to the theory behind the algorithms. The clear presentation makes the book suitable for advanced undergraduate or graduate courses, whilst the coverage is sufficiently deep to make it useful for practising engineers and researchers. The author concentrates on algorithms for the point-to-point message passing model, and includes algorithms for the implementation of computer communication networks. Other key areas discussed are algorithms for the control of distributed applications (wave, broadcast, election, termination detection, randomized algorithms for anonymous networks, snapshots, deadlock detection, synchronous systems), and fault-tolerance achievable by distributed algorithms. The two new chapters on sense of direction and failure detectors are state-of-the-art and will provide an entry to research in these still-developing topics.
This concise introduction to model theory begins with standard notions and takes the reader through to more advanced topics such as stability, simplicity and Hrushovski constructions. The authors introduce the classic results, as well as more recent developments in this vibrant area of mathematical logic. Concrete mathematical examples are included throughout to make the concepts easier to follow. The book also contains over 200 exercises, many with solutions, making the book a useful resource for graduate students as well as researchers.
With billions of computers in existence, cyberspace, 'the virtual world created when they are connected,' is said to be the new medium of power. Computer hackers operating from anywhere can enter cyberspace and take control of other people's computers, stealing their information, corrupting their workings, and shutting them down. Modern societies and militaries, both pervaded by computers, are supposedly at risk. As Conquest in Cyberspace explains, however, information systems and information itself are too easily conflated, and persistent mastery over the former is difficult to achieve. The author also investigates how far 'friendly conquest' in cyberspace extends, such as the power to persuade users to adopt new points of view. He discusses the role of public policy in managing cyberspace conquests and shows how the Internet is becoming more ubiquitous and complex, such as in the use of artificial intelligence.
Iterative error correction codes have found widespread application in cellular communications, digital video broadcasting and wireless LANs. This self-contained treatment of iterative error correction presents all the key ideas needed to understand, design, implement and analyse these powerful codes. Turbo, low-density parity-check, and repeat-accumulate codes are given equal, detailed coverage, with precise presentations of encoding and decoding procedures. Worked examples are integrated into the text to illuminate each new idea and pseudo-code is included for important algorithms to facilitate the reader's development of the techniques described. For each subject, the treatment begins with the simplest case before generalizing. There is also coverage of advanced topics such as density-evolution and EXIT charts for those readers interested in gaining a deeper understanding of the field. This text is ideal for graduate students in electrical engineering and computer science departments, as well as practitioners in the communications industry.
Digital signal processing lies at the heart of the communications revolution and is an essential element of key technologies such as mobile phones and the Internet. This book covers all the major topics in digital signal processing (DSP) design and analysis, supported by MatLab examples and other modelling techniques. The authors explain clearly and concisely why and how to use digital signal processing systems; how to approximate a desired transfer function characteristic using polynomials and ratio of polynomials; why an appropriate mapping of a transfer function on to a suitable structure is important for practical applications; and how to analyse, represent and explore the trade-off between time and frequency representation of signals. An ideal textbook for students, it will also be a useful reference for engineers working on the development of signal processing systems.
Neurons in the brain communicate by short electrical pulses, the so-called action potentials or spikes. How can we understand the process of spike generation? How can we understand information transmission by neurons? What happens if thousands of neurons are coupled together in a seemingly random network? How does the network connectivity determine the activity patterns? And, vice versa, how does the spike activity influence the connectivity pattern? These questions are addressed in this 2002 introduction to spiking neurons aimed at those taking courses in computational neuroscience, theoretical biology, biophysics, or neural networks. The approach will suit students of physics, mathematics, or computer science; it will also be useful for biologists who are interested in mathematical modelling. The text is enhanced by many worked examples and illustrations. There are no mathematical prerequisites beyond what the audience would meet as undergraduates: more advanced techniques are introduced in an elementary, concrete fashion when needed.
This is an introduction to programming using Microsoft's Visual Basic.NET 2010, intended for novice programmers with little or no programming experience or no experience with Visual Basic. The text emphasizes programming logic and good programming techniques with generous explanations of programming concepts written from a non-technical point of view. It stresses input, processing, and output and sequence, selection, and repetition in code development. File I/O and arrays are included. Later chapters introduce objects, event programming, and databases. By taking a slow and steady approach to programming ideas, this book builds new concepts from what the reader has already learned. VB tips and quips inject both humor and insight. The book includes numerous programming examples and exercises, case studies, tutorials, and 'fixing a program' sections for an in-depth look at programming problems and tools. Quizzes and review questions throughout each chapter get students to think about the materials and how to use them. Each chapter has a summary and glossary for extra review. The accompanying website, www.cambridge.org/us/McKeown, has code downloads, I/O, and database files from small, simple files to large files with thousands of records, flowcharts, deskchecks and audits to aid with program design, coding, and debugging; PowerPoint files for every chapter; and hundreds of ideas for programs and projects.