CESIL
   HOME

TheInfoList



OR:

CESIL, or Computer Education in Schools Instruction Language, is a
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
designed to introduce pupils in British secondary schools to elementary
computer programming Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of proc ...
. It is a simple language containing a total of fourteen instructions.


Background

Computer Education in Schools (CES) was a project that commenced in 1968 under the stewardship of the John Hoskyns Group. CESIL was developed by Hoskyns as part of the CES project, and introduced in April 1969. The project was taken over by
International Computers Limited International Computers Limited (ICL) was a British computer hardware, computer software and computer services company that operated from 1968 until 2002. It was formed through a merger of International Computers and Tabulators (ICT), English Ele ...
(ICL) in September 1969 to become ICL-CES. In those days, very few if any schools had computers, so pupils would write programs on coding sheets, which would then be transferred to
punched cards A punched card (also punch card or punched-card) is a stiff paper-based medium used to store digital information via the presence or absence of holes in predefined positions. Developed over the 18th to 20th centuries, punched cards were wide ...
or
paper tape Five- and eight-hole wide punched paper tape Paper tape reader on the Harwell computer with a small piece of five-hole tape connected in a circle – creating a physical program loop Punched tape or perforated paper tape is a form of data st ...
.''Computer Studies'', page 72 Typically, this would be sent to run on a
mainframe computer A mainframe computer, informally called a mainframe or big iron, is a computer used primarily by large organizations for critical applications like bulk data processing for tasks such as censuses, industry and consumer statistics, enterprise ...
, with the output from a
line printer A line printer Printer (computing), prints one entire line of text before advancing to another line. Most early line printers were printer (computing)#Impact printers, impact printers. Line printers are mostly associated with unit record eq ...
being returned later.


Structure

Because CESIL was not designed as an interactive language, there is no facility to input data in real time. Instead, numeric data is included as a separate section at the end of the program. The fundamental principle of CESIL is the use of a single accumulator, which handles mathematical operations. Numeric values are stored in
variables Variable may refer to: Computer science * Variable (computer science), a symbolic name associated with a value and whose associated value may be changed Mathematics * Variable (mathematics), a symbol that represents a quantity in a mathemat ...
, which in CESIL are referred to as store locations. CESIL only works with integers, and results from DIVIDE operations are rounded if necessary.''Computer Studies'', pages 93–94 There is no facility for
data structure In computer science, a data structure is a data organization and storage format that is usually chosen for Efficiency, efficient Data access, access to data. More precisely, a data structure is a collection of data values, the relationships amo ...
s such as
arrays An array is a systematic arrangement of similar objects, usually in rows and columns. Things called an array include: {{TOC right Music * In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
, nor for
string String or strings may refer to: *String (structure), a long flexible structure made from threads twisted together, which is used to tie, bind, or hang other objects Arts, entertainment, and media Films * ''Strings'' (1991 film), a Canadian anim ...
handling, though string constants can be output by means of the PRINT instruction. Jumps and loops can be conditional or non-conditional, and transfer operation of the program to a line with a specific label, which is identified in the first column of a coding sheet.''Computer Studies'', page 148 The instruction or operation is stated in the second column, and the operand in the third column.''Computer Studies'', page 77 On some coding sheets, comments and the text of the PRINT instruction would be written in a fourth column.''Computer Studies'', page 74


Instructions

Instructions, or operations, are written in upper case and may have a single operand, which can be a store location, constant integer value or line label. Store locations and line labels are alphanumeric, up to six characters, and begin with a letter. Numeric integer constants must be signed + or −, with zero being denoted as +0.


Input and output

*IN – reads the next value from the data, and stores it in the accumulator. The error message *** PROGRAM REQUIRES MORE DATA *** is printed if the program tries to read beyond the end of the data provided. *OUT – prints the current value of the accumulator. No carriage return is printed.''Computer Studies'', page 73 *PRINT "''text in quotes''" – prints the given text. No carriage return is printed. *LINE – prints a carriage return, thus starting a new line.


Memory storage

*LOAD ''location'' or LOAD ''constant'' – copies the value of the given location or constant to the accumulator. *STORE ''location'' – copies the contents of the accumulator to the given location.


Mathematical instructions

*ADD ''location'' or ADD ''constant'' – adds the value of the given location or constant to the accumulator. *SUBTRACT ''location'' or SUBTRACT ''constant'' – subtracts the value of the given location or constant from the accumulator. *MULTIPLY ''location'' or MULTIPLY ''constant'' – multiplies the accumulator by the value of the given location or constant. *DIVIDE ''location'' or DIVIDE ''constant'' – divides the accumulator by the value of the given location or constant. The result is rounded down if the result is positive, and up if the result is negative. A *** DIVISION BY ZERO *** error message is printed if the divisor is zero. In each case, the result of the operation is stored in the accumulator, replacing the previous value.


Program control

*JUMP ''label'' – unconditionally transfers control to location labelled. *JINEG ''label'' (Jump If NEGative) – transfers control to location labelled if the accumulator contains a negative value. *JIZERO ''label'' (Jump If ZERO) – transfers control to location labelled if the accumulator contains zero. *HALT – terminates the program.


Other symbols

Three special symbols are used in CESIL at the beginnings of lines. *% is used to mark the end of the program and the start of data. ** is used to mark the end of the data. *( is used at the start of a line to indicate a
comment Comment may refer to: Computing * Comment (computer programming), explanatory text or information embedded in the source code of a computer program * Comment programming, a software development technique based on the regular use of comment tags ...
.


CESIL programming tools

An emulator for CESIL, designed to run on Windows and called Visual CESIL, is available as freeware. An interpreter for CESIL, designed to run on the Android platform and called Wyrm CESIL, is available as free to install.


Example

The following totals the integers in the runtime data section until it encounters a negative value and prints the total.
        LOAD    +0
LOOP    STORE   TOTAL
        IN
        JINEG   DONE
        ADD     TOTAL
        JUMP    LOOP

DONE    PRINT   "The total is: "
        LOAD    TOTAL
        OUT
        LINE
        HALT

%
1
2
3
-1
*

The output of the above program would be: The total is: 6


See also

*
Computer literacy Computer literacy is defined as the knowledge and ability to use computers and related technology efficiently, with skill levels ranging from elementary use to computer programming and advanced problem solving. Computer literacy can also refer t ...
* Computers in the classroom *
History of computer science The history of computer science began long before the modern discipline of computer science, usually appearing in forms like mathematics or physics. Developments in previous centuries alluded to the discipline that we now know as computer science ...
*
HAGGIS Haggis ( ) is a savoury pudding containing sheep's offal, pluck (heart, liver, and lungs), Mincing, minced with chopped onion, oatmeal, suet, spices, and salt, mixed with Stock (food), stock, and cooked while traditionally encased in the anima ...
- language invented to standardise marking of programming work in Scottish schools


Bibliography


Notes


References

{{reflist Educational programming languages History of computing