/computer-science

A collection of data-structures and algorithms in Golang

Primary LanguageGoMIT LicenseMIT

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:

Notes

Data Structures

Abstract Data Types

Graph algorithms

Shortest path:

  • Dijkstra
  • Floyd–Warshall

Sorting:

  • Topological Sort

Searcing:

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

Bad:

Basic:

Fast:

Other

  • Bucket Sort
  • Radix Sort

Searching algorithms

String Matching

Common Interview Questions

Misc

Design Patterns

Cryptography (Terms)

Symmetric-Key

  • Stream Ciphers (RC4, Salsa20, SOSEMANUK, FISH)
  • Block Ciphers (AES, DES, Triple DES, Blowfish)

Public Key Cryptography

  • RSA Algorithm
  • DSA Algorithm

Misc

  • Hash Functions (MD5, SHA1, SHA2, HMAC)
  • PGP