Your cart is empty
API Design for C++ provides a comprehensive discussion of Application Programming Interface (API) development, from initial design through implementation, testing, documentation, release, versioning, maintenance, and deprecation. It is the only book that teaches the strategies of C++ API development, including interface design, versioning, scripting, and plug-in extensibility. Drawing from the author's experience on large scale, collaborative software projects, the text offers practical techniques of API design that produce robust code for the long term. It presents patterns and practices that provide real value to individual developers as well as organizations. API Design for C++ explores often overlooked issues, both technical and non-technical, contributing to successful design decisions that product high quality, robust, and long-lived APIs. It focuses on various API styles and patterns that will allow you to produce elegant and durable libraries. A discussion on testing strategies concentrates on automated API testing techniques rather than attempting to include end-user application testing techniques such as GUI testing, system testing, or manual testing. Each concept is illustrated with extensive C++ code examples, and fully functional examples and working source code for experimentation are available online. This book will be helpful to new programmers who understand the fundamentals of C++ and who want to advance their design skills, as well as to senior engineers and software architects seeking to gain new expertise to complement their existing talents. Three specific groups of readers are targeted: practicing software engineers and architects, technical managers, and students and educators.
Author Peter Pacheco uses a tutorial approach to show students
how to develop effective parallel programs with MPI, Pthreads, and
OpenMP. The first undergraduate text to directly address compiling
and running parallel programs on the new multi-core and cluster
architecture, " An Introduction to Parallel Programming" explains
how to design, debug, and evaluate the performance of distributed
and shared-memory programs. User-friendly exercises teach students
how to compile, run and modify example programs.
Real-Time Systems Development introduces computing students and professional programmers to the development of software for real-time applications. Based on the academic and commercial experience of the author, the book is an ideal companion to final year undergraduate options or MSc modules in the area of real-time systems design and implementation. Assuming a certain level of general systems design and programming experience, this text will extend students' knowledge and skills into an area of computing which has increasing relevance in a modern world of telecommunications and `intelligent' equipment using embedded microcontrollers. This book takes a broad, practical approach in discussing real-time systems. It covers topics such as basic input and output; cyclic executives for bare hardware; finite state machines; task communication and synchronization; input/output interfaces; structured design for real-time systems; designing for multitasking; UML for real-time systems; object oriented approach to real-time systems; selecting languages for RTS development; Linux device drivers; and hardware/software co-design. Programming examples using GNU/Linux are included, along with a supporting website containing slides; solutions to problems; and software examples. This book will appeal to advanced undergraduate Computer Science students; MSc students; and, undergraduate software engineering and electronic engineering students.
Whatever your programming language, whatever your platform, you
probably tap into linker and loader functions all the time. But do
you know how to use them to their greatest possible advantage? Only
now, with the publication of Linkers & Loaders, is there an
authoritative book devoted entirely to these deep-seated
compile-time and run-time processes.
Computation and Storage in the Cloud is the first comprehensive
and systematic work investigating the issue of computation and
storage trade-off in the cloud in order to reduce the overall
application cost. Scientific applications are usually computation
and data intensive, where complex computation tasks take a long
time for execution and the generated datasets are often terabytes
or petabytes in size. Storing valuable generated application
datasets can save their regeneration cost when they are reused, not
to mention the waiting time caused by regeneration. However, the
large size of the scientific datasets is a big challenge for their
storage. By proposing innovative concepts, theorems and algorithms,
this book will help bring the cost down dramatically for both cloud
users and service providers to run computation and data intensive
scientific applications in the cloud. Covers cost models and
benchmarking that explain the necessary tradeoffs for both cloud
providers and usersDescribes several novel strategies for storing
application datasets in the cloudIncludes real-world case studies
of scientific research applications
Describes several novel strategies for storing application datasets in the cloud
Includes real-world case studies of scientific research applications
Authors Jim Jeffers and James Reinders spent two years helping educate customers about the prototype and pre-production hardware before Intel introduced the first Intel Xeon Phi coprocessor. They have distilled their own experiences coupled with insights from many expert customers, Intel Field Engineers, Application Engineers and Technical Consulting Engineers, to create this authoritative first book on the essentials of programming for this new architecture and these new products.
This book is useful even before you ever touch a system with an Intel Xeon Phi coprocessor. To ensure that your applications run at maximum efficiency, the authors emphasize key techniques for programming any modern parallel computing system whether based on Intel Xeon processors, Intel Xeon Phi coprocessors, or other high performance microprocessors. Applying these techniques will generally increase your program performance on any system, and better prepare you for Intel Xeon Phi coprocessors and the Intel MIC architecture.
A practical guide to the essentials of the Intel Xeon Phi coprocessorPresents best practices for portable, high-performance computing and a familiar and proven threaded, scalar-vector programming modelIncludes simple but informative code examples that explain the unique aspects of this new highly parallel and high performance computational productCovers wide vectors, many cores, many threads and high bandwidth cache/memory architecture
If you need to learn CUDA but don't have experience with
parallel computing, "CUDA Programming: A Developer's Introduction
"offers a detailed guide to CUDA with a grounding in parallel
fundamentals. It starts by introducing CUDA and bringing you up to
speed on GPU parallelism and hardware, then delving into CUDA
installation. Chapters on core concepts including threads, blocks,
grids, and memory focus on both parallel and CUDA-specific issues.
Later, the book demonstrates CUDA in practice for optimizing
applications, adjusting to new hardware, and solving common
Most Perl programmers were originally trained as C and Unix
programmers, so the Perl programs that they write bear a strong
resemblance to C programs. However, Perl incorporates many features
that have their roots in other languages such as Lisp. These
advanced features are not well understood and are rarely used by
most Perl programmers, but they are very powerful. They can
automate tasks in everyday programming that are difficult to solve
in any other way. One of the most powerful of these techniques is
writing functions that manufacture or modify other functions. For
example, instead of writing ten similar functions, a programmer can
write a general pattern or framework that can then create the
functions as needed according to the pattern. For several years
Mark Jason Dominus has worked to apply functional programming
techniques to Perl. Now Mark brings these flexible programming
methods that he has successfully taught in numerous tutorials and
training sessions to a wider audience.
A Student Guide to Object-Oriented Development is an introductory text that follows the software development process, from requirements capture to implementation, using an object-oriented approach. The book uses object-oriented techniques to present a practical viewpoint on developing software, providing the reader with a basic understanding of object-oriented concepts by developing the subject in an uncomplicated and easy-to-follow manner. It is based on a main worked case study for teaching purposes, plus others with password-protected answers on the web for use in coursework or exams. Readers can benefit from the authors' years of teaching experience. The book outlines standard object-oriented modelling techniques and illustrates them with a variety of examples and exercises, using UML as the modelling language and Java as the language of implementation. It adopts a simple, step by step approach to object-oriented development, and includes case studies, examples, and exercises with solutions to consolidate learning. There are 13 chapters covering a variety of topics such as sequence and collaboration diagrams; state diagrams; activity diagrams; and implementation diagrams. This book is an ideal reference for students taking undergraduate introductory/intermediate computing and information systems courses, as well as business studies courses and conversion masters' programmes.
Unified Modeling Language (UML) is a general-purpose notation
language for specifying and visualizing complex software,
especially large, object-oriented projects. Object-oriented
programming is when a programmer defines not only the data type of
a data structure, but also the types of operations/functions that
can be applied to the data structure.
Design Methods for Reactive Systems describes methods and
techniques for the design of software systems particularly reactive
software systems that engage in stimulus-response behavior. Such
systems, which include information systems, workflow management
systems, systems for e-commerce, production control systems, and
embedded software, increasingly embody design aspects previously
considered alone such as complex information processing,
non-trivial behavior, and communication between different
components aspects traditionally treated separately by classic
software design methodologies. But, as this book illustrates, the
software designer is better served by the ability to intelligently
pick and choose from among a variety of techniques according to the
particular demands and properties of the system under development.
Revised and updated with improvements conceived in parallel
programming courses, "The Art of Multiprocessor Programming" is an
authoritative guide to multicore programming. It introduces a
higher level set of software development skills than that needed
for efficient single-core programming. This book provides
comprehensive coverage of the new principles, algorithms, and tools
necessary for effective multiprocessor programming. Students and
professionals alike will benefit from thorough coverage of key
multiprocessor programming issues.
Newly updated with over 150 pages of material on the latest Tcl extensions, "Tcl/Tk: A Developer s Gu"ide is a unique practical tutorial for professional programmers and beginners alike. Starting with a clear picture of the basics, Tcl/Tk covers the variety of tools in this "Swiss army knife" of programming languages, giving you the ability to enhance your programs, extend your application's capabilities, and become a more effective programmer.
This updated edition covers all of the new features of version
8.6, including object-oriented programming and the creation of
megawidgets, existing data structure implementations, themed
widgets and virtual events. Extensive code snippets and online
tutorials in various languages will give you a firm grasp on how to
use the Tcl/Tk libraries and interpreters and, most importantly, on
what constitutes an effective strategy for using Tcl/Tk.
Semantic Web models and technologies provide information in machine-readable languages that enable computers to access the Web more intelligently and perform tasks automatically without the direction of users. These technologies are relatively recent and advancing rapidly, creating a set of unique challenges for those developing applications.
"Semantic Web for the Working Ontologist" is the essential, comprehensive resource on semantic modeling, for practitioners in health care, artificial intelligence, finance, engineering, military intelligence, enterprise architecture, and more. Focused on developing useful and reusable models, this market-leading book explains how to build semantic content (ontologies) and how to build applications that access that content.
New in this edition:
Coverage of the latest Semantic Web tools for organizing, querying, and processing information - see details in TOC below
Detailed information on the latest ontologies used in key web
applications including ecommerce, social networking, data mining,
using government data, and more
Microsoft Outlook is the most widely used e-mail program and offers
the most programmability. Sue Mosher introduces key concepts for
programming Outlook using Visual Basic for Applications, custom
Outlook forms, and external scripts, without the need for
additional development tools.
This book is proof that debugging has graduated from a black art to
a systematic discipline. It demystifies one of the toughest aspects
of software programming, showing clearly how to discover what
caused software failures, and fix them with minimal muss and fuss.
As the computer industry retools to leverage massively parallel graphics processing units (GPUs), this book is designed to meet the needs of working software developers who need to understand GPU programming with CUDA and increase efficiency in their projects. "CUDA Application Design and Development" starts with an introduction to parallel computing concepts for readers with no previous parallel experience, and focuses on issues of immediate importance to working software developers: achieving high performance, maintaining competitiveness, analyzing CUDA benefits versus costs, and determining application lifespan.
The book then details the thought behind CUDA and teaches how to create, analyze, and debug CUDA applications. Throughout, the focus is on software engineering issues: how to use CUDA in the context of existing application code, with existing compilers, languages, software tools, and industry-standard API libraries.
Using an approach refined in a series of well-received articles
at Dr Dobb's Journal, author Rob Farber takes the reader
step-by-step from fundamentals to implementation, moving from
language theory to practical coding.
Programming is now parallel programming. Much as structured
programming revolutionized traditional serial programming decades
ago, a new kind of structured programming, based on patterns, is
relevant to parallel programming today. Parallel computing experts
and industry insiders Michael McCool, Arch Robison, and James
Reinders describe how to design and implement maintainable and
efficient parallel algorithms using a pattern-based approach. They
present both theory and practice, and give detailed concrete
examples using multiple programming models. Examples are primarily
given using two of the most popular and cutting edge programming
models for parallel programming: Threading Building Blocks, and
Cilk Plus. These architecture-independent models enable easy
integration into existing applications, preserve investments in
existing code, and speed the development of parallel applications.
Examples from realistic contexts illustrate patterns and themes in
parallel algorithm design that are widely applicable regardless of
This book gives a practical introduction to model-based testing,
showing how to write models for testing purposes and how to use
model-based testing tools to generate test suites. It is aimed at
testers and software developers who wish to use model-based
testing, rather than at tool-developers or academics.
At the heart of Apple's hugely popular iLife software suite-iMovie,
iPhoto, iDVD, GarageBand, and iTunes-is QuickTime, the powerful
media engine that drives elegant applications for managing movies,
images, and audio files. The enduring success of QuickTime is in no
small part attributable to its component architecture. This key
feature has allowed it to embrace emerging digital media
technologies and standards one by one as they have appeared over
the 12 or so years since its launch. None of the competing
technologies even comes close, let alone on both Mac OS X and
The Model Driven Architecture defines an approach where the
specification of the functionality of a system can be separated
from its implementation on a particular technology platform. The
idea being that the architecture will be able to easily be adapted
for different situations, whether they be legacy systems, different
languages or yet to be invented platforms.
You don t need coddling; you don t need to be told what you already
know. What you need is a book that uses your experience as a Java
or C++ programmer to give you a leg up into the challenges and
rewards of C#. And this Practical Guide is precisely what you re
The Student's Essential Guide to .NET provides a clear and simple
overview of Microsoft's .NET technologies. It is aimed at second
and third year undergraduate students and postgraduate students on
Computing or Computer Science courses who are required to look at a
modern operating system, (Microsoft Windows 9x, Nt 2000 or XP) and
to design and code simple or even not so simple examples. The
approach is based upon the student's learning the technology of
.NET through examples using the supported languages C#, VB and C++.
The examples are based on fun, familiar games, and students are
encouraged to review reference material to refine their skills on
key aspects of the architecture. Review questions and worked
examples enhance the learning process and the material is supported
by the author's website, which contains extensive ancillary
For a long time, there has been a need for a practical,
down-to-earth developers book for the Java Cryptography Extension.
I am very happy to see there is now a book that can answer many of
the technical questions that developers, managers, and researchers
have about such a critical topic. I am sure that this book will
contribute greatly to the success of securing Java applications and
deployments for e-business. --Anthony Nadalin, Java Security Lead
JavaServer Pages (JSP) is a technology for building dynamic web
applications that can access databases and provide an interactive
experience for users. It's a powerful technology with open source
implementations (server and platform independent) for building
enterprise Web applications. With JSP, existing business systems
can be leveraged with minimal overhead, maintenance, and support.
JSP: Practical Guide for Java Programmers is designed to cover the
essentials of JSP including the basic JSP constructs and the
relevant implicit objects as well as more advanced concepts such as
incorporating JavaBeans, developing custom tags, utilizing the JSP
expression language, building with the JSP Standard Tag Library,
and developing complete JSP-Servlet application. Throughout the
book, an electronic bank Web application is used to introduce new
concepts, while demonstrating to the reader how the pieces fit
You may like...
Introduction to Web Matrix - ASP.NET…
Colin Hardy, Simon Stobart Paperback R2,696 Discovery Miles 26 960
Modeling Business Objects with XML…
Berthold Daum Paperback R1,822 Discovery Miles 18 220
The Enterprise Architecture IT Project…
Christophe Longepe Hardcover R2,141 Discovery Miles 21 410
Java - Practical Guide for Programmers
Michael Sikora Paperback R807 Discovery Miles 8 070
The Struts Framework - Practical Guide…
Sue Spielman Paperback R962 Discovery Miles 9 620
System Architecture with XML
Berthold Daum, Udo Merten Paperback R1,913 Discovery Miles 19 130
Compaq Visual Fortran - A Guide to…
Norman Lawrence Paperback R1,875 Discovery Miles 18 750
Compression Algorithms for Real…
Peter Wayner Paperback R1,296 Discovery Miles 12 960
Advanced Video Coding: Principles and…
K.N. Ngan, Thomas Meier, … Hardcover R3,479 Discovery Miles 34 790
Charging Communication Networks - From…
D.J. Songhurst Hardcover R2,461 Discovery Miles 24 610