This repo consists of my notes of algorithms and datastructures classes taught in University of Cyprus.
The repo contains most, if not all content as taught in the classes along with accompanied code. For educational purposes, the code is written in python and/or C. Special cases and optimisations that are either not possible in python or make little sense to implement in Python, will be implemented C. It's expected that the reader is familiar with programming, and Object Oriented Programming and pointers.
Example of this, is a double link linked list with only one (1) field for neighbouring elements.
- Lecture 0 - What are algorithms and their importance.
- Lecture 1 - Big-O notation
- Lecture 2 - Runtime analysis Examples
- Lecture 3 - Abstract datatypes
Note : The content and lectures above, are only those I have completed thus far. For a complete list of the content I am working on, checkout the roadmap.
All code will be marked ```Language ...code... ``` when the lecture is read in raw format. When viewed through Github and Pandoc, it will be color coded based on the language as such:
- Python
class foo: def __init__(self): print("bar")
- All Python code is written with Python 3.6
- C
#include <stdio.h> int main(void){ char * foo = "bar"; printf("%s",foo); return 0; }
- All C code is Compiled with
gcc 7.2.0
and flags-Wall -pedantic
onManjaro Linux
.
- All C code is Compiled with
- Write Lectures 0 - 3:
- Lecture 0 - What are algorithms and their importance.
- Lecture 1 - Big-O notation
- Lecture 2 - Runtime analysis Examples
- Lecture 3 - Abstract datatypes
- Rewrite Readme.md
- Move Raw and Compiled lectures to their own folders.
- Fix some grammar/spelling mistakes as well as some formula visibility issues in Lectures 0-3.
Write the following Lecture notes:
- Lecture 4 - Stacks and Queues.
- Lecture 5 - Singly Linked Lists.
- Lecture 6 - Cyclical Lists, Space optimisations.
- Lecture 7 - Basic sorting algorithms.
- Lecture 8 - Advanced Sorting algorithms.
- Lecture 9 - Trees, definitions and operations.
- Lecture 10 - Binary Search Trees.
- Lecture 11 - Balanced Trees.
- Lecture 12 - AVL Trees, B-trees.
- Lecture 13 - 2-3 Trees, R-trees.
- Lecture 14 - Other trees.
- Lecture 15 - Recursion.
- Lecture 16 - Heaps.
- Lecture 17 - Heap sort.
- Lecture 18 - Heap operations.
- Lecture 19 - Graphs I.
- Lecture 20 - Graphs II - Prim's, Kruskal's.
- Lecture 21 - Graphs III - Minimum spanning Trees.
- Lecture 22 - Graphs IV - Dijkstra's algorithm , Euler graphs.
- Lecture 23 - Hashing I.
- Lecture 24 - Hashing II.
- Lecture 25 - Hashing Other hashing methods.
- Lecture 26 - Probabilistic datastructures.