https://medium.com/@sabamalik_51169/learning-the-basics-of-coding-involves-understanding-fundamental-concepts-and-gaining-practical-459e08f987af