We use cookies to distinguish you from other users and to provide you with a better experience on our websites. Close this message to accept cookies or find out how to manage your cookie settings.
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 [email protected]
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.
Important concepts from the diverse fields of physics, mathematics, engineering and computer science coalesce in this foundational text on the cutting-edge field of quantum information. Designed for undergraduate and graduate students with any STEM background, and written by a highly experienced author team, this textbook draws on quantum mechanics, number theory, computer science technologies, and more, to delve deeply into learning about qubits, the building blocks of quantum information, and how they are used in quantum computing and quantum algorithms. The pedagogical structure of the chapters features exercises after each section as well as focus boxes, giving students the benefit of additional background and applications without losing sight of the big picture. Recommended further reading and answers to select exercises further support learning. Written in approachable and conversational prose, this text offers a comprehensive treatment of the exciting field of quantum information while remaining accessible to students and researchers within all STEM disciplines.
The global race to build the world's first quantum computer has attracted enormous investment from government and industry, and it attracts a growing pool of talent. As with many cutting-edge technologies, the optimal implementation is not yet settled. This important textbook describes four of the most advanced platforms for quantum computing: nuclear magnetic resonance, quantum optics, trapped ions, and superconducting systems. The fundamental physical concepts underpinning the practical implementation of quantum computing are reviewed, followed by a balanced analysis of the strengths and weaknesses inherent to each type of hardware. The text includes more than 80 carefully designed exercises with worked solutions available to instructors, applied problems from key scenarios, and suggestions for further reading, facilitating a practical and expansive learning experience. Suitable for senior undergraduate and graduate students in physics, engineering, and computer science, Building Quantum Computers is an invaluable resource for this emerging field.
The dramatic increase in computer performance has been extraordinary, but not for all computations: it has key limits and structure. Software architects, developers, and even data scientists need to understand how exploit the fundamental structure of computer performance to harness it for future applications. Ideal for upper level undergraduates, Computer Architecture for Scientists covers four key pillars of computer performance and imparts a high-level basis for reasoning with and understanding these concepts: Small is fast – how size scaling drives performance; Implicit parallelism – how a sequential program can be executed faster with parallelism; Dynamic locality – skirting physical limits, by arranging data in a smaller space; Parallelism – increasing performance with teams of workers. These principles and models provide approachable high-level insights and quantitative modelling without distracting low-level detail. Finally, the text covers the GPU and machine-learning accelerators that have become increasingly important for mainstream applications.
With this groundbreaking text, discover how wireless artificial intelligence (AI) can be used to determine position at centimeter level, sense motion and vital signs, and identify events and people. Using a highly innovative approach that employs existing wireless equipment and signal processing techniques to turn multipaths into virtual antennas, combined with the physical principle of time reversal and machine learning, it covers fundamental theory, extensive experimental results, and real practical use cases developed for products and applications. Topics explored include indoor positioning and tracking, wireless sensing and analytics, wireless power transfer and energy efficiency, 5G and next-generation communications, and the connection of large numbers of heterogeneous IoT devices of various bandwidths and capabilities. Demo videos accompanying the book online enhance understanding of these topics. Providing a unified framework for wireless AI, this is an excellent text for graduate students, researchers, and professionals working in wireless sensing, positioning, IoT, machine learning, signal processing and wireless communications.
Research Data Management (RDM) has become a professional topic of great importance internationally following changes in scholarship and government policies about the sharing of research data. Exploring Research Data Management provides an accessible introduction and guide to RDM with engaging tasks for the reader to follow and develop their knowledge. Starting by exploring the world of research and the importance and complexity of data in the research process, the book considers how a multi-professional support service can be created then examines the decisions that need to be made in designing different types of research data service from local policy creation, training, through to creating a data repository.
Intellectual property (IP) laws were drafted for tangible objects, but 3D printing technology, which digitizes objects and offers manufacturing capacity to anyone, is disrupting these laws and their underlying policies. In this timely work, Lucas S. Osborn focuses on the novel issues raised for IP law by 3D printing for the major IP systems around the world. He specifically addresses how patent and design law must wrestle with protecting digital versions of inventions and policing individualized manufacturing, how trademark law must confront the dissociation of design from manufacturing, and how patent and copyright law must be reconciled when digital versions of primarily utilitarian objects are concerned. With an even hand and keen insight, Osborn offers an innovation-centered analysis of and balanced response to the disruption caused by 3D printing that should be read by nonexperts and experts alike.
This introductory textbook provides students with a system-level perspective and the tools they need to understand, analyze and design digital systems. Going beyond the design of simple combinational and sequential modules, it shows how such modules are used to build complete systems, reflecting real-world digital design. All the essential topics are covered, including design and analysis of combinational and sequential modules, as well as system timing and synchronization. It also teaches how to write VHDL-2008 HDL in a productive and maintainable style that enables CAD tools to do much of the tedious work. A complete introduction to digital design is given through clear explanations, extensive examples and online VHDL files. The teaching package is completed with lecture slides, labs and a solutions manual for instructors. Assuming no previous digital knowledge, this textbook is ideal for undergraduate digital design courses that will prepare students for modern digital practice.
This textbook provides in-depth coverage of the fundamentals of the C and C++ programming languages and the object-oriented programming paradigm. It follows an example-driven approach to facilitate understanding of theoretical concepts. Essential concepts, including functions, arrays, pointers and inheritance, are explained, while complex topics, such as dynamic memory allocation, object slicing, vtables, and upcasting and downcasting, are examined in detail. Concepts are explained with the help of line diagrams, student-teacher conversations and flow charts, while other useful features, such as quiz questions and points to remember, are included. Solved examples, review questions and useful case studies are interspersed throughout the text, and explanations of the logic used to implement particular functionality is also provided. This book will be useful for undergraduate students of computer science and engineering, and information technology.
Do you need to know what technique to use to evaluate the reliability of an engineered system? This self-contained guide provides comprehensive coverage of all the analytical and modeling techniques currently in use, from classical non-state and state space approaches, to newer and more advanced methods such as binary decision diagrams, dynamic fault trees, Bayesian belief networks, stochastic Petri nets, non-homogeneous Markov chains, semi-Markov processes, and phase type expansions. Readers will quickly understand the relative pros and cons of each technique, as well as how to combine different models together to address complex, real-world modeling scenarios. Numerous examples, case studies and problems provided throughout help readers put knowledge into practice, and a solutions manual and Powerpoint slides for instructors accompany the book online. This is the ideal self-study guide for students, researchers and practitioners in engineering and computer science.
The constantly increasing demand for more computing power can seem impossible to keep up with. However, multicore processors capable of performing computations in parallel allow computers to tackle ever larger problems in a wide variety of applications. This book provides a comprehensive introduction to parallel computing, discussing theoretical issues such as the fundamentals of concurrent processes, models of parallel and distributed computing, and metrics for evaluating and comparing parallel algorithms, as well as practical issues, including methods of designing and implementing shared- and distributed-memory programs, and standards for parallel program implementation, in particular MPI and OpenMP interfaces. Each chapter presents the basics in one place followed by advanced topics, allowing novices and experienced practitioners to quickly find what they need. A glossary and more than 80 exercises with selected solutions aid comprehension. The book is recommended as a text for advanced undergraduate or graduate students and as a reference for practitioners.
Reliable performance evaluations require the use of representative workloads. This is no easy task since modern computer systems and their workloads are complex, with many interrelated attributes and complicated structures. Experts often use sophisticated mathematics to analyze and describe workload models, making these models difficult for practitioners to grasp. This book aims to close this gap by emphasizing the intuition and the reasoning behind the definitions and derivations related to the workload models. It provides numerous examples from real production systems, with hundreds of graphs. Using this book, readers will be able to analyze collected workload data and clean it if necessary, derive statistical models that include skewed marginal distributions and correlations, and consider the need for generative models and feedback from the system. The descriptive statistics techniques covered are also useful for other domains.
Tackling the questions that systems designers care about, this book brings queueing theory decisively back to computer science. The book is written with computer scientists and engineers in mind and is full of examples from computer systems, as well as manufacturing and operations research. Fun and readable, the book is highly approachable, even for undergraduates, while still being thoroughly rigorous and also covering a much wider span of topics than many queueing books. Readers benefit from a lively mix of motivation and intuition, with illustrations, examples and more than 300 exercises – all while acquiring the skills needed to model, analyze and design large-scale systems with good performance and low cost. The exercises are an important feature, teaching research-level counterintuitive lessons in the design of computer systems. The goal is to train readers not only to customize existing analyses but also to invent their own.
This textbook, based on the authors' fifteen years of teaching, is a complete teaching tool for turning students into logic designers in one semester. Each chapter describes new concepts, giving extensive applications and examples. Assuming no prior knowledge of discrete mathematics, the authors introduce all background in propositional logic, asymptotics, graphs, hardware and electronics. Important features of the presentation are:All material is presented in full detail. Every designed circuit is formally specified and implemented, the correctness of the implementation is proved, and the cost and delay are analyzedAlgorithmic solutions are offered for logical simulation, computation of propagation delay and minimum clock periodConnections are drawn from the physical analog world to the digital abstractionThe language of graphs is used to describe formulas and circuitsHundreds of figures, examples and exercises enhance understanding.The extensive website (http://www.eng.tau.ac.il/~guy/Even-Medina/) includes teaching slides, links to Logisim and a DLX assembly simulator.
Teaching fundamental design concepts and the challenges of emerging technology, this textbook prepares students for a career designing the computer systems of the future. In-depth coverage of complexity, power, reliability and performance, coupled with treatment of parallelism at all levels, including ILP and TLP, provides the state-of-the-art training that students need. The whole gamut of parallel architecture design options is explained, from core microarchitecture to chip multiprocessors to large-scale multiprocessor systems. All the chapters are self-contained, yet concise enough that the material can be taught in a single semester, making it perfect for use in senior undergraduate and graduate computer architecture courses. The book is also teeming with practical examples to aid the learning process, showing concrete applications of definitions. With simple models and codes used throughout, all material is made open to a broad range of computer engineering/science students with only a basic knowledge of hardware and software.
Improve design efficiency and reduce costs with this practical guide to formal and simulation-based functional verification. Giving you a theoretical and practical understanding of the key issues involved, expert authors including Wayne Wolf and Dan Gajski explain both formal techniques (model checking, equivalence checking) and simulation-based techniques (coverage metrics, test generation). You get insights into practical issues including hardware verification languages (HVLs) and system-level debugging. The foundations of formal and simulation-based techniques are covered too, as are more recent research advances including transaction-level modeling and assertion-based verification, plus the theoretical underpinnings of verification, including the use of decision diagrams and Boolean satisfiability (SAT).
This textbook provides a clear and concise introduction to computer architecture and implementation. Two important themes are interwoven throughout the book. The first is an overview of the major concepts and design philosophies of computer architecture and organization. The second is the early introduction and use of analytic modeling of computer performance. The author begins by describing the classic von Neumann architecture, and then presents in detail a number of performance models and evaluation techniques. He goes on to cover user instruction set design, including RISC architecture. A unique feature of the book is its memory-centric approach - memory systems are discussed before processor implementations. The author also deals with pipelined processors, input/output techniques, queuing modes, and extended instruction set architectures. Each topic is illustrated with reference to actual IBM and Intel architectures. The book contains many worked examples and over 130 homework exercises. It is an ideal textbook for a one-semester undergraduate course in computer architecture and implementation.
This book gives a comprehensive description of the architecture of microprocessors from simple in-order short pipeline designs to out-of-order superscalars. It discusses topics such as:The policies and mechanisms needed for out-of-order processing such as register renaming, reservation stations, and reorder buffers Optimizations for high performance such as branch predictors, instruction scheduling, and load-store speculationsDesign choices and enhancements to tolerate latency in the cache hierarchy of single and multiple processorsState-of-the-art multithreading and multiprocessing emphasizing single chip implementationsTopics are presented as conceptual ideas, with metrics to assess the performance impact, if appropriate, and examples of realization. The emphasis is on how things work at a black box and algorithmic level. The author also provides sufficient detail at the register transfer level so that readers can appreciate how design features enhance performance as well as complexity.
Device testing represents the single largest manufacturing expense in the semiconductor industry, costing over $40 billion a year. The most comprehensive and wide ranging book of its kind, Testing of Digital Systems covers everything you need to know about this vitally important subject. Starting right from the basics, the authors take the reader through automatic test pattern generation, design for testability and built-in self-test of digital circuits before moving on to more advanced topics such as IDDQ testing, functional testing, delay fault testing, memory testing, and fault diagnosis. The book includes detailed treatment of the latest techniques including test generation for various fault models, discussion of testing techniques at different levels of integrated circuit hierarchy and a chapter on system-on-a-chip test synthesis. Written for students and engineers, it is both an excellent senior/graduate level textbook and a valuable reference.
This new, expanded textbook describes all phases of a modern compiler: lexical analysis, parsing, abstract syntax, semantic actions, intermediate representations, instruction selection via tree matching, dataflow analysis, graph-coloring register allocation, and runtime systems. It includes good coverage of current techniques in code generation and register allocation, as well as functional and object-oriented languages, that are missing from most books. In addition, more advanced chapters are now included so that it can be used as the basis for two-semester or graduate course. The most accepted and successful techniques are described in a concise way, rather than as an exhaustive catalog of every possible variant. Detailed descriptions of the interfaces between modules of a compiler are illustrated with actual C header files. The first part of the book, Fundamentals of Compilation, is suitable for a one-semester first course in compiler design. The second part, Advanced Topics, which includes the advanced chapters, covers the compilation of object-oriented and functional languages, garbage collection, loop optimizations, SSA form, loop scheduling, and optimization for cache-memory hierarchies.
This textbook describes all phases of a compiler: lexical analysis, parsing, abstract syntax, semantic actions, intermediate representations, instruction selection via tree matching, dataflow analysis, graph-coloring register allocation, and runtime systems. It includes good coverage of current techniques in code generation and register allocation, as well as the compilation of functional and object-oriented languages, that is missing from most books. The most accepted and successful techniques are described concisely, rather than as an exhaustive catalog of every possible variant, and illustrated with actual Java classes. This second edition has been extensively rewritten to include more discussion of Java and object-oriented programming concepts, such as visitor patterns. A unique feature is the newly redesigned compiler project in Java, for a subset of Java itself. The project includes both front-end and back-end phases, so that students can build a complete working compiler in one semester.