Theory: Lesson 1

Overview
Before we get into actual theory, we have to build up a foundation in computer science in general.

What is Computer Science?

 * This question is a bit difficult to answer. Literally the phrase means the study of computations, but what exactly this entails varies depending on who you ask. I suppose it could be thought of as the study of algorithms and of the manipulation and interpretation of information. Often, this done by digital computers, but, as you will come to find out, they are not essential.

What is an algorithm?
An algorithm is a "step-by-step set of operations to be performed". Algorithms are a very widely encompassing idea, but in short, they are anything you want them to be.

What is information?

 * It is a "step-by-step set of operations to be performed". This is fundamentally what it is. Algorithms can be as long or short as complex or simple as you want them to be.
 * Information is... well information. It is a bit hard to really nail down what exactly it is. I guess the two essential parts of it are distinctness and meaning. Distinctness in much of computer science is seen in the binary system "1" or "0" (there are ways distinctness is seen but I won't get into those here). Meaning is not necessarily everyone will agree on is necessary to information, but for basically any of our purposes it is. What it means is that under some transformation it can be interpretted either by a person or a computer. For example, if I take 01000001, most people would not be able to understand what that means, but under a transformation, which in this case is binary to text, it is an "A". The same is true if I were to give you 情報. Most people would not know what that means, but, by a transformation, which in this case is Japanese to English, it means "information".

Computers. How do they work?

 * This is an important question for many fields, but from most computer scientists' point of view these things don't matter very much. At an introductory level, what we need to know is that computers work in a binary system, they are capable of basic logic i.e. comparisons, and, or, xor, etc., and they can do basic operations: +,-,*, and / just to name a few. With these we can do any task that we are presented with. We can even do any task with less than this. Alan Turing proved that any task can be done with just 5 actions: move left, move right, read, write 0, write 1!


 * For our purposes, I think that it is important that you know about one really important topic. That is compilation of programs. It is taking a set of instructions that you write in one form and transforming them into a readable form for a computer. The computer can then do these set of steps.