Algorithmic Design Paradigms

Greedy Algorithms Greedy algorithms aim to make the optimal choice at that given moment. Each step it chooses the optimal choice, without knowing the future. It attempts to find the globally optimal way to solve the entire problem using this method. Why Are Greedy Algorithms Called Greedy? Algorithms are called greedy when they utilise the greedy property. The greedy property is: At that exact moment in time, what is the optimal choice to make?...

November 1, 2020 · 52 min · Bee

All You Need to Know About Big O Notation [Python Examples]

By the end of this article, you’ll thoroughly understand Big O notation. You’ll also know how to use it in the real world, and even the mathematics behind it! In computer science, time complexity is the computational complexity that describes the amount of time it takes to run an algorithm. Big O notation is a method for determining how fast an algorithm is. Using Big O notation, we can learn whether our algorithm is fast or slow....

October 8, 2020 · 22 min · Bee

Python Zero to Hero

What is Python? Python is a programming language created by Guido (pronounced gree-do) Van Rossum. Specifically, Python is an intrepreted, high-level, general purpose programming language. Let’s talk about what these mean. General Purpose General Purpose means that Python was created to do everything. Some programming languages like Matlab or R were created for data science. Others like HTML / CSS were created for web development. Python aims to do everything, it is generalised....

October 1, 2020 · 11 min · Bee

How Does Tor Really Work? The Definitive Visual Guide (2020)

Today, we’re going to do a technical deep-dive into how Tor really works. No mention of how to access Tor, no mention of what might be on Tor. This is how Tor works. Without speculation and without exaggeration of what Tor is. Just a deep-dive into the technical stuff of how Tor works. This article is designed to be read by anyone, with **ZERO **knowledge on networking or Tor. Let’s dive right in....

September 19, 2020 · 31 min · Bee

What Is Dynamic Programming With Python Examples

Dynamic programming is breaking down a problem into smaller sub-problems, solving each sub-problem and storing the solutions to each of these sub-problems in an array (or similar data structure) so each sub-problem is only calculated once. It is both a mathematical optimisation method and a computer programming method. Optimisation problems seek the maximum or minimum solution. The general rule is that if you encounter a problem where the initial algorithm is solved in O(2n) time, it is better solved using Dynamic Programming....

December 31, 2019 · 35 min · Bee

Learn Functional Python in 10 Minutes

In this short 10 minute article, you’ll learn what the functional paradigm is in Python. You’ll also learn about list comprehensions. 📌 Functional Paradigm In an imperative paradigm, we do things by giving the computer a sequence of tasks and then it executes them. While executing them, it can change states. For example, let’s say we set A = 5, then we change the value of A. We have variables in the sense that the value inside the variable varies....

November 20, 2019 · 13 min · Bee

Divide and Conquer Algorithms with Python Examples

Often I’ll hear about how you can optimise a for loop to be faster or how switch statements are faster than if statements. Most computers have over 1 core, with the ability to support multiple threads. Before worrying about optimising for loops or if statements try to attack your problem from a different angle. Divide and Conquer is one way to attack a problem from a different angle. Don’t worry if you have zero experience or knowledge on the topic....

November 20, 2019 · 15 min · Bee

How Does BitTorrent Work? a Plain English Guide

No talk about downloading things on BitTorrent. Or the best clients to do so. Just a deep-dive into the technical side of it. Anyone can read this article. Requires ZERO knowledge on networking or BitTorrent to read this. BitTorrent is one of the most common protocols for transferring large files. In February 2013, BitTorrent was responsible for 3.35% of all worldwide bandwidth, more than half of the 6% of total bandwidth dedicated to file sharing....

November 20, 2019 · 21 min · Bee

Hash functions explained for non cryptographers

A hash function takes a message, m, and returns a pseudo-random string of letters/numbers which should be unique to that message. Let’s say the hash function returns “aBc67D” for the message “I love dogs”. This function should not return the same “aBc67D” for “Donuts are cool”. Hashing algorithms have 3 requirements: A hashing algorithm needs to be reasonably fast to compute and reasonably fast to verify. If you change one single bit anywhere in the message, the outputted string must look completely different....

November 19, 2019 · 10 min · Bee

Public Key Cryptography Simply Explained

Public key cryptography seems magical to everyone, even those who understand it. In this post, I’m going to explain public key cryptography. Public Key Cryptography is based on asymmetric cryptography, so first let us talk about symmetric cryptography. Symmetric Cryptography Your front door is usually locked by a key. This key unlocks & locks your front door. With symmetric cryptography, you have one key which you use to unlock and lock things....

November 19, 2019 · 20 min · Bee