34

I'm new at computer science and programming, and I was wondering, is there a difference between computer science and programming? and do you get to choose to study only one of them at the university, or both of them?

gnat
  • 20,543
  • 29
  • 115
  • 306
xXSarahXx
  • 393

12 Answers12

69

Computer science is the study of what computers [can] do; programming is the practice of making computers do things.

Take a look at the courses/syllabi offered by universities you're interested in to find out whether the course is a CS course, a programming course, something else (for example Software Engineering) or even a combination of the above. Many courses advertised as "computer science" offer a significant programming component, which may be so that you can put the theoretical parts of the course into practice, or may be for their own sake so that you can learn the skill of making programs.

36

A caveat: 'Computer Science' has become a muddied field in modern times because (at least in the United States) universities do not have degrees in "programming". This means that people interested in programming must sign up for Computer Science degrees, and as a reaction to that the Computer Science programs emphasize programming more and more.

That said, Computer Science itself is a strongly mathematical science -- Computational Mathematics might have been a better term. It involves the study of graph theory, algorithmic complexity, formal logic, automata, and in general any logical structure which can describe a transformation or response to input -- algorithms. A Computer Scientist in the classic sense could reason about rules that govern any computing system (including modern computers) without necessarily knowing the details of implementation on current architecture. A strong background in Computer Science gives you the ability to develop (or recall) efficient, scalable algorithms, anticipate logical reductions, and reason soundly about what is tractable.

Programming, by contrast, is what a person does when they use a programming language to transform an algorithm into something the machine can do. (That should make obvious the intimate connection to Computer Science, and where much of the confusion comes from.) A programmer (relative to an environment and language) should be able to take virtually any set of algorithms and transform them into a form both human- and machine-readable by writing code. A strong background in programming (as most CS degrees will provide) enables you to write better code -- where 'better' code is more easily understood by others and more successful in expressing the algorithm you are implementing.

There is a large amount of crosstalk, of course, and a high level of experience in one will correspond strongly with developing experience in the other -- as noted, a CS major is almost always a competent programmer, and a seasoned programmer has picked up many principles of CS. Think Physics and Engineering.

A good way of remembering the difference is this: if it requires a computer to see if it works it's programming -- if you can do it with pencil and paper, it's Computer Science.

shanef22
  • 471
18

Computer science deals with the theoretical foundations of information, computation, and with practical techniques for their implementation and application. http://en.wikipedia.org/wiki/Computer_science

~

Computer science is no more about computers than astronomy is about telescopes. Edsger Dijkstra

Programming is the craft of creating a computer program.

11

Computer Science is, from my point of view, supposed to be a Hard Science like Physics.

It involves the study of compilers and compiler generators, hardware architecture concepts, various forms of number systems, algorithms and algorithmic efficiency / performance and the theory behind arithmetic operations on the processor. When I did CS at university we spent a lot of time mucking around with assembler, learning about the difference between compiling, linking and interpreting, etcetera.

A lot of this was done by programming - that is, the act of writing code which was then compiled or run via an interpreter, with the intention of generating results to solve a problem. That is, Programming is the act of solving problems which can be described with knowledge from Computer Science. It's kind of a Pure Maths / Applied Maths split.

You don't need a Computer Science degree to be a programmer, but a programmer with a CS background will likely have a deeper understanding of the behaviour of computer programs.

mcfinnigan
  • 478
  • 2
  • 7
3

I would reword your question as "What's the difference between Computer Science and Software Engineering?" After all both involve programming.

Computer Science is the theortical study of what computation is and what is and is not possible. It looks at things like Godels Theorem and the Halting problem.

Software engineering is how to write programs that do what they have been designed to do and are maintanable.

Jaydee
  • 2,667
2

Computer science is the theory of programming. Programming is the implementation.

Computer science ...is the scientific and practical approach to computation and its applications. A computer scientist specializes in the theory of computation and the design of computational systems.

Its subfields can be divided into a variety of theoretical and practical disciplines. Some fields, such as computational complexity theory (which explores the fundamental properties of computational problems), are highly abstract, while fields such as computer graphics emphasize real-world visual applications. Still other fields focus on the challenges in implementing computation. For example, programming language theory considers various approaches to the description of computation, whilst the study of computer programming itself investigates various aspects of the use of programming language and complex systems. Human-computer interaction considers the challenges in making computers and computations useful, usable, and universally accessible to humans...

gnat
  • 20,543
  • 29
  • 115
  • 306
Tom Squires
  • 17,835
1

If programming is carpentry, then computer science is architecture/design.

Edit

More info: in carpentry, you're interested in things like what what order to build things in (frame, then subfloor, then interior walls, then drywall, etc.). How do you build it so that it takes less time to construct, but can be modified later.

In the case of architecture (the part of it like CS anyway), you're concerned with things like what are the capabilities of the materials, how big of a beam do you need to support this span of wall/roof?

Similarly CS is about the theoretical capabilities of computers, where programming is about the practical application of that knowledge.

1

Computer science is to programming as physics is to mechanical engineering.

Computer science is theoretical, it takes a scientific and mathematical approach to information and it's computation.

Computer programming is practical, it is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs.

They are different, but related fields. Both have benefited from each other.

bbb
  • 27
0

A degree in computer science is a lot broader in scope and covers the theory behind computing. A degree in computer programming, on the other hand, is focused on developing the coding or programming skills of students by training them in different programming languages. If you’re confused, you can browse through the details of both these programs at California College San Diego. That may provide you some clarity regarding the scope of these degrees!

0

Computer Science : It is the study of problem solving with computers/computational methods.

Computer programming : It is the part of this problem solving process that makes up the field of computer science. Computer programming is just a small subset of computer science.

ramneet
  • 17
-1

Programming is about people. People read, write, and maintain code. Computer science is about mathematics- they implement and describe algorithms.

DeadMG
  • 36,914
-1

Programming (development) is about making money. Science is about discovering new things.

pap
  • 1,320