/Data-Structures-and-Algorithms

Repository for the Data Structures and Algorithms course

Primary LanguageC#MIT LicenseMIT

Data-Structures-and-Algorithms

Repository for the Data Structures and Algorithms course

Course program

Course introduction

  • Course program
  • Trainers
  • Resources
  • Examination

Algorithms complexity

  • Data Structures Overview
    • Linear Structures, Trees, Hash Tables, Others
  • Algorithms Overview
    • Sorting and Searching, Combinatorics, Dynamic Programming, Graphs, Others
  • Algorithms Complexity
    • Time and Memory Complexity
    • Mean, Average and Worst Case
    • Asymptotic Notation O(g)

Linear data Structures

  • Lists
    • Static and Linked Implementation
    • List and LinkedList
  • Stacks
    • Static and Linked Implementation
    • The Stack Class
  • Queues
    • Circular and Linked Implementation
    • The Queue Class

Trees and Tree Traversals

  • Tree-like Data Structures
    • Trees and Related Terminology
  • Implementing Trees
  • Traversing Trees
  • DFS and BFS Traversals
  • Balanced Search Trees
  • Balanced Trees in .NET

Hash tables

  • Dictionaries
  • Hash Tables
  • Dictionary<TKey, TValue> Class
  • Sets: HashSet and SortedSet

Advanced Data Structures

  • Standard .NET Data Structures
  • Special .NET Collections
  • Wintellect Power Collections
    • Installation
    • Power Collection Classes
  • Implementing Priority Queue
  • C5 Collections
  • Other Advanced Data Structures
    • Suffix trees, interval trees, ropes, tries, etc.

Data Structures Efficiency

  • Fundamental Data Structures – Comparison
    • Arrays
    • Lists
    • Trees
    • Hash-Tables
    • Sets
    • Bags
  • Choosing Proper Data Structure

Recursion

  • What is Recursion?
  • Recursion with Examples
    • Calculating Factorial Recursively
    • Generating All 0/1 Vectors Recursively
    • Finding All Paths in a Labyrinth Recursively
  • Recursion or Iteration?
  • Harmful Recursion
  • Optimizing Bad Recursion
  • Memoization

Sorting Algorithms

  • Sorting and classifications
  • Review of the most popular sorting algorithms:
    • Bubble sort
    • Quick sort
    • Merge sort
    • Heap sort
  • Shuffling algorithms

Searching Algorithms

  • Searing algorithms
    • Linear search
    • Binary search
    • Interpolation search

Combinatorics

  • Definitions in Combinatorics
  • Permutations
  • Combinations
    • Pascal's Triangle
  • Binary Vectors
  • Resources

Dynamic Programming

  • Minimum and Maximum
  • Divide-and-Conquer
  • Dynamic programming Concepts
  • Dynamic programming with Examples:
    • Fibonacci numbers
    • Longest increasing subsequence
    • Longest common subsequence

Graphs

  • Graph Definitions and Terminology
  • Representing Graphs in C#

Graph Algorithms

  • Graph Traversal Algorithms
  • Connectivity
  • Dijkstra’s Algorithm
  • Topological sorting
  • Prim and Kruskal

Strings and string algorithms

  • Naive search
  • Rabin-Karp
  • Hashing
  • Knuth-Morris-Pratt

State machines

Regular expressions

  • Regular Expression Overview
  • Regex syntax
  • Using regular expression in C#