Evolution
Most people don't know what Computer Science is about. Computer Science is the science of automation. It constantly asks one question: how can machine efficiently automate what humans do? It is an interesting science in fact. One that streches its branches into several related fields from Artificial Intelligence to Word Processing, Digital Imagary, Voice and Image (pattern) Recognition and many many more.
Computer Science can be about programming. In fact, by programming we dictate machines what to do and how to do things. This dictation can be in many dialects and languages.
Computer Science can be philosophical. The Matrix trilogy does a fantastic job of exploring some of the philosophical aspects of the computer world. In the Matrix we wonder whether computers can one day "think", and furthermore, whether they can overpower us. In the Matrix we also wonder whether us humans are indeed some sort of machine ourselves and whether our minds can be "hacked."
Computer Science is about laziness. A famous proverb says that laziness sparkles creativity. A friend of mine is trying to write a script that can "automate" the task of data collection and processing. More specifically, he wants to write a program that would produce his master's thesis for him.
Computer Science is about giving human beings more alternatives. It is about opening doors of opportunity to us. It is about sharing music, pictures and data. It is about searching. It is about organizing and about information.
In the field of Algorithms, Computer Scientists think of ways to improve the speed and efficiency of calculation.
In the field of Databases, Computer Scientists think of ways to store, sort and access data.
In the field of Artificial Intelligence, Computer Scientists think of ways to fool humans into thinking that machines are in fact intelligent and self concious.
In the field of Security, Computer Scientists think of ways to protect information from falling into wrong hands.
If Computer Scientists perform the task of teaching computers how to think, then Computer Engineers are the creator of the brains and the bodies which allow the computers to be trained and perform tasks. Computer Engineers create the body and the nerves of the computers. They are responsible for designing the electrical "means" on which data is stored and processed.
While Computer Engineers deal with "hardware", Software Engineers can be thought of as the designers of the "sofware" aspect of this whole computerized empire. They are responsible for the general design of the software system. They tell programmers how to write good programs. Programs that can be well maintained, updated and put together with other programs in the system without clashing or crashing. They take pride in creating a software world that is moving away from chaos. As the software world builds up and becomes more and more complicated, the job of Software Engineers becomes more and more important.
Some people use the analogy of an Architect and a Construction Worker to explain the difference between Software Engineers and Computer Scientists respectively. However, this is a false analogy. While Software Engineers do dictate the overal design of the software to computer programmers, these computer programmers are not necessarily computer scientists. Software Engineers, Computer Engineers and Computer Scientists all write "code", although the degree at which they program does vary. Computer Scientists probably write the most amount of code, but as I expailed before, they are also responsible for the thinking that goes behind the automation of tasks and pioneering new means of computation.
Computer Engineers write little code. The code that they write is usually at the lowest level. Where lowest refers to the amount of difference to the computers' native language, which is the language of zeros and ones (on and offs). At the highest level of code, lie programming languages that program other programs! If you have ever written small programs (or formulas) in Microsoft Excel, then in fact you have programmed at the highest level of programming languages.
Don't degrade the machine, because just like God created man out of his own lonliness, man has created machine in his own reflection. Just like God blew his soul into human beings, human beings have blown their intelligence into the machine. And although it took humans beings hundreds of thousands of years to become as intelligent as they are, it will only take a small fraction of that time for the machine to become a self concious, intelligent being. The time will come, but not yet.