
Explore linear search, binary search, bubble sort, merge sort, and breadth first search, explaining how breadth first search navigates trees and graphs, with Rust implementations.
How to start developing new and improved Dapps with Rust?
Let's learn the exciting optimizations possible with Rust, and let's start with algorithmic sufficiency first.
Students will learn how to calculate algorithmic efficiency and complexity, and how to design algorithms that are both correct and efficient. The course will cover several algorithmic paradigms, such as divide-and-conquer, dynamic programming, and greedy algorithms. Additionally, the course will introduce students to algorithmic techniques for specific types of problems, such as sorting, searching, graph traversal, and dynamic programming. This course will provide students with a solid foundation in algorithms, including their design, analysis, and implementation. Students will learn to evaluate algorithmic efficiency and complexity and to design algorithms that are both correct and efficient.
Course Outline:
Introduction to Foundry
Sorting Algorithms
Selection sort, insertion sort, merge sort, and quicksort
Analysis of sorting algorithms
Implementation of sorting algorithms in a programming language
Searching Algorithms
Linear search and binary search
Analysis of searching algorithms
Implementation of searching algorithms in a programming language
In Part 2
Graph Algorithms
Graph representation and traversal
Breadth-first search and depth-first search
Dijkstra's algorithm for shortest path
Analysis and implementation of graph algorithms in a programming language
'
In Part 3 with Foundry
Dynamic Programming
Overview of dynamic programming
Memoization and tabulation
Knapsack problem and other examples of dynamic programming
Analysis and implementation of dynamic programming algorithms in a programming language