Friday, July 6, 2012

Professionelle Softwareentwicklung mit PHP 5

0 comments

Professionelle Softwareentwicklung mit PHP 5
Professionelle Softwareentwicklung mit PHP 5 (Professional Software Development with PHP 5) is in German. The book is available online free of charge. This book describes the way experienced PHP developers into the new, object-oriented PHP 5 world.
Description
You will learn which professional concepts and methods in software development with PHP is available and how they are used. This book can not and will not be an introduction to PHP, or topics of software technology such as object-oriented analysis and design.
Contents
  • Basics
  • Interceptor methods
  • Iterators
  • Test-driven development with PHPUnit
  • Creational patterns
  • Structural Patterns
  • Behavioral pattern
  • Processing XML with PHP
  • Web services with SOAP
  • The MySQLi extension
  • Advanced Database Programming
  • Code Documentation
  • Modeling with UML and MDA
Book Details
Author(s): Sebastian Bergmann
Format(s): HTML
Link: Read online

Developing PHP Applications for IBM Data Servers

0 comments

Developing PHP Applications for IBM Data Servers
This IBM Redbook provides lots of information for developers, including code samples for creating PHP applications with DB2, Informix Dynamic Server (IDS), and Cloudscape. We use the latest PHP data access extensions including: PHP Data Objects (PDO) and the native ibm_db2 extension for PHP.
Description
We describe the installation and configuration details for setting up the IBM data servers and Apache Web application server for PHP applications. We include Zend Core for IBM, Zend Studio installation, and configuration.
In addition, we discuss the process of porting PHP applications from MySQL 5 to DB2 UDB V8.2.
Contents
  • Technology overview
  • Sample scenario description
  • Zend installation and configuration
  • PHP application development with DB2
  • PHP applications with Informix database servers
  • Port PHP applications from MySQL V5 to DB2 UDB V8.2
Book Details
Author(s): Whei-Jen Chen, Holger Kirstein, Daniel Krook, Kiran H Nair and Piotr Pietrzak.
Publisher: Vervante
Format(s): PDF
File size: 5.57 MB
Number of pages: 448
Link: Download.

PHP Essentials

0 comments

PHP Essentials

The book is intended to cover all aspects of PHP. It begins by covering the history of PHP before providing a high level overview of how PHP works and why it is so useful to web developers. It then moves on to cover each area of PHP in detail, from the basics of the scripting language through to object oriented programming, file and filesystem handling and MySQL and SQLite database access.
Description
In addition, chapters are also provided covering the creation and handling of HTML based forms and maintaining state using cookies and PHP sessions. All topics are accompanied by extensive real world examples intended to bring theory to life.
Contents
  • The History of PHP
  • An Overview of PHP
  • Creating a Simple PHP Script
  • Commenting PHP Code
  • An Introduction to PHP Variables
  • Understanding PHP Variable Types
  • PHP Constants
  • PHP Operators
  • PHP Flow Control and Looping
  • PHP Functions
  • PHP Arrays
  • Working with Strings and Text in PHP
  • PHP, Filesystems and File I/O
  • Working with Directories in PHP
  • PHP and HTML Forms
  • PHP and Cookies – Creating, Reading and Writing
  • Understanding PHP Sessions
  • PHP Object Oriented Programming
  • Using PHP with MySQL
  • PHP and SQLite
Book Details
Author(s): -
Publisher: Techotopia
Format(s): HTML
Link: Read online.

Tuesday, August 3, 2010

Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns

0 comments
This book presents a complete methodology for adaptive programming in any object-oriented language. Lieberherr's method provides a new approach to object-oriented program design that goes beyond object encapsulation and hard-coded navigation paths to achieve more flexible interactions among objects. Designers using this adaptive method work at a higher, more schematic level of abstraction to design software programs. Graph notation is used to represent the class structure of the program, and a "propagation pattern" language describes how to distribute meaningful methods (including navigation) across the program's structure. Using this method, software designers can create programs that are easily modified and adaptable as needs evolve.

Reviews: Amazon.com

"Unfortunately, apart from highlighting the problems of OO successfully, he singularly failed to convince me of the adaptive OO approach."

Author(s) : Karl J. Lieberherr
Publication date : August 1995
ISBN : 0-534-94602-X
Pages : 616
Publisher : PWS Publishing Co.

View/Download Adaptive Object-Oriented Software

Building Skills in Object-Oriented Design - Step-by-Step Construction of A Complete Application

0 comments
Some software developers find themselves stalled when trying to do object-oriented (OO) design. As programmers, they've understood the syntax of a programming language, and pieced together small examples. However, it is often difficult to take the next step to becoming a designer. Because this transition from guided learning of language features to self-directed design work is often ignored, programmers are left to struggle through their first design projects without appropriate skills or support. While it is critically important to examine examples of good design, a finished product doesn't reveal the author's decision-making process that created the design.

The most notable consequence of this skills gap is the creation of software that is far more complex than necessary to effectively solve a given problem. This, in turn, leads to software with high maintenance costs stemming from the low quality. It also leads to an unfair indictment of OO technology; this is usually voiced as “we tried OO programming and it failed.

The intent of this book is to help the beginning designer by giving them a sequence of interesting and moderately complex exercises in OO design. This book can also help managers develop a level of comfort with the process of OO software development. The applications we will build are a step above trivial, and will require some careful thought and design. Further, because the applications are largely recreational in nature, they are interesting and engaging. This book allows the reader to explore the processes and artifacts of OO design before project deadlines make good design seem impossible.

Author : Steven F. Lott
Publication Date : 2005
Free License : Creative Commons License Attribution-Noncommercial-No Derivative Works 2.0 Generic

View/Download Building Skills in Object-Oriented Design | Single HTML | PDF

Introduction to Object-Oriented Programming Using C++

0 comments
This is a collection of lectures in the on-line course Introduction to Object-Oriented Programming Using C++. In this course, object-orientation is introduced as a new programming concept which should help you in developing high quality software. Object-orientation is also introduced as a concept which makes developing of projects easier.

However, this is not a course for learning the C++ programming language. If you are interested in learning the language itself, you might want to go through other tutorials, such as C++: Annotations by Frank Brokken and Karel Kubat. In this tutorial only those language concepts that are needed to present coding examples are introduced.

Author(s) : Peter Müller
Publication date : Aug 1997

View/Download Introduction to Object-Oriented Programming Using C++

Java Au Naturel - Guide to Object Oriented Design, 4th Edition

0 comments
This book focuses on software development with an object-oriented approach. Java is used for the implementation, since it's well suited for learning and doing object-oriented software development.

Programmer only learns by doing. In this book, readers will work with many different situations where software development is necessary. Readers should not start by learning Java's eight different primitive types or its five different control statements. They should start by seeing how to develop software for a particular realistic situation. And they should learn the language features they need for the situation as the need arises.

This book starts by introducing the objects that make drawings. In this context readers will learn to send messages to objects to carry out simple tasks. More importantly, this book shows readers how to "teach" those objects to put together a sequence of simple actions to perform a complex task. These "better-trained" objects have new capabilities in addition to the ones they inherit from the original specifications. This inheritance technique eventually makes the job much easier. Bigger jobs can be completed with less work and less chance of getting it wrong if there are new objects that take over most of the work. When objects are used this way, they should be thought of as the agents or executive assistants.

Intended Audience:

This book does not require any knowledge of programming or any mathematics beyond elementary algebra and (in a few places) a bit of trigonometry.

Author : Dr. William C. Jones, Jr., Department of Computer Science, Central Connecticut State University
Publication Date : May 26, 2004

View/Download Java Au Naturel - Guide to Object Oriented Design, 4th Edition

Java: An Object First Approach

0 comments
Java: An Object First Approach provides a thorough introduction to the production of software artefacts, a process known as software development, using the programming language Java. The book is intended for use with readers/students starting their software development education and can also be used at a more advanced level as an Object-Oriented book.

The author uses a spiral approach to present object-oriented concepts and techniques. The development of a class hierarchy is utilized, stressing a design, build, test cycle. An extensive case study at the conclusion of the book pulls the concepts together.

Author(s) : Fintan Culwin
Publication date : Oct 1997
ISBN : 0-138-58457-5
Pages : 393
Publisher : Prentice Hall

View/Download Java: An Object First Approach

Object-Oriented Programming And The Objective-C Language

0 comments
Object-oriented programming, like most interesting new developments, builds on some old ideas, extends them, and puts them together in novel ways. The result is many-faceted and a clear step forward for the art of programming. An object- oriented approach makes programs more intuitive to design, faster to develop, more amenable to modifications, and easier to understand. It leads not only to new ways of constructing programs, but also to new ways of conceiving the programming task.

Nevertheless, object-oriented programming presents some formidable obstacles to those who would like to understand what it's all about or begin trying it out. It introduces a new way of doing things that may seem strange at first, and it comes with an extensive terminology that can take some getting used to. The terminology will help in the end, but it's not always easy to learn. Moreover, there are as yet few full-fledged object-oriented development environments available to try out. It can be difficult to get started.

That's where this book comes in. It's designed to help the reader become familiar with object-oriented programming and get over the hurdle its terminology presents. It spells out some of the implications of object-oriented design and tries to give the reader a flavor of what writing an object-oriented program is really like. It fully documents the Objective-C language, an object-oriented programming language based on standard C, and introduces the most extensive object-oriented development environment currently available -- OpenStep.

Intended Audience:

Because this isn't a book about C, it assumes some prior acquaintance with that language. However, it doesn't have to be an extensive acquaintance. Object-oriented programming in Objective-C is sufficiently different from procedural programming in standard C that the reader won't be hampered if he/she is not an experienced C programmer.

View/Download Object-Oriented Programming And The Objective-C Language | Download from gnustep.org

Object Oriented Analysis and Design - Course Notes

0 comments
Object modelling is useful for designing computer systems, whether those systems are to be implemented in object-oriented languages or not. Most designs are likely to need more than an object-oriented language, such as a database. Therefore, do not think that this is a wasted exercise if you cannot convince your manager to let you use C++, Smalltalk or whatever flavour of the month language is out there.

Object modelling also has a use outside of the design of computer systems. It is an excellent analysis method, and it can be used in business process reengineering, in social science research, or any complex environment where it is important to capture the structure and functionality of some world.

This course aims to provide you with:

1. A simple, clear, analysis and design notation.
2. A good basic understanding of the concepts of object oriented systems.
3. A method for construction of analyses and designs.
4. Some discussion of the implementation of designs.

View/Download Object Oriented Analysis and Design - Course Notes

Learning Object Oriented Programming with Delphi

0 comments
An object is a separate, self-contained, encapsulated entity, and the term encapsulation is important in OO. This means that an object has data that it can keep private from the outside world and that it has specific behaviour. It manipulates its data and implements its behaviour through its methods.

Writing the code that defines an object's methods has many similarities with structured programming, and so uses many structured programming principles such as structured selection (If..then..else, Case) and repetition (While..do and For loops).

In this module we assume that students are familiar with these concepts and so concentrate on principles that apply specifically to OO programming.

Delphi as a Learning Environment:

This course uses Delphi to teach object orientation. Delphi's roots lie in Pascal, and so it has a sound, structured foundation. It is also strongly object oriented and provides many OO characteristics such as class inheritance, static binding and dynamic binding, and reference semantics.

The module makes extensive use of graded, worked examples to give students hands-on experience in the implementation of OO code. This helps to bridge the gap between the seemingly simple OO principles and the ramifications of these principles in practice. Through the inductive sequencing of concepts and through the extensive use of worked examples, this module strongly supports independent study, and has been prepared with distance learning students in mind.

In the first two chapters of this module we use Delphi's RAD facilities to start exploring various aspects of OO.

Then we apply these same principles to code that we ourselves write. We start exploring how to define and instantiate classes by looking at the way Delphi builds up a 'Form', which is the name Delphi uses for a window in a graphical interface environment.

Author : John Barrow; edited by Zarko Gajic
Publication Date : November 2007

View/Download Learning Object Oriented Programming with Delphi

Seamless Object-Oriented Software Architecture - Analysis And Design of Reliable Systems

0 comments
This book shows how a consistent set of object-oriented abstractions can be applied throughout the entire software construction process, based on three major ideas: seamlessness, reversibility, and contracting.

Seamlessness, as in the first word of the title, follows from the observation that the similarities between the tasks to be carried out at the various steps of a project far outweigh their inevitable differences, making it possible to obtain a continuous process that facilitates communication between the various actors involved, ensures a direct mapping between a problem and its software solution, and results in a high level of quality for the final product.

Reversibility means that the seamless procedure must work in both directions: if one modifies a system that has already reached the implementation phase - a frequent case in practice - it must be possible to reflect the modification back to the higher levels of design, specification, and analysis.

The contract model was introduced to a wider audience as early as 1988 by Bertrand Meyer in his introductory book Object-Oriented Software Construction (OOSC), which quickly became, and still is, the standard reference on basic object-oriented concepts. In a sense, this book is a continuation of OOSC, carrying some of its software engineering ideas to their logical conclusion in the area of analysis and design. The result is a method called BON (Business Object Notation) which contains a set of concepts and corresponding notations to support object-oriented modeling centered around the three principles of seamlessness, reversibility, and software contracting.

Intended Audience:

The book is intended for software professionals as well as for students at the graduate and undergraduate levels. This book can be read by anyone who has acquired a general understanding of the problems of software engineering, and who has some inclination for abstract thinking.

Author : Kim Waldén and Jean-Marc Nerson
Publication Date : September 1994
Publisher : Prentice Hall

View/Download Seamless Object-Oriented Software Architecture - Analysis And Design of Reliable Systems | Book's Webpage

Objective-C 2.0 Essentials

0 comments
On the surface this sounds like an odd opening sentence for a programming book. After all, if this were a book about JavaScript or PHP I'd be safe in assuming that you planned to develop some kind of web site or web application. Similarly, if this were a Visual Basic book it'd be a good bet that you had plans to write a Windows application. Indeed, had I asked this question a few years ago, I could have guessed with a reasonable level of confidence that you wanted to learn Objective-C in order to develop some software to run on Apple's Mac OS X operating system. Now, however, there is a greater likelihood that you plan to develop an application to run on the iPhone.

The iPhone, after all, runs a special version of Mac OS X. Given that Objective-C is the programming language of choice for this operating system it should come as no surprise that before you can develop iPhone applications you first need to learn how to program in Objective-C.

The objective of this book is to teach the skills necessary to program in Objective-C using a style that is easy to follow, rich in examples and accessible to those who have never used Objective-C before. Topics covered include the fundamentals of Objective-C such as variables, looping and flow control. Also included are details of object oriented programming, working with files and memory and the Objective-C Foundation framework.

Those who have developed using other programming languages such as C, C++, C# or Java will find much about Objective-C that is familiar. That said, there are aspects of the language syntax that are unique to Objective-C. Even experienced programmers should therefore expect to spend some time transitioning to this increasingly popular programming language before embarking on a major development project.

Whatever your background and experience, we have worked hard to make this book as useful and helpful as possible as you traverse the Objective-C learning curve.

Author : Neil Smyth
Publication Date : January 2010

View/Download Objective-C 2.0 Essentials

Object-Oriented System Development

0 comments
Object-Oriented System Development is written for professionals involved in the development of medium, large, and distributed systems. Rather than subscribing to a particular object-oriented method, the authors give instructions on how to put key object-oriented concepts to work in software construction. Many examples, including a full banking system, are developed throughout the book to illustrate the process of object-oriented software development from analysis, through design and into implementation.

Each chapter concludes with exercises. Although one can read this book while bypassing the exercises, they are recommended. Some exercises ask you to operationalize the concepts in this book. Others are quick 'thought questions', sometimes even silly sounding ones, that may lead you into territory that you have not explored.

Author(s) : Dennis de Champeaux, Douglas Lea, and Penelope Faure
Publication date : May 1993
ISBN : 0-201-56355-X
Pages : 532
Publisher : Addison-Wesley Pub Co

View/Download Object-Oriented System Development

Object-Oriented Software Composition

0 comments
Object-Oriented Software Composition adopts the viewpoint that object-oriented technology is essentially about composing flexible software applications from software components. Although object-oriented languages, tools and methods have come a long way since the birth of object-oriented programming, the technology is not yet mature. This book presents the results of a series of research projects related to object-oriented software composition that were carried out within the Object Systems Group at the University of Geneva, or by partners in collaborative research projects, during a period of about ten years. As such, this book is an attempt to synthesize and juxtapose ideas that were developed by a group of people working closely together over several years.

Although many different topics are treated, by presenting them together, the authors intend to show how certain ideas and principles are closely related to software composition, whether one considers programming language design, formal specification, tools and environments, or application development. Common threads running throughout the book include plug compatibility as a way of formalizing valid ways of composing components, active objects as being fundamental to the development of open systems, protocols as a necessary aspect of plug compatibility for active objects, higher-order functional composition as complementary to object composition, and evolution of objects and object frameworks as an essential aspect to capture in the software lifecycle.

This book should appeal to researchers and practitioners familiar with object-oriented technology, who are interested in research trends related to software composition. Although this book was not designed as a textbook, it would be suitable for an advanced seminar on object-oriented research. Individual chapters can be read independently. The order of presentation has been selected mainly to illustrate a progression of ideas from programming language design issues to environments and applications. Not only is the "Geneva view" of object-oriented development presented, but considerable effort has gone into placing the work in context, and several of the chapters contain extensive surveys of related work.

Author(s): Oscar Nierstrasz and Dennis Tsichritzis
Publication Date: 1995
Publisher: Prentice Hall

View/Download Object-Oriented Software Composition | Book's homepage | SCG Archive

Sunday, August 1, 2010

A Practical Introduction to Data Structures and Algorithm Analysis Third Edition (C++ Version)

0 comments
This document is made freely available for educational and other non-commercial use. You may make copies of this file and redistribute it without charge. You may extract portions of this document provided that the front page, including the title, author, and this notice are included. Any commercial use of this document requires the written consent of the author.

We study data structures so that we can learn to write more efficient programs. But why must programs be efficient when new computers are faster every year? The reason is that our ambitions grow with our capabilities. Instead of rendering efficiency needs obsolete, the modern revolution in computing power and storage capability merely raises the efficiency stakes as we computerize more complex tasks.

The quest for program efficiency need not and should not conflict with sound design and clear coding. Creating efficient programs has little to do with "programming tricks" but rather is based on good organization of information and good algorithms. A programmer who has not mastered the basic principles of clear design is not likely to write efficient programs. Conversely, "software engineering" cannot be used as an excuse to justify inefficient performance. Generality in design can and should be achieved without sacrificing performance, but this can only be done if the designer understands how to measure performance and does so as an integral part of the design and implementation process. Most computer science curricula recognize that good programming skills begin with a strong emphasis on fundamental software engineering principles. Then, once a programmer has learned the principles of clear program design and implementation, the next step is to study the effects of data organization and algorithms on program efficiency.

Author : Clifford A. Shaffer, Department of Computer Science, Virginia Tech
Publication Date : January 2010

View/Download A Practical Introduction to Data Structures and Algorithm Analysis Third Edition (C++ Version)

Algorithmic Problem Solving

0 comments
In historical terms, the digital computer is very, very new. The science of computing is yet newer. Compared to its older sister - mathematics - which is thousands of years old, it is hardly in the embryonic stage of development. Yet, computing science is already having a major influence on our problem-solving skills, amounting to a revolution in the art of effective reasoning.

Because of the challenges of programming (which means instructing a dumb machine how to solve each instance of a problem) and the unprecedented scale of programming problems, computing scientists have had to hone their problem-solving skills to a very fine degree. This has led to advances in logic, and to changes in the way that mathematics is practised. This book forms an introduction to problem-solving using the insights that have been gained in computing science.

Solutions to programming problems are formulated as so-called algorithms. An algorithm is a well-defined procedure, consisting of a number of instructions, that are executed in turn in order to solve the given problem.

Normally, an algorithm will have certain inputs; for each input, the algorithm should compute an output which is related to the input by a certain so-called input-output relation. Formulating an algorithm makes problem-solving decidedly harder, because it is necessary to formulate very clearly and precisely the procedure for solving the problem. The more general the problem, the harder it gets. The advantage, however, is a much greater understanding of the solution. The process of formulating an algorithm demands a full understanding of why the algorithm is correct.

Intended Audience:
This book aims to impart these new skills and insights to a broad audience, using an example-driven approach. It aims to demonstrate the importance of mathematical calculation, but the chosen examples are typically not mathematical; instead, they are problems that are readily understood by a lay person, with only elementary mathematical knowledge. The book also aims to challenge; most of the problems are quite difficult, at least to the untrained or poorly trained practitioner.

Author : Roland Backhouse, School of Computer Science and Information Technology, University of Nottingham
Publication Date : June 2006

View/Download Algorithmic Problem Solving | Exercises, Coursework and Model Solutions

Computational Modeling and Complexity Science

0 comments
This book is about data structures and algorithms, intermediate programming in Python, complexity science and the philosophy of science:

Data structures and algorithms:
A data structure is a collection that contains data elements organized in a way that supports particular operations. For example, a dictionary organizes key-value pairs in a way that provides fast mapping from keys to values, but mapping from values to keys is generally slower.

An algorithm is an mechanical process for performing a computation. Designing efficient programs often involves the co-evolution of data structures and the algorithms that use them. For example, the first few chapters are about graphs, a data structure (nested dictionaries) that is a good implementation of a graph, and several graph algorithms that use this data structure.

Python programming:
This book picks up where Think Python leaves off. I assume that you have read that book or have equivalent knowledge of Python. As always, I will try to emphasize fundmental ideas that apply to programming in many languages, but along the way you will learn some useful features that are specific to Python.

Computational modeling:
A model is a simplified description of a system that is useful for simulation or analysis. Computational models are designed to take advantage of cheap, fast computation.

Philosophy of science:
The models and results I will present raise a number of questions relevant to the philosophy of science, including the nature of scientific laws, theory choice, realism and instrumentalism, holism and reductionism, and Bayesian epistemology.

There are two kinds of computational models:

Continuous:
Many computational models compute discrete approximations of equations that are continuous in space and time. For example, to compute the trajectory of a planet, you could describe planetary motion using differential equations and then compute a numerical approximation of the position of the planet at discrete points in time.

The fields of numerical methods and scientific computing tend to focus on these kinds of models.

Discrete:
Discrete models include graphs, cellular automata, and agent-based models. They are often characterized by structure, rules and transitions rather than by equations. They tend to be more abstract than continuous models; in some cases there is no direct correspondence between the model and a physical system.

Complexity science is an interdisciplinary field—at the intersection of mathematics, computer science and physics—that focuses on these kinds of models.

And that’s what this book is about.

Author : Allen B. Downey
Publication Date : July 2008

View/Download Computational Modeling and Complexity Science

Algorithms

0 comments
This book evolved over the past ten years from a set of lecture notes developed by the authors while teaching the undergraduate Algorithms course at Berkeley and U.C. San Diego.

The topics were carefully selected and clustered. No attempt was made to be encyclopedic, and this left more spaces to include topics traditionally de-emphasized or omitted from most Algorithms books.

This book consists of four parts:

Part I starts with the historical beginning, RSA cryptosystem, divide-and-conquer algorithms for integer multiplication, sorting and median finding, as well as the fast Fourier transform.

Part II, the most traditional section of the book, concentrates on data structures and graphs; the contrast here is between the intricate structure of the underlying problems and the short and crisp pieces of pseudocode that solve them.

Part III deals with the "sledgehammers" of the trade, techniques that are powerful and general: dynamic programming (a novel approach helps clarify this traditional stumbling block for students) and linear programming (a clean and intuitive treatment of the simplex algorithm, duality, and reductions to the basic problem).

The final Part IV is about ways of dealing with hard problems: NP-completeness, various heuristics, as well as quantum algorithms, perhaps the most advanced and modern topic. As it happens, this book ends the story exactly where it started it, with Shor's quantum algorithm for factoring.

Intended Audience :
Instead of dwelling on formal proofs, this book distills in each case the crisp mathematical idea that makes the algorithm work. In other words, this book emphasizes rigor over formalism. Undergraduate students in Computer Science should be much more receptive to mathematical rigor of this form.

Author(s) : S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani, University of California, San Diego
Publication Date : 22 May 2006

View/Download Algorithms

Algorithms for Programmers

0 comments
This draft is first created to accompany the already established collection of FXT libraries by the same author, on the fast transforms and low level algorithms. So far there has been 23 chapters of selected algorithms, each contains the necessary theorems and the corresponding code. While some topics (like Fast Fourier Transforms) need a clear and explicit introduction, some others (like the bit wizardry chapter) seem to be best presented by basically showing the code with just a few comments. The pseudo language Sprache is used mainly when the corresponding C++ does not appear to be self-explanatory. Still, larger pieces of code are presented in C++.

The latest 23 chapters so far:
- Bit wizardry
- Permutations
- Sorting and searching
- Data structures
- Combinatorial algorithms
- Searching paths in directed graphs
- The Fourier transform
- Algorithms for fast convolution
- The Hartley transform (HT)
- Number theoretic transforms (NTTs)
- The Walsh transform and its relatives
- The Haar transform
- and 10 chapters on arithmetical algorithms

The theorem parts is presented in a straightforward and point-to-point style, useful for both learning and quick reference purposes. And the implementation source code is kept in a strict and optimized style. And since I'm personally not very fond of devouring algorithm theorems with those curly mathematic notations, I found the source code really helpful in understanding them.

Overall, this is a nice collection of algorithms in a compact and no-nonsense style with reasonably optimized working code and pseudo-code. Definitely will do a great favor for students of computer science.

Since this book is still a draft, the readers are welcome to criticize and make suggestions. Publication is planned for summer 2005.

Author(s) : Jörg Arndt
Last Updated : February 14, 2007
This is a draft -- a work in progress

View/Download Algorithms for Programmers