The Theme on Computer Science and Engineering provides the essential aspects and fundamentals of Hardware Architectures, Software Architectures, Algorithms and Data Structures, Programming Languages and Computer Security. It is aimed at the following five major target audiences: University and College students Educators, Professional practitioners, Research personnel and Policy analysts, managers, and decision makers.
Zainalabedin Navabi is a professor of Electrical and Computer Engineering at the University of Tehran, and an adjunct professor at Worcester Polytechnic Institute. Dr. Navabi is the author of several textbooks and computer based trainings on VHDL, Verilog and related tools and environments. Dr. Navabi’s involvement with hardware description languages begins in 1976, when he started the development of a register-transfer level simulator for one of the very first HDLs. In 1981 he completed the development of a synthesis tool that generated MOS layout from an RTL description. Since 1981, Dr. Navabi has been involved in the design, definition and implementation of Hardware Description Languages. He has written numerous papers on the application of HDLs in simulation, synthesis and test of digital systems. He started one of the first full HDL courses at Northeastern University in 1990. Since then he has conducted many short courses and tutorials on this subject in the United States, Europe and Asia. Since early 1990’s he has been involved in developing, producing, and broadcasting online and video lectures on HDLs, Digital System Test, and various aspects of automated design. In addition to being a professor, he is also a consultant to CAE companies. Dr. Navabi received his M.S. and Ph.D. from the University of Arizona in 1978 and 1981, and his B.S. from the University of Texas at Austin in 1975. He is a senior member of IEEE, a member of IEEE Computer Society, member of ASEE, and ACM.
Kaeli received his Ph.D. in Electrical Engineering from Rutgers University in 1992. He received his M.S. in Computer Engineering from Syracuse University in 1985 and a B.S. in Electrical Engineering from Rutgers University in 1981.He has a courtesy appointment in the College of Computer and Information Science at Northeastern, and a honorary professorship from City University of London, UK. For the 2001-2002 academic year he spent a year as a Visiting Professor at the Departament of d'Arquitectura de Computadors at the Universitat Politecnica de Catalunya. Prior to joining Northeastern, Dr. Kaeli spent 12 years working at IBM and IBM Research.
Topics include:The pros and cons of braced initialization, noexcept specifications, perfect forwarding, and smart pointer make functionsThe relationships among std::move, std::forward, rvalue references, and universal referencesTechniques for writing clear, correct, effective lambda expressionsHow std::atomic differs from volatile, how each should be used, and how they relate to C++'s concurrency APIHow best practices in "old" C++ programming (i.e., C++98) require revision for software development in modern C++
Effective Modern C++ follows the proven guideline-based, example-driven format of Scott Meyers' earlier books, but covers entirely new material.
"After I learned the C++ basics, I then learned how to use C++ in production code from Meyer's series of Effective C++ books. Effective Modern C++ is the most important how-to book for advice on key guidelines, styles, and idioms to use modern C++ effectively and well. Don't own it yet? Buy this one. Now".
-- Herb Sutter, Chair of ISO C++ Standards Committee and C++ Software Architect at Microsoft
Prolific hacker and author Simon Monk also teaches basic principles to help you use new technologies with Raspberry Pi as its ecosystem continues to develop. This cookbook is ideal for programmers and hobbyists familiar with the Pi through resources, including Getting Started with Raspberry Pi (O’Reilly). Python and other code examples from the book are available on GitHub.Set up your Raspberry Pi and connect to a networkWork with its Linux-based operating systemProgram Raspberry Pi with PythonGive your Pi "eyes" with computer visionControl hardware through the GPIO connectorUse Raspberry Pi to run different types of motorsWork with switches, keypads, and other digital inputsUse sensors to measure temperature, light, and distanceConnect to IoT devices in various waysCreate dynamic projects with Arduino
Heterogeneous Computing with OpenCL 2.0teaches OpenCL and parallel programming for complex systems that may include a variety of device architectures: multi-core CPUs, GPUs, and fully-integrated Accelerated Processing Units (APUs). This fully-revised edition includes the latest enhancements in OpenCL 2.0 including:
• Shared virtual memory to increase programming flexibility and reduce data transfers that consume resources • Dynamic parallelism which reduces processor load and avoids bottlenecks • Improved imaging support and integration with OpenGL
Designed to work on multiple platforms, OpenCL will help you more effectively program for a heterogeneous future. Written by leaders in the parallel computing and OpenCL communities, this book explores memory spaces, optimization techniques, extensions, debugging and profiling. Multiple case studies and examples illustrate high-performance algorithms, distributing work across heterogeneous systems, embedded domain-specific languages, and will give you hands-on OpenCL experience to address a range of fundamental parallel algorithms.Updated content to cover the latest developments in OpenCL 2.0, including improvements in memory handling, parallelism, and imaging support Explanations of principles and strategies to learn parallel programming with OpenCL, from understanding the abstraction models to thoroughly testing and debugging complete applications Example code covering image analytics, web plugins, particle simulations, video editing, performance optimization, and more
Designed to work on multiple platforms and with wide industry support, OpenCL will help you more effectively program for a heterogeneous future. Written by leaders in the parallel computing and OpenCL communities, Heterogeneous Computing with OpenCL explores memory spaces, optimization techniques, graphics interoperability, extensions, and debugging and profiling. It includes detailed examples throughout, plus additional online exercises and other supporting materials that can be downloaded at http://www.heterogeneouscompute.org/?page_id=7
This book will appeal to software engineers, programmers, hardware engineers, and students/advanced students.Explains principles and strategies to learn parallel programming with OpenCL, from understanding the four abstraction models to thoroughly testing and debugging complete applications.Covers image processing, web plugins, particle simulations, video editing, performance optimization, and more.Shows how OpenCL maps to an example target architecture and explains some of the tradeoffs associated with mapping to various architecturesAddresses a range of fundamental programming techniques, with multiple examples and case studies that demonstrate OpenCL extensions for a variety of hardware platforms
A landmark guide in digital system design, Embedded Core Design with FPGAs equips today's computer engineers with everything they need to design embedded cores and apply those cores in a state-of-the-art embedded system. This practical resource brings together logic design, computer architecture, Verilog, FPGAs, Hardware/Software design, and SoCs, explaining how engineers can draw on their computer engineering background to achieve cutting-edge embedded designs.
Renowned design expert and educator Zainalabedin Navabi first covers the basics of logic design, RT Level Verilog, computer architectures, and the architecture of modern field programmable devices. He then explores the design of utility cores that are used for high-level core-based designs, with specific focus on existing Altera cores. Finally, he describes higher-end design methodologies, including design of hardware/software systems, CPU configurations, embedded systems, and the utilization of various Altera Nios II processors.
Embedded Core Design with FPGAs features:A full array of design aids, including Verilog, FPLD structures, design and programming environments, and software and hardware tools The latest embedded system design techniques, including use of high-level integrated environments, SOPC development tools, utilizing existing processor cores, and developing your own customized processor A clear focus on utilizing Altera's new DE series and UP3 development boards and design software, including SOPC Builder and IDE software design environment
Master Every Aspect of Embedded Core Design-- High-Level Hardware/Software Design Concepts:High-Level System Design Methodology RT Level Logic Design RT Level Verilog Computer Hardware and Software Programming Languages FPGA Architecture and Utilization