Skip to main content

The Algorithm Design Manual

  • Textbook
  • © 2020
  • Latest edition

Overview

  • Unique, handy reference package with a practical, hands-on appeal to a wide audience
  • This classic bestseller has been fully updated, and enhanced with new and expanded material on hashing and randomized algorithms, divide and conquer algorithms, and dealing with hard problems (including quantum algorithms)
  • Contains a highly unique catalog of the 75 most important algorithmic problems
  • Additional useful information such as lecture slides and updates available via author's website

Part of the book series: Texts in Computer Science (TCS)

This is a preview of subscription content, log in via an institution to check access.

Access this book

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

eBook USD 49.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book USD 64.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book USD 84.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

') var buybox = document.querySelector("[data-id=id_"+ timestamp +"]").parentNode var buyboxMaxSingleColumnWidth = 480 // springerPlus roll out 10% starts here var springerPlusGroup = setLocalStorageSpringerPlus(); var rollOutSpringerPlus = springerPlusGroup === "B" function setLocalStorageSpringerPlus() { var selectUserKey = "springerPlusRollOut"; var springerPlusGroup = "X"; if (!window.localStorage) return springerPlusGroup; try { var selectUserValue = window.localStorage.getItem(selectUserKey) springerPlusGroup = selectUserValue || randomDistributionSpringerPlus(selectUserKey) } catch (err) { console.log(err) } return springerPlusGroup; } function randomDistributionSpringerPlus(selectUserKey) { var randomGroup = Math.random() < 0.9 ? "A" : "B" window.localStorage.setItem(selectUserKey, randomGroup) return randomGroup } if (rollOutSpringerPlus) { revealSpringerPlus(); } function revealSpringerPlus() { if(buybox) { document.querySelectorAll(".c-springer-plus").forEach(function(node) { node.style.display = "block" }) } } //springerPlus ends here ;[].slice.call(buybox.querySelectorAll(".buying-option")).forEach(initCollapsibles) function initCollapsibles(buyingOption, index) { var toggle = buyingOption.querySelector(".buying-option-price") buyingOption.classList.remove("expanded") var form = buyingOption.querySelector(".buying-option-form") var priceInfo = buyingOption.querySelector(".price-info") if (toggle && form && priceInfo) { toggle.setAttribute("role", "button") toggle.setAttribute("tabindex", "0") toggle.addEventListener("click", function (event) { var expandedBuyingOptions = buybox.querySelectorAll(".buying-option.expanded") var buyboxWidth = buybox.offsetWidth ;[].slice.call(expandedBuyingOptions).forEach(function(option) { if (buyboxWidth <= buyboxMaxSingleColumnWidth && option != buyingOption) { hideBuyingOption(option) } }) var expanded = toggle.getAttribute("aria-expanded") === "true" || false toggle.setAttribute("aria-expanded", !expanded) form.hidden = expanded if (!expanded) { buyingOption.classList.add("expanded") } else { buyingOption.classList.remove("expanded") } priceInfo.hidden = expanded }, false) } } function hideBuyingOption(buyingOption) { var toggle = buyingOption.querySelector(".buying-option-price") var form = buyingOption.querySelector(".buying-option-form") var priceInfo = buyingOption.querySelector(".price-info") toggle.setAttribute("aria-expanded", false) form.hidden = true buyingOption.classList.remove("expanded") priceInfo.hidden = true } function initKeyControls() { document.addEventListener("keydown", function (event) { if (document.activeElement.classList.contains("buying-option-price") && (event.code === "Space" || event.code === "Enter")) { if (document.activeElement) { event.preventDefault() document.activeElement.click() } } }, false) } function initialStateOpen() { var buyboxWidth = buybox.offsetWidth var narrowBuyboxArea = buyboxWidth <= buyboxMaxSingleColumnWidth var allOptionsInitiallyCollapsed = buybox.className.indexOf("all-options-initially-collapsed") > -1 ;[].slice.call(buybox.querySelectorAll(".buying-option")).forEach(function (option, index) { var toggle = option.querySelector(".buying-option-price") var form = option.querySelector(".buying-option-form") var priceInfo = option.querySelector(".price-info") if (allOptionsInitiallyCollapsed || narrowBuyboxArea && index > 0) { toggle.setAttribute("aria-expanded", "false") form.hidden = "hidden" priceInfo.hidden = "hidden" } else { toggle.click() } }) } initialStateOpen() if (window.buyboxInitialised) return window.buyboxInitialised = true initKeyControls() })()

Other ways to access

Licence this eBook for your library

Institutional subscriptions

About this book

"My absolute favorite for this kind of interview preparation is Steven Skiena’s The Algorithm Design Manual. More than any other book it helped me understand just how astonishingly commonplace … graph problems are -- they should be part of every working programmer’s toolkit. The book also covers basic data structures and sorting algorithms, which is a nice bonus. … every 1 – pager has a simple picture, making it easy to remember. This is a great way to learn how to identify hundreds of problem types." (Steve Yegge, Get that Job at Google)

"Steven Skiena’s Algorithm Design Manual retains its title as the best and most comprehensive practical algorithm guide to help identify and solve problems. … Every programmer should read this book, and anyone working in the field should keep it close to hand. … This is the best investment … a programmer or aspiring programmer can make." (Harold Thimbleby, Times Higher Education)

"It is wonderful to open to a random spot and discover aninteresting algorithm. This is the only textbook I felt compelled to bring with me out of my student days.... The color really adds a lot of energy to the new edition of the book!" (Cory Bart, University of Delaware)

"The is the most approachable book on algorithms I have."   (Megan Squire, Elon University)

---

This newly expanded and updated third edition of the best-selling classic continues to take the "mystery" out of designing algorithms, and analyzing their efficiency.  It serves as the primary textbook of choice for algorithm design courses and interview self-study, while maintaining its status as the premier practical reference guide to algorithms for programmers, researchers, and students.

 

The reader-friendly Algorithm Design Manual provides straightforward access to combinatorial algorithms technology, stressing design over analysis.  The first part, Practical Algorithm Design, provides accessible instruction on methods for designing and analyzing computer algorithms.  The second part, the Hitchhiker's Guide to Algorithms, is intended for browsing and reference, and comprises the catalog of algorithmic resources, implementations, and an extensive bibliography. 


NEW to the third edition: 

-- New and expanded coverage of randomized algorithms, hashing, divide and conquer, approximation algorithms, and quantum computing 

-- Provides full online support for lecturers, including an improved website component with lecture slides and videos 

-- Full color illustrations and code instantly clarify difficult concepts 

-- Includes several new "war stories" relating experiences from real-world applications

 -- Over 100 new problems, including programming-challenge problems from LeetCode and Hackerrank. 

-- Provides up-to-date links leading to the best implementations available in C, C++, and Java

 

Additional Learning Tools: 

-- Contains a unique catalog identifying the 75 algorithmic problems that arise most often in practice, leading the reader down the right path to solve them 

-- Exercises include "job interview problems" from major software companies 

-- Highlighted "take home lessons" emphasize essential concepts 

-- The "no theorem-proof" style provides a uniquely accessible and intuitive approach to a challenging subject 

-- Many algorithms are presented with actual code (written in C) 

-- Provides comprehensive references to both survey articles and the primary literature

 

Written by a well-known algorithms researcher who received the IEEE Computer Science and Engineering Teaching Award, this substantially enhanced third edition of The Algorithm Design Manual is an essential learning tool for students and professionals needed a solid grounding in algorithms.   Professor Skiena is also the author of the popular Springer texts, The Data Science Design Manual and Programming Challenges: The Programming Contest Training Manual.

Similar content being viewed by others

Keywords

Table of contents (22 chapters)

  1. Practical Algorithm Design

  2. The Hitchhiker’s Guide to Algorithms

  3. The Hitchhiker’s Guide to Algorithms

Authors and Affiliations

  • Stony Brook University Department of Computer Science, Stony Brook, USA

    Steven S. Skiena

About the author

Dr. Steven S. Skiena is Distinguished Teaching Professor of Computer Science at Stony Brook University, with research interests in data science, natural language processing, and algorithms. He was awarded the IEEE Computer Science and Engineering Undergraduate Teaching Award “for outstanding contributions to undergraduate education ...and for influential textbooks and software.”  

Bibliographic Information

  • Book Title: The Algorithm Design Manual

  • Authors: Steven S. Skiena

  • Series Title: Texts in Computer Science

  • DOI: https://doi.org/10.1007/978-3-030-54256-6

  • Publisher: Springer Cham

  • eBook Packages: Computer Science, Computer Science (R0)

  • Copyright Information: The Editor(s) (if applicable) and The Author(s), under exclusive license to Springer Nature Switzerland AG 2020

  • Hardcover ISBN: 978-3-030-54255-9Published: 06 October 2020

  • Softcover ISBN: 978-3-030-54258-0Published: 07 October 2021

  • eBook ISBN: 978-3-030-54256-6Published: 05 October 2020

  • Series ISSN: 1868-0941

  • Series E-ISSN: 1868-095X

  • Edition Number: 3

  • Number of Pages: XVII, 793

  • Number of Illustrations: 1 b/w illustrations

  • Topics: Programming Techniques, Theory of Computation, Algorithms, Discrete Mathematics in Computer Science

Publish with us

Navigation