Appendices Appendix D ICT specialisation Unit GS1 - Foundations of programming and software development
Previous TOC Next



Students should be able to design and program relatively small computer-based systems which model process-oriented problems.


Students should be able to:

  1. adhere to the basic principles of software engineering;
  2. methodically analyse procedure-oriented problems through decomposition into procedural steps;
  3. apply more or less formal techniques to design effective algorithms and data structures;
  4. code and realise programs and sub-programs (modules) using a general purpose programming environment;
  5. use a functional model of a computer system and its programming environment.


Students need to develop skills which are fundamental to informatics as a discipline and to software development at all levels. These include the use of more or less formal methods of problem analysis and program design with an emphasis on creating not too complex programs which meet given specifications and which contain usable user interfaces.

Specific attention is paid to the type of problems which can programmed using fundamental, simple and structured data types (character, integer, real, array, etc.) and basic control structures (sequence, selection and repetition) of a high-level, block-structured programming language.

Emphasis is on modelling through process abstraction (top-down decomposition into sub-processes and subprograms). Methods of analysis, design strategies and the programming language environment should support this type of modelling.


Students will solve several, increasingly-complex problems. Problems are drawn from real application areas which students can readily understand and model. Small individual problems are chosen to learn how to use new algorithmic operations in conjunction with elements already known. But, also, some all-encompassing problems should be included in which students have to integrate all that they have learned before.

Problem Analysis

Students apply informal and elementary formal techniques to analyse simple process-oriented problems in many application areas and describe them in terms of sub-process steps.


ALGORITHMS: Students design modular solutions through top-down analysis and stepwise refinement. They choose and specify data structures and algorithms to match the design. The data structures and control structures used in the algorithms should be directly related to the primitive structures of a block-structured programming language.

USER INTERFACE: Students design a simple user interface for their algorithms in the form of a tree of screen designs.


The algorithms and the modular structure are coded into a general-purpose programming language.

Realisation and Evaluation

The code is then realised in the form of a program running on a computing system making use of the available programming environment. Students then test and debug the programs and identify the limitations of the programs.


Software Engineering

problem solving process, software life cycle


process, input and output specification
identification of steps and modules
informal specification of pre- and post- conditions


top down, modular stepwise refinement
simple, useful user interfaces


simple and nested control structures
simple data structures
code structure, readable and useful form
elementary sorting and searching algorithms
simple recursion
design of test data


execution, testing, and debugging
bottom-up testing
incremental realisation


informal comparison of algorithms
limitations of design and program

Programming Environment

hardware components
system software and compilers
representation of stored data

Programming Language Elements

simple and structured data types of language, user-defined types
evaluation of expressions and standard elementary library functions
sequence, control, and iteration structures
simple interactive and text file input and output
subprograms and parameters
local and global variables and scope of variables and subprograms


Minimum necessary resources:

Version of a high-level block-structured programming language which supports modular program design and contains the necessary data types and control structures.

Introductory level textbook which presents examples of applications using the programming language. Most relatively recent texts, on an introduction to informatics or on computer science organizational patterns, which have been developed through practice and fit the objectives of this unit.

Optional extra resources:

Additional text material on machine organization, systems software, compilers and language translators, internal representation of information, software engineering and the software life cycle.


Specialisation Preparation Module

Introduction to Programming (SP1);

Top-Down Programming (SP2);

Vocational Specialisation Module

Business Information Systems (VS1).


The concepts and skills included in this unit are those which have usually been presented in a first course on informatics for advanced students which some countries will find more appropriate for tertiary institutions than for secondary schools. The unit is quite extensive and requires teaching time every week, extending from over half a year to more than one year The time needed depends on prior experience and student background: whether they have studied Computer Literacy or Programming at Foundation Level. Depending on the target group, a subdivision of the unit may be advisable, organised around the concepts or principles under study.

Emphasis in the unit must be placed on hands-on applications. Students must apply techniques and principles, starting with elementary problems and building up their ability to handle more complex problems. Skills and concepts learned in earlier lessons are constantly reinforced through practice in new problems involving new concepts. Periodic exercises and projects which allow students to synthesise and integrate what they have learned must also be included.