Four Key Concepts of Computer Programming

Computer Science Teacher
Computer Science Teacher - Thoughts and Information from Alfred Thompson

Four Key Concepts of Computer Programming

Rate This
  • Comments 18

Last week Rob Miles who is taller than I am, has more hair than I do and has an English accent all of which indicate he is probably a lot smarter than I am left a comment on one of my posts that lists his idea of the four key concepts in programming. He left to comment on Do We Need A New Teaching Programming Language BTW. The post and his full comment are worth the read. Rob’s list was:

  • Process data (assignment)
  • Make decisions (if)
  • Loop (do - while, for)
  • Use indexed storage (arrays)

Among other things he said:

If you can do these four things you can write every program that has ever existed. Sure, the code won't be pretty, but it will solve the problem. In my course we focus on algorithms at the start because this is where we actually create behaviours  [note classy British spelling which adds credibility] that solve problems.

In all seriousness, Rob is a great teacher who also writes some really good textbooks. He really knows his stuff. All of that not withstanding I kept trying to think of a fifth thing to add to his list.

I thought about input/output for a long time. But I/O is such a platform dependent sort of thing. It depends not only on the language but the operating system and even available hardware. Input via a key board is different from punch cards (remember those) and still more different from input via a Kinect sensor (let’s keep in mind that there is a future). As I recall the PASCAL standard did not specify requirements for input/output and left it to the developers for individual platforms. So that probably doesn’t fit.

I thought about variables but that is sort of covered by process data and indexed storage. Even internal data representation which I see as a key computer science concept is probably not as key for programming. I have successfully used programming languages that only stored integers and strings. Well maybe there was a Boolean but I forget. I managed to write some useful applications anyway. Some even dealing with money.

Recursion? How often do you really need recursion? And a lot of things that recursion is used for loops will do just fine for. So while one should learn recursion and a really good programmer should know how, and more importantly when, to use it I don’t think it fits the top four or five list.

Would you add something? Remove something? Overall what do you think of Rob’s list?

Note:  To subscribe to this blog please use http://feeds.feedburner.com/ComputerScienceTeacher as the RSS feed source. Thanks.


  • ya it looks nice. But actual programing paradigm itself needs its basic     definition.And flow chart diagram.It only explains how  loops ,conditions,expressions and other flow of program works in sequence.

    When one wants to solve a problem.One should create an abstract explaining the actual behavior  and working of the program. then explaining the algorithm with flow chart.Then only one can ever start programming.This applies to all languages and program paradigms.

  • Maybe flow charts are useful, but they are mainly critical to imperative paradigms. Functional paradigms might best use flow charts to communicate dependencies, which might not be so important in a massively parallel environment or any other where Time (and sequencing) is not the most important consideration.

  • Rob Miles is someone I've looked up to (literally) since he was a couple of years ahead of me at University.

    I think that the first programming language that one should introduce people to should be the native language of the person being taught. Teach people to marshall their thoughts and to write down clear instructions. Teach them to plan meal menu / recipes, write route for walkers, guide blindfolded people around rooms, etc. Teach them to write essays - that will introduce them to reasearching concepts and problem domains, decomposition of ideas, structure, flow, and clarity of reasoning. Only when they have learnt to think logically and clearly and to be able to communicate is it rational to even consider straight-jacketting them in computer languages of any kind. Computer Languages are like Newspeak in 1984 - designed to reduce the types of things that you can think about, not to release the imagination.

Page 2 of 2 (18 items) 12