|
Books > Computing & IT > Computer programming
The highly dynamic world of information technology service
management stresses the benefits of the quick and correct
implementation of IT services. A disciplined approach relies on a
separate set of assumptions and principles as an agile approach,
both of which have complicated implementation processes as well as
copious benefits. Combining these two approaches to enhance the
effectiveness of each, while difficult, can yield exceptional
dividends. Balancing Agile and Disciplined Engineering and
Management Approaches for IT Services and Software Products is an
essential publication that focuses on clarifying theoretical
foundations of balanced design methods with conceptual frameworks
and empirical cases. Highlighting a broad range of topics including
business trends, IT service, and software development, this book is
ideally designed for software engineers, software developers,
programmers, information technology professionals, researchers,
academicians, and students.
The Wolfram language is the programming language of Mathematica,
used increasingly by scientists due to its ease of learning and
user-friendliness. This book focuses on applications of the Wolfram
language to applied mathematics, physics and chemistry. Topics
discussed are broad and comprehensive, from differential equations
and special functions to fractals and chess, from electromagnetism
and optics to relativity and black holes. There is also extensive
coverage of quantum theory and quantum chemistry, and the book is
peppered with more than 200 color graphics to aid visualization of
these concepts. The program codes are provided online as
Mathematica notebooks, allowing readers to modify them and
manipulate the graphics in real time. This book should be a
valuable resource for researchers, educators and students in
science and computing who can profit from a more interactive form
of instruction.
Parallelism is the key to achieving high performance in computing.
However, writing efficient and scalable parallel programs is
notoriously difficult, and often requires significant expertise. To
address this challenge, it is crucial to provide programmers with
high-level tools to enable them to develop solutions easily, and at
the same time emphasize the theoretical and practical aspects of
algorithm design to allow the solutions developed to run
efficiently under many different settings. This thesis addresses
this challenge using a three-pronged approach consisting of the
design of shared-memory programming techniques, frameworks, and
algorithms for important problems in computing. The thesis provides
evidence that with appropriate programming techniques, frameworks,
and algorithms, shared-memory programs can be simple, fast, and
scalable, both in theory and in practice. The results developed in
this thesis serve to ease the transition into the multicore era.
The first part of this thesis introduces tools and techniques for
deterministic parallel programming, including means for
encapsulating nondeterminism via powerful commutative building
blocks, as well as a novel framework for executing sequential
iterative loops in parallel, which lead to deterministic parallel
algorithms that are efficient both in theory and in practice. The
second part of this thesis introduces Ligra, the first high-level
shared memory framework for parallel graph traversal algorithms.
The framework allows programmers to express graph traversal
algorithms using very short and concise code, delivers performance
competitive with that of highly-optimized code, and is up to orders
of magnitude faster than existing systems designed for distributed
memory. This part of the thesis also introduces Ligra , which
extends Ligra with graph compression techniques to reduce space
usage and improve parallel performance at the same time, and is
also the first graph processing system to support in-memory graph
compression. The third and fourth parts of this thesis bridge the
gap between theory and practice in parallel algorithm design by
introducing the first algorithms for a variety of important
problems on graphs and strings that are efficient both in theory
and in practice. For example, the thesis develops the first
linear-work and polylogarithmic-depth algorithms for suffix tree
construction and graph connectivity that are also practical, as
well as a work-efficient, polylogarithmic-depth, and
cache-efficient shared-memory algorithm for triangle computations
that achieves a 2-5x speedup over the best existing algorithms on
40 cores. This is a revised version of the thesis that won the 2015
ACM Doctoral Dissertation Award.
An integral element of software engineering is model engineering.
They both endeavor to minimize cost, time, and risks with quality
software. As such, model engineering is a highly useful field that
demands in-depth research on the most current approaches and
techniques. Only by understanding the most up-to-date research can
these methods reach their fullest potential. Advancements in
Model-Driven Architecture in Software Engineering is an essential
publication that prepares readers to exercise modeling and model
transformation and covers state-of-the-art research and
developments on various approaches for methodologies and platforms
of model-driven architecture, applications and software development
of model-driven architecture, modeling languages, and modeling
tools. Highlighting a broad range of topics including cloud
computing, service-oriented architectures, and modeling languages,
this book is ideally designed for engineers, programmers, software
designers, entrepreneurs, researchers, academicians, and students.
As human activities moved to the digital domain, so did all the
well-known malicious behaviors including fraud, theft, and other
trickery. There is no silver bullet, and each security threat calls
for a specific answer. One specific threat is that applications
accept malformed inputs, and in many cases it is possible to craft
inputs that let an intruder take full control over the target
computer system. The nature of systems programming languages lies
at the heart of the problem. Rather than rewriting decades of
well-tested functionality, this book examines ways to live with the
(programming) sins of the past while shoring up security in the
most efficient manner possible. We explore a range of different
options, each making significant progress towards securing legacy
programs from malicious inputs. The solutions explored include
enforcement-type defenses, which excludes certain program
executions because they never arise during normal operation.
Another strand explores the idea of presenting adversaries with a
moving target that unpredictably changes its attack surface thanks
to randomization. We also cover tandem execution ideas where the
compromise of one executing clone causes it to diverge from another
thus revealing adversarial activities. The main purpose of this
book is to provide readers with some of the most influential works
on run-time exploits and defenses. We hope that the material in
this book will inspire readers and generate new ideas and
paradigms.
This book is for novices If you have never done any programming
before - if you are a complete novice - this book is for you. This
book assumes no prior knowledge of programming. It starts from
scratch. It is written in a simple, direct style for maximum
clarity. It is aimed at first level students at universities and
colleges, but it is also suitable for novices studying alone. The
approach of this book We explain how to use objects early in this
book. Our approach is to start with the ideas of variables,
assignment and methods, then introduce the use of objects created
from library classes. Next we explain how to use control structures
for selection and looping. Then comes the treatment of how to write
your own classes. We wanted to make sure that the fun element of
programming was paramount, so we use graphics right from the start.
We think graphics is fun, interesting and clearly demonstrates all
the important principles of programming. But we haven't ignored
programs that input and output text - they are also included. The
programs we present use many of the features of a graphical user
interfaces (GUIs), such as buttons, scroll bars and text boxes. But
we also explain how to write console programs in Java. We introduce
new ideas carefully one-at-a-time, rather than all at once. So, for
example, there is a single chapter on writing methods. We introduce
simple ideas early and more sophisticated ideas later on.
Software development and design is an intricate and complex process
that requires a multitude of steps to ultimately create a quality
product. One crucial aspect of this process is minimizing potential
errors through software fault prediction. Enhancing Software Fault
Prediction With Machine Learning: Emerging Research and
Opportunities is an innovative source of material on the latest
advances and strategies for software quality prediction. Including
a range of pivotal topics such as case-based reasoning, rate of
improvement, and expert systems, this book is an ideal reference
source for engineers, researchers, academics, students,
professionals, and practitioners interested in novel developments
in software design and analysis.
|
|