<commit_before># Computer Science - Practice and Exploration

This repository will be a place to practice computer science and crytpography principles in Golang.

The following items are going to be examined:

### Data Structures

* [Linked List](https://github.com/dansackett/computer-science/blob/master/data-structures/linked-list)
* Binary Search Tree
* Red-Black Tree
* AVL Tree
* Heap (Binary, Binomial, Fibonacci)
* B-Tree
* Hash Tables
* Matrix
* Min/Max Heap
* Priority Queue
* [Queue](https://github.com/dansackett/computer-science/blob/master/data-structures/queue)
* Deque
* Stack
* Trie
* [Graph](https://github.com/dansackett/computer-science/blob/master/data-structures/graph)

### Graph algorithms

**Shortest path:**
* [Breadth First Search](https://github.com/dansackett/computer-science/blob/master/algorithms/graph/search)
* Dijkstra

**Sorting:**
* Topological Sort

### Math algorithms

* Binary GCD algorithm
* Closest pairs
* FastPower
* Fibonacci
* Fisher-Yates Shuffle
* Erastothenes Sieve
* Extented GCD algorithm
* Karatsuba's Multiplication
* Newton's Square Root
* Permutations Count
* Strassen's matrix multiplication
* Randomized Selection

### Sorting algorithms

* Bubble Sort
* Heap Sort
* [Quick Sort](https://github.com/dansackett/computer-science/blob/master/algorithms/sorting/quick)
* [Merge Sort](https://github.com/dansackett/computer-science/blob/master/algorithms/sorting/merge)
* [Insertion Sort](https://github.com/dansackett/computer-science/blob/master/algorithms/sorting/insertion)
* Shell Sort
* [Selection Sort](https://github.com/dansackett/computer-science/blob/master/algorithms/sorting/selection)

### Searching algorithms

* [Binary Search](https://github.com/dansackett/computer-science/blob/master/algorithms/searching/binary)
* [Linear Search](https://github.com/dansackett/computer-science/blob/master/algorithms/searching/binary)
* Depth First Search
* Breadth First Search

### Misc

* [Recursive Palindromes](https://github.com/dansackett/computer-science/blob/master/algorithms/recursion/palindromes.go)
* [Towers of Hanoi](https://github.com/dansackett/computer-science/blob/master/algorithms/recursion/towers_of_hanoi.go)
* [Recursive Powers](https://github.com/dansackett/computer-science/blob/master/algorithms/recursion/powers.go)

### Design Patterns

* Factory
* Singleton
* Adapter
* Decorator
* Observer
* Iterator
* MVC

### Cryptography

**Symmetric-Key**
* Stream Ciphers (RC4, Salsa20, SOSEMANUK, FISH)
* Block Ciphers (AES, DES, Triple DES, Blowfish)
* Hash Functions (MD5, SHA1, SHA2, HMAC, )

**Public Key Cryptography**
* RSA Algorithm
* DSA Algorithm<commit_msg>Adding some new algorithms and data structures to work on<commit_after># Computer Science - Practice and Exploration

This repository will be a place to practice computer science and crytpography principles in Golang.

The following items are going to be examined:

### Data Structures

* [Linked List](https://github.com/dansackett/computer-science/blob/master/data-structures/linked-list)
* Binary Search Tree
* Red-Black Tree
* AVL Tree
* Heap (Binary, Binomial, Fibonacci)
* B-Tree
* Hash Tables
* Matrix
* Min/Max Heap
* Priority Queue
* [Queue](https://github.com/dansackett/computer-science/blob/master/data-structures/queue)
* Set
* Deque
* Stack
* Trie
* Suffix Array
* [Graph](https://github.com/dansackett/computer-science/blob/master/data-structures/graph)

### Graph algorithms

**Shortest path:**
* [Breadth First Search](https://github.com/dansackett/computer-science/blob/master/algorithms/graph/search)
* Depth First Search
* Dijkstra
* Floyd–Warshall

**Sorting:**
* Topological Sort

### Math algorithms

* Binary GCD algorithm
* Closest pairs
* FastPower
* Fibonacci
* Fisher-Yates Shuffle
* Erastothenes Sieve
* Extented GCD algorithm
* Karatsuba's Multiplication
* Newton's Square Root
* Permutations Count
* Strassen's matrix multiplication
* Randomized Selection

### Sorting algorithms

* Bubble Sort
* Heap Sort
* Shell Sort
* Heap Sort
* Radix Sort
* Bucket Sort
* [Quick Sort](https://github.com/dansackett/computer-science/blob/master/algorithms/sorting/quick)
* [Merge Sort](https://github.com/dansackett/computer-science/blob/master/algorithms/sorting/merge)
* [Insertion Sort](https://github.com/dansackett/computer-science/blob/master/algorithms/sorting/insertion)
* [Selection Sort](https://github.com/dansackett/computer-science/blob/master/algorithms/sorting/selection)

### Searching algorithms

* [Binary Search](https://github.com/dansackett/computer-science/blob/master/algorithms/searching/binary)
* [Linear Search](https://github.com/dansackett/computer-science/blob/master/algorithms/searching/binary)

### String Matching

* Knuth-Morris-Pratt (KMP)
* Rabin-Karp

### Misc

* [Recursive Palindromes](https://github.com/dansackett/computer-science/blob/master/algorithms/recursion/palindromes.go)
* [Towers of Hanoi](https://github.com/dansackett/computer-science/blob/master/algorithms/recursion/towers_of_hanoi.go)
* [Recursive Powers](https://github.com/dansackett/computer-science/blob/master/algorithms/recursion/powers.go)

### Design Patterns

* Factory
* Singleton
* Adapter
* Decorator
* Observer
* Iterator
* MVC

### Cryptography

**Symmetric-Key**
* Stream Ciphers (RC4, Salsa20, SOSEMANUK, FISH)
* Block Ciphers (AES, DES, Triple DES, Blowfish)
* Hash Functions (MD5, SHA1, SHA2, HMAC, )

**Public Key Cryptography**
* RSA Algorithm
* DSA Algorithm
{'fraction_non_alphanumeric': 0.12958883994126286, 'fraction_numerical': 0.0022026431718061676, 'mean_word_length': 5.403055229142185, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 26, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7069666', 'n_tokens_mistral': 1863, 'n_tokens_neox': 1754, 'n_words': 358}