The Roadmap

A proper path to learn coding for a beginner ‘only’ takes these five heuristic steps:

  1. Step up a computer and its development environment;
  2. Learn how to use the computer and, to a basic level, how computer works;
  3. Lear a handful of programming languages and tools;
  4. Learn the theories coding, including algorithms, operating systems, etc,
  5. Put all of the knowledge into practice by writing a large project.

Upon completion of these five steps you can claim youself a programmer. The ocean of knowledge of computer science, however, is wide and deep, yet at this point you equipped with enough knowledge and experience to explore it with free will.

Step 0: Setting Up a Computer

One can not learn coding without a computer.

For any practical advices on buying a computer, see appendix.

A functional computer also needs an operating system. I recommend Linux, which is designed by and for the programmers and can greatly boost your productivity.

Check what are softwares and choosing OS.

To make an informed choice on choosing the hardwares and softwares, you need to learn the basics of how each piece of the hardwares and software work together to produce the powerful machine that we call a computer today. See what is a computer.

Step 1: Learn the Basics

The first step after obtaining the computer is getting to know how to use it most effectively.

Computers usually provide two interface for human interaction: graphical interface and commmand line interface. Graphical user interface (GUI) allows users to control the computer by clicking buttons, using dropdown manuals, and various other graphical utilities. In comparison, users of the command line interface (CLI) control the computer by typing the command in the terminal.

Although GUI may seem more intuitive and easier to use, CLI has its unique advantages in efficiency, customisability, and automation. You may not believe it, but almost all tasks that are done on GUI can be done in a different way in CLI, including writing code, viewing image, even browsing internet.

An education in coding without learning CLI would be incomplete.

Check how to using the computer on command line here.

Step 2: Acquire Several Programming Languages

Now the true works begin: you need to master at least a handful of programming languages. Learning a programming lanuguage is not so difficult as you may imagine.

Step 3: Dive Deeper

In the step the act of coding become a science. Many programs, initially, may only need some intuitions, but ingenuity wears out quickly. Very soon you will encounter truely difficult problems, some of them remained unsolved today1, and one has to resort to literature, textbooks, and laborious study for solution, if one exists.

Step 4: Grand Final

A bad Example: The naive Method to learn coding.

The naive definition for coding is to write codes in a programming language that can run on a computer. To achieve this is easy: pop up python interactive mode, jupyter notebook, or any online code editor for python, and type

print("hello world!")

The next step is to find some tutorials for python grammar and mock projects. After writing several hundred lines of code, finishing ten tutorials, and uploading them to Github, you proudly add python into your CV after only one week of work.

This method, however, will not get you far. The reason is that each tutorial will only teach you to solve a specific problem, while in coding, you will frequently encounter new problems whose solution is not written as a tutorial and published online.

To create a truly amazing software, such as an operating system or a programming language, requires deep understanding on multi-disciplinary fields. To name a few, one need to master the programming tools including the programming language, design an effective software structure, understand various programming protocols and standards, know how the low level hardware works, and study many applied and even pure mathematics like algorithmic analysis, logics, and category theory.

Studying these subjects is a laborious process, and very few may claim to master all of them. In many circumstances, one who know only a few parts can be called an expert.2

You shall be, nevertheless, encouraged to take this journey, and your inner ambitions shall be alighted, because, by following this tutorial to the end, you can proudly and righteously call yourself a master of computer programming.

1

The most famous unsolved problem in computer science, which is also one of the seven millennium prize problem by Clay Institute, is P vs NP. To put it simply, it asks can we find the solution of a problem quickly, if we can determine the rightfulness of any purposed solution quickly. This is a quick philosophical problem, but it is intimately related to computer science. To give an naive example, if there is a magical machine that give correct answer of yes or no to any question asked, can we solve all the problems in the world? An naive solution is to ask, for a question Q, the machine is ‘a’ the first letter of a computer program that can solve the question ‘Q’? Then asking in turns ‘b’, ‘c’, ‘d’, spaces, etc, so on the so forth. It seems like we will finally get a valid program to solve any mystical problem Q. However, this argument is a fallacy, as such a program may not exist, or, if exist, may not terminate for finite steps.

2

The author, at the time of writing, is a final year undergraduate student. In no ways the author may be regarded as an expert in these fields. He is actively learning and consulting other experts while composing this book. Come, readers! We shall learn and advance together.