https://medium.com/@alexandragrosu03/essential-programming-concepts-every-beginner-should-know-4be9f9b81e56