About Course
In this course we will go through basic algorithms and data structures. The code examples are written in C#, but 99% of the material will be clear to any Java programmer, since the syntax of the languages is very similar, and the code examples of algorithms and data structures will generally be almost completely the same in both C# and Java. The course contains only a few lectures dedicated exclusively to C# libraries.
The course currently covers the following topics:
Introduction to Algorithms and Data Structures: Data Structure, Abstract Data Type,
the difference between these concepts. What is an algorithm and why is all this important to us? Introduction to algorithm analysis: how long will it take to execute a program,
construction of log-log graph, approximations, order of increasing complexity (Big-O notation), memory consumption
Arrays: arrays in C#, arrays in memory, complexity of operations on arrays
Sorting algorithms: bubble, selection, insertion, recursion, Shell sort, merge, quick, stability of sorting algorithms
Lists: List built into BCL, nodes (nodes), linked list (singly linked, doubly linked),
LinkedList built in BCL
Stack: theory and practice, on an array,
on a linked list, built into BCL
Queues: theory and practice, on an array, ring buffer,
on a linked list, built into BCL
Search algorithms: linear, binary
Symbolic tables: introduction, API, sequential search tables,
binary search table
Hash tables: introduction, hashing, GetHashCode, approaches to resolving collisions: separate chains and linear probing, Dictionary type built into BCL, types representing sets built into BCL
Trees: Binary Search Tree and its implementation (more to be added in the future)
Pyramids: introduction, pyramids and arrays, heapsort
Various algorithms: this section will be expanded, but for now it covers the “Sieve of Eratosthenes” algorithm
Course Content
Materials and community
-
Course source code