Computer Science Careers
What exactly is Computer Science?
Computer Science is the science of using computers
to solve problems. Mostly, this involves designing software
(computer programs) and addressing fundamental scientific questions
about the nature 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.
What Computer Science is not ...
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.
What is Information Technology, and how is it different from
Computer Science?
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.
What is software?
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).
What is programming?
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.
Is Computer Science mostly programming?
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.
What's interesting about Computer Science?
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.
What kinds of careers are open to me with a degree in Computer
Science?
Many people incorrectly believe that a computer science career
is all about programming. While it is true that most entry-level
jobs after a Bachelor's degree involve programming, most
practioners eventually graduate to other responsibilities
such as design, coordination, testing, planning and
management.
Thus, you typically start with a software engineering job
after a Bachelor's and move on (after about 5 years of experience)
into higher-level positions.
With advanced coursework and a Master's degree, you can work
in an area of specialization that uses your advanced coursework.
For example, working for an animation outfit such as Disney
will require at least 2 to 3 courses in computer graphics.
Finally, a PhD degree usually finds its recipient in a
research environment such as a research lab, research wing
of a large corporation or a university.
Are there careers in Computer Science that involve people-skills,
or will I be staring at a screen all day?
Most career paths in computer science involve people skills
and interacting with people. Beyond an entry-level position
as a software engineer, almost any corporate position requires
working with people. The creation of software is most often
a team effort, and software companies are organizations of
people like any other type of company. Thus, if your
career path is typical, you will not be alone in your cubicle
staring at the screen.
What if I like programming all day?
There is of course a rich tradition of computer scientists
who love developing software and who are happy spending
most of their time in programming or designing software.
Some are so motivated that they often
spend hours on programming beyond their time at work.
Many of these efforts have resulted in the vast amount
of free open-source software available on Linux and
other systems.
What are hot topics in Computer Science today?
The core areas of computer science, including software
engineering, graphics, networks, databases, multimedia and
artificial intelligence remain strong today. At the same time,
some of the most exciting new work in computer science
is occurring at the intersection between computer science
and other fields. For example, computer science is changing
the way biological research is conducted in fundamental ways,
leading to a new field called bioinformatics at
the intersection of biology and computer science.
Similarly, computer simulations are making it possible
to study problems in physics, chemistry, economics and geology that
were difficult without computers.
What are some challenges left open in Computer Science for my generation?
Some people wonder if all the "important" problems in computer
science have been solved, leaving only tinkering for future
generations. Nothing could be further from the truth.
Perhaps the most important theoretical objective in computer
science (the P=NP question) remains unsolved to this day.
Another seemingly mundane problem shows no sign of being
solved: how to rapidly and easily create large software systems
without errors.
Similarly, applications of computer science to other disciplines have only
begun to scratch the surface.
Are you interested in these challenges?
Can Computer Science be combined with other fields of study?
Computer science is unlike many other disciplines in that there
is a large intersection with other fields. This makes it possible
to "dual-major" in computer science and another field in a
meaningful way. For example:
- A dual-major with biology can lead to a career in
bioinformatics.
- A dual-major with economics will help solve problems in economics
via computer simulation.
- A dual-major with political science or criminal justice can
lead to a career in security and information policy.
- A dual-major with fine arts has obvious implications for
a career in animation.
- A dual-major with business can lead to some types of IT
(Information Technology) careers.
Is studying Computer Science useful if I really want to major in
something else?
For those disciplines that intersect with computer science
(see above), the answer is clear. But what about History
or English?
An honest answer to this question would have to include a
comment from a recent history major: "I really want to study
history, but see computer science as a back up in the job market".
Fair enough. However, consider that computer science also
provides a certain kind of intellectual training, one that
is focused on logical thinking, mastery of detail, teamwork and
multiple facets of problem-solving.
Computer science students, for example, find the logical-thinking
tests on the LSAT (Law school exam) and GMAT (Business school exam)
quite easy. Many students bound for med school also study computer science.
And, yes, it helps to have a backup!
Why is computer science so hard?
Initially, it does seem that way. The reason is that, programming
is challenging and is introduced "cold" to students in a
first computer science course. Compare this to the study of
mathematics: math is with us since Grade 1 and introduced in
small steps right through school.
Programming is a similar intellectual skill that takes time
to master, usually about 4-5 courses.
While there are always students to appear to find programming
easy and unnecessarily intimidate others into believing they
are not suited to computer science, most of us learn
skills step-by-step over time. Can anyone with no musical
background learn a musical instrument in one semester?
Can you learn to speak a foreign language fluently with
a single course?
Many students tend to give up because of a combination of
"others seem to get it and I don't" and "why isn't it coming
to me?". Any skill acquisition is hard if viewed negatively.
But like any skill acquisition, it can be acquired with
patience and persistence. And once the skills are acquired, the
supposedly "super-smart" kids who "got it" earlier
don't seem that unreachably smart anymore.
What does it take to be successful in Computer Science?
Computer science is about a unique kind of problem-solving:
creatively solving problems using computation.
If you are creative, if you like puzzles, if you like problem-solving in other
domains (engineering, mathematics, sciences), if you are comfortable
with abstract thinking, if you like working at the intersection of
multiple disciplines - if any of these apply to you, then Computer
Science is for you.
What do I do next if I want a career in Computer Science?
In high-school, consider taking a few computer science courses.
One advantage of taking the AP exams is that many schools will
transfer these if you have a sufficiently high score.
It's important to note this fact: you do NOT have to have
any computer science in high-school to take it up in college.
Universities not only offer courses for the completely uninitiated
but also find that those with high-school computer science
do not necessarily fare better.
Suggested next steps:
- Enquire about schools with computer science programs
and ask questions. Do the programs offer strong programs in
computer science? Can you combine computer science with other
fields of study?
- It often is best to look at webpages of computer science
departments. Explore course offerings and research interests
of faculty.
- Keep things in perspective. Do not necessarily let the broad aspects
of an education outweigh what a computer science department offers.
Depending on your interests and style,
you may have much to gain from a small computer science program in
a liberal arts college as from an in-depth computer science curriculum
from an engineering school.
Other online resources on this topic:
Department of Computer Science
http://www.cs.gwu.edu
The George Washington University.