Computer science is a fairly new discipline relative to established disciplines like Mathematics, Physics, Chemistry, and Biology. As mentioned by Hal Abelson, Professor at MIT in this Youtube video, computer science is not about computer as much as physics is not about particle accelerator, biology is not about microscopes… He also pointed out that computer science is not a science. It is not a science because it does not employ the scientific method, i.e. testing hypothesis and forming conclusion. Also, it does not aim to uncover the truth of the physical world.
Computer science is grouped under formal science in Wikipedia. Formal science deals with formal systems while natural science like physics, biology, and chemistry deals with physical systems. Formal systems are created by human and based on mathematics. From my understanding, computer science is more about mathematics than science. Some universities classify it under the mathematics department. However, not all computer science is about mathematics, though they may have intersection areas.
Is computer science engineering? Some universities group computer science with engineering, example: MIT’s Department of Electrical Engineering and Computer Science. Some suggests that computer science deals with the software part while electrical engineering or computer engineering deals with the hardware part.
Computer science is different from software engineering. Computer science focus on studying algorithms while software engineering focus on producing programs through engineering methodologies.
Fields of computer science that are of interest tot me are bioinformatics and artificial intelligence. Bioinformatics is the use of computer science to interpret data supplied by biologists. In this, computer science aids in scientific discoveries. Artificial intelligence however, is about creating intelligent agents. Michio Kaku, a physicist explained that the most advanced robot we have now has the brain capacity of a lobotomized, retarded cockroach. There certainly have many rooms for AI invention to expand. Creating AI is not an easy task.
Algorithms in computer science make complex things easy. Algorithms are methods used to do calculation or solve problems. For example, we want to know the list of prime numbers below 1000, what is the fastest way to do this? What algorithm should we use? We can divide each number by every integer up to itself to test whether it is a prime, but this is cumbersome. One neat way to do this is Sieve of Eratosthenes. Wikipedia has a colored animation to demonstrate how this algorithm works. First, we list out all the numbers from 1 to a given limit n. For example, n = 1000. Starting with the smallest prime number p = 2, we mark off multiples of p (e.g. 4, 6, 8…, as they are multiples, they are not prime) within the limit. Then, we shift p to the next un-marked number, p = 3, similarly, mark off multiples of p within the limit. Continue shifting p to the next unmarked number and mark off its multiples until there is no next unmarked value that p can take. The numbers left un-marked are prime numbers. Sieve of Eratosthenes is faster and save a lot of work. For more algorithms, refer to this Wikipedia article.
Thanks for reading, and I will continue to blog about computer science.