Lies we tell in Computing Higher!

mfnn15lOur higher computing course has a lot of errors in it! Things that we tell learners are absolute truths but are, in fact, errors often built on incorrect knowledge, incorrectly set exam questions from many many years ago or just a lack of knowledge.

Here are a few of them!

Lie #1 – The width of the databus indicates the word size of the processor.

This information is used in every computing examination and often in the calculation of memory requirements for a computer. The databus that links a computer processor to a computer’s main memory is a bus that is external to the processor. It is only the internal databus INSIDE the chip that gives the word size of the processor. For a processor to be a 64-bit, for example, it will have datapath widths, integer size, and memory addresses of 64 bits. A good example of why this is wrong is the 32-bit Pentium chip which had a 64-bit databus). This lie doesn’t take into account processor architectures that use multiple put operations (so they shift data in blocks into larger memory locations).

Lie #2 – Declarative languages are programming languages that use facts and rules rather than sequential commands.

This, I think, comes from a misunderstanding of computer languages. Declarative languages are a large set of languages which do not specify procedural logic. Rather they define what the expected result should be and leave the how this is calculated to the translator programme which produces the executable code. Prolog, is often said to be a declarative language (and this is where the facts and rules come from). However, Prolog is a logic language and logic languages are a subset of declarative languages. Rules and facts have nothing to do with a language being declarative! For example, the Lint extension to VB .Net is a declarative language. The following examples of code both display only the even numbers from the list of numbers from 1 to 10.

Imperative Program – VB .Net
var numbersOneThroughTen = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = new List();
foreach (var number in numbersOneThroughTen) {
if (number % 2 == 0) {
Declarative Program – VB .Net Lint extension
var numbersOneThroughTen = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = numbersOneThroughTen.Select(number => number % 2 == 0);

So, really the answer we have accepted in Higher Computing examinations for the last 14 years is wrong! Just saying!

Lie #3 – Bitmapped graphics are stored as pixels and you calculate the size of the file like this…

We talk about pixels on the screen. We often say an image is 3″ by 4″ (yes in inches!!!) and is 300 dpi (dots per inch? on screen?) and uses 16-bit colour. Calculate the space required to store this file. A calculation then is carried out where we work out how many pixels wide the image is (3 x 300 = 900 pixels) and how many pixels high it is (4 x 300 = 1200 pixels). We then work out the total number of pixels (900 x 1200 = 1080000 pixels) and then how many bits required to store each pixel (1080000 x 16 bits = 17280000 bits). We then turn this number into bytes by dividing by 8 ( 17280000 / 8 = 2160000 bytes) and then by 1024 to give kilobytes (2160000 / 1024 = 2109.375 Kb) and then by 1024 again to give megabytes ( 2109.375 / 1024 = 2.0599365234375 Mb) and then round up to two decimal places to ensure you have enough space to store the image i.e. 2.06 Mb BUT IT IS WRONG!!!

This calculation totally ignores storing the pallet of colours used, the format of the image and so much more. Yes, there is some correlation between the number of pixels stored in this uncompressed format at the size of the image but we are ignoring a whole section of how the image is stored.

Can you think of any lies you tell to your Computing Higher class?

%d bloggers like this: