Readme
About this repo
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 Object Oriented Programming and pointers.
Content
Lecture Notes
- Lecture 0 - What are algorithms and their importance.
- Lecture 1 - Big-O notation
- Lecture 2 - Runtime analysis Examples
- Lecture 3 - Abstract datatypes
Note : The lectures above are only the lectures I have compiled so far. For a complete list of the Lectures I am working on, checkout the roadmap.
Algorithms
Check out Algorithms.md for a list of all algorithms in the repository
Datastructures
Check out Datastructures.md for a list of all Datastructures implemented in the repository
Note style
Code
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
Lectures
Ideas and information presented in Lectures will be written and explained in the equivalent Lecture markdown file. Some Lectures are split into more parts and others are condensed such that they make sense together.
Roadmap
- 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.