The talk describes algorithm engineering (AE) as a methodology for algorithmic research where design, analysis, implementation and experimental evaluation of algorithms form a feedback cycle driving the development of efficient algorithm. Additional important components of the methodology include realistic models, algorithm libraries, and collections of realistic benchmark instances. We use one main example throughout this paper: sorting huge data sets using many multi-core processors and disks. The described system is the current record holder for the GraySort and MinuteSort sorting benchmarks.Algorithms and data structures are at the heart of every computer application and thus of critical importance for permanently growing areas of engineering, economy, science, and daily life. The subject of algorithmics is the systematic development of efficient algorithms and therefore has pivotal influence on the effective development of reliable and resource-conserving technology. We only mention search engines, bioinformatics, computer graphics, image processing, geographic information systems, cryptography, or planning in production, logistics and transportation as example areas where algorithms play a key role.How is algorithmic innovation transferred to applications? appl. engineering realistic models design implementation libraries algorithm− perf.− guarantees applications deduction falsifiable induction analysis experiments algorithm engineering real Inputs hypotheses Figure 1. Algorithm engineering as a cycle of design, analysis, implementation, and experimental evaluation driven by falsifiable hypotheses.Traditionally, algorithmics used the methodology of algorithm theory which stems from mathematics: algorithms are designed using simple models of problem and machine. Main results are provable performance guarantees for all possible inputs. This approach often leads to elegant, timeless solutions that can be adapted to many applications. The hard performance guarantees lead to reliably high efficiency even for types of inputs that were unknown at implementation time. From the point of view of algorithm theory, taking up and implementing an algorithmic idea is part of application development. Unfortunately, it can be universally observed that this mode of transferring results is a slow process. With growing requirements for innovative algorithms, this causes widening gaps between theory and practice: Realistic hardware with its parallelism, memory hierarchies etc. diverges from traditional machine models.