Four-Project Series

Four Small Algorithm Projects with Rust you own this product

'); $(document.body).append('
loading reading lists ...
'); function adjustReadingListIcon(isInReadingList){ $readingListToggle.toggleClass("fa-plus", !isInReadingList); $readingListToggle.toggleClass("fa-check", isInReadingList); var tooltipMessage = isInReadingList ? "edit in reading lists" : "add to reading list"; $readingListToggle.attr("title", tooltipMessage); $readingListToggle.attr("data-original-title", tooltipMessage); } $.ajax({ url: "/readingList/isInReadingList", data: { productId: 3465 } }).done(function (data) { adjustReadingListIcon(data && data.hasProductInReadingList); }).catch(function(e){ console.log(e); adjustReadingListIcon(false); }); $readingListToggle.on("click", function(){ if(codePromise == null){ showToast() } loadCode().then(function(store){ store.requestReadingListSpecificationForProduct({ id: window.readingListsServerVars.externalId, manningId: window.readingListsServerVars.productId, title: window.readingListsServerVars.title }); ReadingLists.ReactDOM.render( ReadingLists.React.createElement(ReadingLists.ManningOnlineReadingListModal, { store: store, }), document.getElementById("reading-lists-modal") ); }).catch(function(e){ console.log("Error loading code reading list code"); }); }); var codePromise var readingListStore function loadCode(){ if(codePromise) { return codePromise } return codePromise = new Promise(function (resolve, reject){ $.getScript(window.readingListsServerVars.libraryLocation).done(function(){ hideToast() readingListStore = new ReadingLists.ReadingListStore( new ReadingLists.ReadingListProvider( new ReadingLists.ReadingListWebProvider( ReadingLists.SourceApp.marketplace, getDeploymentType() ) ) ); readingListStore.onReadingListChange(handleChange); readingListStore.onReadingListModalChange(handleChange); resolve(readingListStore); }).catch(function(){ hideToast(); console.log("Error downloading reading lists source"); $readingListToggle.css("display", "none"); reject(); }); }); } function handleChange(){ if(readingListStore != null) { adjustReadingListIcon(readingListStore.isInAtLeastOneReadingList({ id: window.readingListsServerVars.externalId, manningId: window.readingListsServerVars.productId })); } } var $readingListToast = $("#reading-list-toast"); function showToast(){ $readingListToast.css("display", "flex"); setTimeout(function(){ $readingListToast.addClass("shown"); }, 16); } function hideToast(){ $readingListToast.removeClass("shown"); setTimeout(function(){ $readingListToast.css("display", "none"); }, 150); } function getDeploymentType(){ switch(window.readingListsServerVars.deploymentType){ case "development": case "test": return ReadingLists.DeploymentType.dev; case "qa": return ReadingLists.DeploymentType.qa; case "production": return ReadingLists.DeploymentType.prod; case "docker": return ReadingLists.DeploymentType.docker; default: console.error("Unknown deployment environment, defaulting to production"); return ReadingLists.DeploymentType.prod; } } }); } });
prerequisites
intermediate Rust
skills learned
sorting and searching • recursion • backtracking • the RSA algorithm • numeric algorithms (GCD, factoring, prime testing) • decision tree search • branch and bound • dynamic programming
Rod Stephens
4 weeks &middot 5-7 hours per week average &middot INTERMEDIATE

pro $24.99 per month

  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose one free eBook per month to keep
  • exclusive 50% discount on all purchases

lite $19.99 per month

  • access to all Manning books, including MEAPs!

team

5, 10 or 20 seats+ for your team - learn more


Algorithms make the computer science world go round—and they’re a vital skill for any developer to master. In this series of liveProjects, you’ll explore four essential algorithm topics through engaging, hands-on Rust challenges. You’ll learn how to use sorting algorithms to make sense of messy, unorganized data; solve the tricky Tower of Hanoi puzzle with recursion; secure messages with RSA encryption; and even tackle the infamous 0-1 knapsack problem with dynamic programming techniques. The series is a workout for the programmer’s brain, perfectly suited for building Rust muscles.

These projects are designed for learning purposes and are not complete, production-ready applications or solutions.

An excellent introduction to dynamic programming and related techniques in Rust.

Srikar Vedantam, Senior Software Engineer, Volvo Group

here's what's included

Project 1 Sorting and Searching

Sorting is one of the most important skills you can learn to make sense of messy data—and in this liveProject, you’ll discover sorting algorithms you can implement with Rust. You don’t need advanced Rust knowledge. With only the basics, you’ll tackle three of the huge number of sorting algorithms available: bubble sort, quicksort, and counting sort. But that’s not all: You’ll also experiment with a pair of search algorithms for linear and binary search. Before long, you’ll have an excellent grasp of the best sort and search algorithms for your needs.

Project 2 Problem-Solving with Recursion

The Tower of Hanoi is one of the most famous (and fun!) mathematical puzzles you can tackle. In this liveProject, you’ll set out to solve this tricky challenge using recursive functions in the Rust programming language. Kickstart your journey with factorials, then calculate Fibonacci numbers and solve the Knight’s Tour and N-Queens problems. Then, you’ll be ready to take on the Tower of Hanoi—and transfer your new recursion skills to multiple other problems.

Project 3 Public Key Cryptography

In this liveProject, you’ll use Rust and RSA encryption to secure the emails of your antique marble collection business. You’ll steadily build up different parts of the RSA encryption process before bringing each together in a working RSA example that can both encrypt and decrypt your email messages. Throughout the journey, you will acquire knowledge about prime number identification, factoring, probabilistic generation of random primes, and rapid exponentiation techniques.

Project 4 Dynamic Programming

When your house is on fire, and you need to save your priceless art in a panic room, what are you going to do? Write a Rust program to solve the “knapsack problem” of course! In this liveProject, you’ll tackle this problem—one of the more challenging ones in computer science. The knapsack problem is known for its difficulty, as its possible solutions grow exponentially as the number of items increases. You’ll work with different methods to solve the problem, including recursion and dynamic programming techniques.

book resources

When you start each of the projects in this series, you'll get full access to the following book for 90 days.

choose your plan

team

monthly
annual
$49.99
$399.99
only $33.33 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • Four Small Algorithm Projects with Rust project for free

Delightful project!

William Dobbins, Senior Software Engineer, Five9

The quality of descriptions and the ramping up of difficulty from the first problem to the later ones was great.

project author

Rod Stephens

Rod Stephens started out as a mathematician but discovered the fun of algorithms and has been programming ever since. Rod was a Microsoft Visual Basic Most Valuable Professional (MVP) for 15 years, has spoken to user groups and conferences, and has taught introductory programming courses. He has written more than 35 books including Essential Algorithms: A Practical Approach to Computer Algorithms Using Python and C# and Beginning Software Engineering, both of which include material related to this series of liveProjects.

Prerequisites

These liveProjects are for Rust programmers who want to flex their skills. You should know Rust basics, but you don’t need any advanced knowledge or capabilities.

TOOLS
  • Intermediate Rust
TECHNIQUES
  • Rust arrays and slices
  • Rust structs and vectors
  • Basics of math

features

Self-paced
You choose the schedule and decide how much time to invest as you build your project.
Project roadmap
Each project is divided into several achievable steps.
Get Help
While within the liveProject platform, get help from other participants and our expert mentors.
Compare with others
For each step, compare your deliverable to the solutions by the author and other participants.
book resources
Get full access to select books for 90 days. Permanent access to excerpts from Manning products are also included, as well as references to other resources.
RECENTLY VIEWED