*This article was first published on April 15, 2020 on my personal blog here: **https://www.andreadiotallevi.com/blog/big-o-notation-and-the-magic-of-time-complexity**.*

Have you ever wondered how your algorithm would perform if you *drastically increase* the input data set? The concept programmers use to **compare algorithms’ behaviours** is the big-O mathematical notation.

Big-O notation is used in Computer Science to describe the **worst-case** performance or complexity of an algorithm, ignoring low-level details such as the implementation programming language, the hardware the algorithm runs on, or the instruction set of the given CPU.

In this article I will explore the fundamental components of algorithm complexity analysis, describe how…

*This article was first published on February 20, 2020 on my personal blog here: **https://www.andreadiotallevi.com/blog/how-to-incrementally-develop-an-algorithm-using-test-driven-development**.*

In the world of software development, test-driven development (TDD) is a discipline where failing tests are written first, and *only then* is the actual software code created, aiming to pass the newly-generated tests.

In this article, I will explore the fundamental components of test-driven development, with an example of how to *incrementally* develop an algorithm using the TTD cycle.

The example I will use is the prime factors kata, which challenges you to find all the prime factors of a given integer. …

Software engineer, architect, pianist, passionate about algorithms, web technologies and learning new skills.