Software, Packages and Programming Languages
Computer Studies · WAEC and JAMB · SS2 and SS3
Software is where candidates lose marks on classification: system versus application, and compiler versus interpreter. Get those two divisions clean and the rest of the chapter follows.
What you need to know
- Software is the set of coded instructions, programs and associated data that tells the hardware what to do. Hardware without software is dead metal; software without hardware cannot run.
- System software manages and controls the computer itself and provides the platform on which other programs run. It includes the operating system, utility programs, language translators, device drivers and firmware.
- Application software performs the work the user actually wants done. It divides into general purpose packages bought off the shelf, such as word processors, spreadsheets, database packages, graphics and presentation software and browsers; and special purpose or bespoke software written for one organisation, such as a bank's core banking system or a school's result processing software.
- Utility programs are system software that keep the machine healthy: antivirus, disk defragmenter, disk cleanup, backup and restore, file compression tools such as WinRAR and 7-Zip, file managers and diagnostic tools.
- A device driver is a small program that tells the operating system how to communicate with a particular piece of hardware, which is why a new printer usually has to install one before it will work.
- Language translators convert programs written by humans into the binary the processor executes. An assembler translates assembly language into machine code. A compiler translates an entire high-level source program into object code in one operation, reports all errors together, and produces a file that then runs fast on its own. An interpreter translates and executes one statement at a time, stops at the first error it meets, needs to be present every time the program runs and so executes more slowly, but makes debugging easier for a beginner.
- Machine language is the first generation: pure binary ones and zeros, directly executed, extremely fast, machine dependent, and almost impossible for a human to write or correct.
- Assembly language is the second generation. It replaces binary with short mnemonics such as ADD, SUB, MOV and LDA, is still machine dependent and still needs detailed knowledge of the hardware, and requires an assembler to translate it.
- High-level languages are the third generation. They are English-like, machine independent so the same program can run on different computers after translation, far easier to learn, write and maintain, but need a compiler or interpreter and run a little slower than assembly. FORTRAN of 1957 was for science and engineering, COBOL of 1959 for business data processing, BASIC of 1964 for beginners, Pascal for teaching structured programming, and C, C++, Java and Python for general work today.
- Fourth generation languages are closer to ordinary speech and state what is wanted rather than how to get it. SQL is the standard example: a single statement retrieves records that would take many lines in a third generation language. Fifth generation languages such as Prolog and LISP are associated with logic programming and artificial intelligence.
- Program development runs in a fixed order: define the problem, analyse it, design the solution as an algorithm using pseudocode or a flowchart, code it in a chosen language, translate and test it, debug the errors, document it, implement it and then maintain it. Questions on this sequence are common and the order itself is markable.
- Flowchart symbols must be drawn correctly: an oval for start and stop, a parallelogram for input and output, a rectangle for a process or computation, a diamond for a decision with yes and no branches, a small circle for a connector and arrowed lines for the direction of flow.
- Errors come in three kinds. A syntax error breaks the grammar of the language and is caught by the translator. A logic error produces a program that runs but gives the wrong answer, and only testing with known data exposes it. A runtime error stops a running program, for example division by zero or reading a file that is not there.
- Software is acquired under different terms, and the distinctions are examinable. Proprietary or commercial software is paid for and its source code is closed, like Microsoft Office. Freeware is free to use but still owned, and the source code is not released. Shareware is free for a trial period and then must be paid for. Open source software, such as Linux and LibreOffice, is free and its source code may be studied and modified. Copying or installing licensed software beyond what the licence allows is piracy and is a criminal offence.
Key terms
- Software
- The set of programs and associated data that instruct the hardware on what operations to perform.
- System software
- Software that controls and manages the computer hardware and provides the environment in which application programs run.
- Application software
- Software written to carry out a specific task for the user, such as typing a document, computing results or keeping records.
- Compiler
- A translator that converts a complete high-level source program into object code in one operation and reports all errors found.
- Interpreter
- A translator that converts and executes a high-level program one statement at a time, halting at the first error encountered.
- Algorithm
- A finite, ordered sequence of unambiguous steps that solves a given problem.
- Software piracy
- The unauthorised copying, distribution, installation or use of software in breach of its licence.
Worked examples
State four differences between a compiler and an interpreter. (8 marks)
- Decide the four grounds of comparison before writing: how much is translated at a time, how errors are reported, speed of execution, and whether the translator is needed at run time.
- Write each difference as a matched pair in one sentence.
- Do not pad the answer with an example of each language unless the question asks for one.
Answer: A compiler translates the whole source program at once, while an interpreter translates and executes it one statement at a time. A compiler reports all the errors in the program together after scanning it, while an interpreter stops at the first error it meets. A compiled program runs faster because translation has already been completed, while an interpreted program runs more slowly since translation happens during execution. A compiled program produces an object file that can run without the compiler being present, while an interpreted program needs the interpreter every time it is run.
Draw the flowchart symbols for start, input, process and decision, and classify each of the following as system or application software: Microsoft Word, Windows 11, antivirus, a payroll program. (8 marks)
- Name the shape clearly even while drawing it, since a poorly drawn oval and a poorly drawn circle look alike.
- For the classification, ask whether the program serves the machine or serves the user's own task.
- Antivirus is the one that catches candidates: it is a utility and therefore system software.
Answer: Start and stop are drawn as an oval or rounded rectangle, input and output as a parallelogram, a process or computation as a rectangle, and a decision as a diamond with yes and no branches. Microsoft Word is application software. Windows 11 is system software, being an operating system. Antivirus is system software, being a utility program. A payroll program is application software, specifically special purpose software.
The mistake to avoid
Antivirus is written down as application software again and again. It is a utility program and therefore system software. Candidates also say an interpreter is faster than a compiler, confusing translation with execution: an interpreter starts running sooner, but the finished compiled program executes faster. A third error is calling machine language a high-level language because it is what the machine understands; it is the lowest level there is.
In the exam
Draw a two-branch tree in your rough work, system software against application software, and hang every named program on the correct branch before you write. For compiler against interpreter, answer in matched pairs and aim for four clean differences rather than six overlapping ones. Where a language is mentioned, adding its year or its field of use, such as COBOL for business, earns the extra mark.