Big Picture 3: Programming

Q: So I had an idea of what a computer is, and what a program is, but I still wasn't sure what computer programming was so I googled "computer programming is" and it led me to this:

Computer Programming is a field that involves the methodology behind the programming, software abstraction, algorithms, data structures, design, testing, and maintenance of computer software. — Wikiversity

which is more detail than I needed. Could you just tell me what a computer program is?

A: A list of instructions telling the computer what to do.

Q: And programming is writing down those instructions?

A: Well you have to think of them first, but yes.

Q: That sounds pretty straightforward. Why do some people find it hard?

A: Well there are a few catches.

  1. Sometimes it's not obvious how to represent things using symbols.
  2. The computer doesn't speak English, so you have to learn its language.
  3. Computer languages don't refer to the natural world we are used to of sun, sky, trees, people, desks, etc. They refer to objects in their own worlds.
  4. The computer can only do very simple manipulations at each step (remember its processor is not much more powerful than a handheld calculator), so you have to specify things in (sometimes excruciating) detail.

Q: That doesn't sound so good. Is there a bright side?

A: Sure,

  1. While the words in computer languages may refer to an unfamiliar world, it is a shockingly simple world. For example many of them are built on just six key concepts.
  2. Although computers don't speak English, the languages they do use contain very few words (the complete list of Python keywords contains only 36 words).
  3. A large set of techniques has been developed to deal with commonly occuring situations, so you almost never have to start from scratch. As a student your job is to learn those techniques.

The main goal of this course is to teach you those concepts, in that language, and to put them to use using those techniques.

Further reading (Optional)

For more see Wikipedia's page on Computer Programming. You won't be examined on it, but reading it over will provide you with invaluable background information. It introduces many of the major concepts and concerns that occupy programmers. You won't understand every bit of it on first reading, but that's okay; the ideas will recur as you move through the course.