**An adjacency list represents a graph (or a tree)** as an array of nodes that include their list of connections. Let’s first see how it looks like with a graph and its equivalent adjacency list representation:

The idea is pretty simple : the index of the array represents a node and each element in its list represents an outgoing connection with another node. Easy to create, easy to manipulate, here is how the data could be represented in JSON :

`[`

[1, 2, 3],

[0, 2],

[0, 1],

[0]

]

**Yes, it’s that simple!** It includes all the information we…

A pull request flow is a lightweight, 6 steps, branch-based workflow.

Note: this guide some quotations from GitHub Guides (Open Source).

Here is an overview of the pull request workflow:

0. “Pull” the changes to your local machine (get the most recent base)

1. Create a “branch” (version)

2. Commit the changes

3.a Push your changes

3.b Open a “pull request” (propose changes)

4. Discuss and review your code

5. Rebase and tests

6. “Merge” your branch to the master branch

“**Git is a free and open source distributed version control system** designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance.” (Git)

But first thing first : what is a “version control system”, and why should we care?

A version control system (VCS) tracks changes to files. As we **modify files, the system records and saves each change within an history**. This allows to restore a previous version of your code at any time. …

In our previous courses, we have seen how to perform the four fundamental operations (add, subtract, multiply and divide) on both natural numbers and integers. However, we didn’t handle more complex cases such as when it was not dividing things up exactly. This is the subject of this important course: **the Euclidean division — or division with remainder**.

Don’t worry, the name and importance hide something very easy to understand and perform ;)

Euclidean division, and algorithms to compute it, are fundamental for many questions such as for finding the **greatest common divisor (GCD)** or in modular arithmetic — **modulo…**

**Here is a glossary of many terms used every day by tech people and programmers; this is a light and general glossary of many terms. Definitions are kept as simple and short as possible.**

This may be used as a first overview of the programming world. This glossary is also a good fit if you ever wanted to be able to understand and communicate with developers or any other people working on digital projects.

The back-end, or the “server-side”, is basically everything that is behind the scene. Systems have all kinds of logic that happen in the background that make…

In the previous lesson, we have learned about natural, or whole, numbers (0, 1, 2, 3…). It’s now time to enlarge our vision of numbers with integers. **Integers are just like whole numbers, but they also include negative numbers: {…-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5…}.** The set of integers is noted **Z**.

In other words, the **set of integers is the union of the set of natural numbers and their opposites**. If **a is an natural number** then **-a is an integer of opposite sign**. …

A natural number is a **positive and “without comma” number such as 1, 2, 3 … and 0**. **The smallest element is 0 and there is no greater element**: you can count without ever stopping.

Natural numbers are **the most commonly used numbers in everyday life**, they allow you to count a distinct number of objects (or units). For example, we can have 2 pens, 1 cat and a bill of 5 dollars in our pocket etc.

The set of natural whole numbers is noted N, it is a tiny part (even if it is infinite) of existing numbers. …

In this introduction we will see the vocabulary and the calculation rules used for all the set of numbers. This may seem complicated at first, but for each set (see Quick Access above) we will explain in detail and with examples how to do it. **This general vision will then become super practical to quickly consult all the rules, the vocabulary and what each set represents.**

Let’s start with the big picture, how are the first sets of numbers categorized?

**N** : A natural integer is a **positive and “without comma” number such as 0, 1, 2, 3 …**

**Z**…

**A Binary Search Tree (BST), Ordered Tree or Sorted Binary** is the first tree data structure we are studying. Unlike Arrays, Linked Lists, Stacks and Queues which are linear data structures, a Tree **is a hierarchical (and nonlinear) data structure which is intrinsically recursive**. Still, BST are easy to understand and manipulate. Here is how it looks:

One reason to use trees might be because we want to store information that naturally forms a hierarchy. Another one is their very important characteristic that **allows fast — O(log n) — insert, search and delete operations**.

Before tackling BST it is important…

What’s the shortest drive from our place to the nearest park?

How do we find a way through a maze?

Can we program a game character to find the exit avoiding enemies?

Pathfinding algorithms address the problem of **finding a path from a source to a destination avoiding obstacles and minimizing the costs **(time, distance, risks, fuel, price, etc.). This is a common programming challenge. Mainly known from navigation and games, we will find that the core algorithms apply to a huge range of problems.

For a brief introduction about mazes and why we enjoy them so much, please refer…

Learn sciences with your senses