Programming is the process of both designing a solution to a problem and writing instructions to solve that problem for the computer to execute using a programming language. It's a bit like preparing a meal. You need to assemble the ingredients for the meal, prepare them, combine them and ... do this in the right order.
This tutorial covers just some of those essential ingredients and how they might be combined to provide solutions to problems. The context here will be relatively simple problems but they form the foundation for further developments should you choose to continue with programming beyond these chapters.
The over-arching context is to provide the skills and understanding for GCSE Computer Science and the language being used will be Python. These same ingredients will be found in other programming languages.
To be successful in this endeavour bear in mind the following:
Do not be intimidated
You will encounter many moments when all you seem to be doing is "getting it wrong". Learning something new is always a challenge. The computer can be a hard taskmaster. If your get your algorithm wrong, the computer will not know it is wrong and just display the wrong result. If you get the code wrong, the computer will tell you but will not be very helpful in telling you where you went wrong. Consequently, it's really easy to feel a failure when you are programming, it's easy to want to give up. We've all been there. The key is to learn from the mistakes, be resilient and don't let that fear or self-doubt prevent you from wanting to continue, wanting to learn and stay curious.
It takes time
The author Malcolm Gladwell suggested it takes 10,000 hours to master a skill. Whether it takes 10,000, 5,000 or 15,000 hours is debateable. The point is we need to invest time in our own learning. How we use that time will be important. Our goal is to learn the fundamentals of the Python programming language and to use those fundamentals to write programs to solve problems. So, use your time doing precisely that. It won't happen overnight and even professional programmers will say they are still learning. It takes time to learn something well.
Learn to code ... by coding
The more you spend time programming, the better you will become. It is like learning how to play the piano. If you don't spend time actually playing the piano you will never become a pianist. Similarly, if you want to be a good footballer - play football! If you want to be a good programmer - write programs! Avoid reading or watching umpteen tutorials on learning how to code. Its better to take what you know and try to apply it to new contexts and new problems. Rather than seeking out new tutorials, look out for new problems to solve.
Apply the Feynman technique
"Knowing" and "Understanding" are different. The eminent physicist Richard Feyman refers to the Teach-back method for reinforcing our understanding. On meeting a new concept think how you might explain this to a friend or member of your family who is not familiar with it. Write out your own explanation of the topic. Where you feel uncertain will be where there are gaps in your knowledge that requires further work.
You don't need to memorise everything
We all have to look things up from time to time. Even the professionals forget some of the syntax of a programming language. The more you code in one language the more you will quite naturally remember the syntax that will be required.
Break down the problem into smaller sub-problems
This is a key skill for all programmers. It can be hard at first but similar to preparing a meal there will be various stages of preparation. You'll get into a mess if you try to fry the onions before they're been both peeled and chopped. The majority of algorithms will come down to some variety of INPUT -> PROCESS -> OUTPUT. This can be applied at both the macro and micro levels. There will be many questions to ask and answer at each stage. How many onions? What type of onions? Should they be sliced, chopped, quartered? How should they be fried? In what type of oil/fat? For how long? It's the same with programming. What data do I need? What type of data will that be i.e. numbers or characters? Where will that data come from i.e. a keyboard, a file, a server on the Internet? How do I need to organise that data? Etc..
Keep it simple
It's easy to get side-tracked and try to add new features to your code. This can be important when learning, playing and experimenting but always keep your eye on the primary challenge and avoid losing focus. Yes, you could read all the data you need for your program from an external file but does the challenge you're trying to solve require that? If not, ignore it for now. Get the simplest possible working solution first. If you have time, then think about possible developments and extensions.
Stay curious
It's an important mindset for the whole of your life. Stay curious, fall in love with learning something new. Programming is so open-ended and here you will take the first steps of an exciting adventure. Who knows where it might end up?