https://images.unsplash.com/photo-1515879218367-8466d910aaa4?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb

🌟 What is programming?

<aside> ❓ What is programming? Programming is the art to think algorithmically and a key problem solving skill that is a must have in the 21st century. The problem solving skills involved, are:

  1. Breaking down a complex problem into smaller, easier to solve subproblems
  2. Developing universal algorithms to solve problems step-by-step
  3. Implementing an algorithm with a limited instruction set that a computer can understand using a programming language </aside>

<aside> ❓ What does this mean concretely?

Problem solving means translating human-understandable problem descriptions into machine-executable programs. Ideally, machine-executable programs should also be human-understandable; we attain that ideal with abstractions.

Abstractions aid tremendously in developing solutions to problems in a top-down (decomposing a complex problem into simpler subproblems) or bottom-up (composing simple sub-solutions into a complex solution) fashion.

Humans like to organize processes (for example, doing the laundry) in hierarchical levels of abstraction:

do laundry:

wash laundry: 🧼

hang laundry: 🧺

If we keep delving deeper into lower levels of abstraction until we reach individual muscle movements, even the most simple-minded being can do the laundry by following the given instructions carefully. And how do we call such beings? Robots! (From <https://github.com/fredoverflow/karel>)

</aside>

<aside> ❓ Starting to learn programming is hard, especially while you not only struggle to develop the problem solving skills, but you also need to learn a programming language and get used to the way it works. All professional languages that are in use today are complex and can therefore be very overwhelming when you are just getting started.

However, what truly matters in programming are the problem solving skills, not the programming language!

To help you with focusing on learning the basic programming skills and train your problem solving ability I have compiled for you a selection of games and puzzles that will help you to develop these.

</aside>

<aside> ❗ All of these games can be played for free without the need to make an account. If you do wish to make an account (if you want to save your game, for example) please make sure to

  1. Use a private email address. Do not use your school email address in any circumstances!
  2. Ask your parents for permission first before you make an account, if you are underage. </aside>

🌟 For Beginners: Games and Puzzles

<aside> ❓

Here are two types of games to help you learn programming: puzzle games based on Karel the Robot and the RPG's CodeCombat and Ozaria. The Karel the Robot games' focus lies on teaching the core concepts of programming without focusing on the chosen of programming language. The RPG's do the same, but specific to a chosen programming language.

</aside>

🌟 Karel the Robot

<aside> ❓

Karel the Robot is a set of puzzle games where you are controlling the robot Karel to solve certain tasks. As with any robot you have only a very limited instruction set available to control it. In addition you are given the core basic set of programming tools, which are present in every programming language to solve the puzzles. This makes Karel the Robot the best game to learn programming. It is a very popular teaching aid to teach programming to beginners at university.

</aside>

Karel the Robot games


🌟 RPG and Adventure games

<aside> ❓ CodeCombat and Ozaria are two RPGs and puzzle games where you can learn how to code from scratch and step-by-step as a beginner. In both games you are providing instructions to your character and solve puzzles by using code.

</aside>