Computer Science Careers |
Computer Science is the science of using computers to solve problems. Mostly, this involves designing software (computer programs) and addressing fundamental scientific questions about thenature of computation but also involves many aspects of hardware and architecting the large computer systems that form the infrastructure of commercial and government enterprises. Computer scientists work in many different ways: pen-and-paper theoretical work on the foundations and fundamentals, programming work at the computer and collaborative teamwork in doing research and solving problems.
Computer Science is not about using software, such as spreadsheets (like Excel), word processors (like Word) or image tools (like Photoshop). Many software packages are complicated to master (such as Photoshop or Excel) and it is true that many jobs depend on expertise in using such tools, but computer science is not about using the tools. It is not about expertise in computer games, it is not about about writing content in websites, and it is not about not about assembling computers or knowing which computers are best buys. Edsger Dijkstra, a famous award-winning computer scientist once said, "Computer Science is no more about computers than Astronomy is about telescopes". Computer Science is about the principles behind building the above software packages, about the algorithms used in computer games, about the technology behind the internet and about the architecture of computing devices.
While computer science has become a somewhat precise term as a field of study (like geology), information technology (IT) is a somewhat more vague term. The commercial world uses the term IT in a variety of contexts, generally, to mean "anything to do with computers". Many business uses of this term refer specifically to the combination of databases, information processing systems and communication systems (email, web browsing) they have been installing in the 80's and 90's. Thus, an IT job could mean a sales job in a computer company, or a business manager overseeing the installation of software, or it could mean a network technician who installs fiber-optic cable, or of course a software engineer. However, computer science generally denotes a professional with computer science training, one who is involved in the creation of software and software systems. Most educational programs are in computer science, which has a long tradition of accredition, standardized testing (such as the GRE subject test in computer science), prestigious research journals and well-defined curricula. In contrast, while some schools offer IT curricula, these are less well-defined, and probably not as rigorous as computer science curricula and degrees.
Computer science is not about building keyboards or monitors or the cables that connect your PC to your printer. While these are important to the functioning of a computer, as is electricity, computer software consists of interacting programs each of which is a collection of instructions capable of being executed on a computer. So, first we need to think of a computer as a "dumb" machine that knows how to execute elementary "instructions" (add this, multiply that). Then, software programs are collections of instructions that achieve higher-level end objectives. In a sense, the "intelligence" lies in the software and it is the difficulty of creating reliable, intelligent software that has made the young discipline of computer science into the large, diverse field it is today. Software systems now pervade almost all aspects of life, including high-end entertainment (such as the computer-generated dinosaurs in Jurassic Park), mission-critical control systems (factories, robots, aircrafts, space-travel), information systems (banks, websites, medical databases, government systems) and research tools (earthquake simulators, drug-design software, astronomy databases).
Programming is the intellectual endeavor of creating individual software programs. Part of it involves thinking (design, analysis), part of it involves coding (translating a design into instructions via a programming languages such as Java or C++) and part of it involves testing (subjecting software to a battery of tests to make sure it works). Programming has been likened to mathematics (analytic thinking) to writing (artfully telling a story), to engineering (building larger software out of smaller software units) and to art (exercising creativity). The part of programming that is most easily identified in Hollywood depictions is coding, the process of typing instructions in a programming language (such as Java or C++); this involves the stereotypical hunching over a monitor, pounding at the keyboard and watching the software execute.
Far from it. Initially, it may seem that it is all about programming because it is the skill whose teaching we start with (because it's fun, it's challenging and it's a prerequisite to further computer science). However, most undergraduate curricula devote 3 to 4 courses exclusively to programming, leaving 10-15 other computer science courses. Some of these use a student's programming skills acquired earlier, but most concentrate on some aspect of computer science central to the discipline. So, what are these areas of computer science? You can: learn about how computers are built (architecture), the principles behind important "infrastructure" software systems (operating systems, databases), study classic algorithms and learn to design your own, learn how compilers and language translation is done, study specialized computer science areas such as artificial intelligence, parallel computing, networks, graphics, bioinformatics, robotics, education or multimedia.
Why do people find computer science interesting? Initially, interest usually begins with programming and mastering the many details and thought processes involved in programming. Later, once programming is "been there, done that", people get interested in designing large software systems, or in computer architecture, or in one of the many specialized areas of computer science. One of the best aspects of a young discipline is that there are many open problems awaiting the next generation of computer scientists. For example, one of the "holy grail" problems in computer science (the P=NP question) is still unsolved. Many people believe that the golden age of computing has just begun.