First Steps in Computer Science: Sequential or Parallel?
Raphael B. Yehezkael · 2001
In educating computer scientists, typically the first steps deal with sequential algorithms and programs. This has unfortunate consequences in that the students mind becomes geared to a sequential way of thinking. Parallel programming on the other hand is very hard so it is not practical to introduce these concepts at an early stage. Our approach is to define a simple flexible language (SFL) which does not obligate sequential or parallel execution but enables these execution methods. This language has several faces. It can be viewed as a programming language, capable of being executed in a variety of ways, sequential or parallel, with identical end results. It can also be viewed as a command language for the user. Also, hardware block diagrams can be derived from in this language. Mathematical proofs using specifications and computational induction are clear and straightforward. It is a good choice for teaching computer science, and computer systems engineering concepts in view of its ability to describe both software and hardware aspects. The core language is based on programs (procedures or functions) with IN, OUT but no INOUT parameters, and conditional statements. As in mathematics, variables, parameters, etc., receive a value once only. Blocks, loops, case statements etc. (including nested forms) are not part of the core language but viewed as abbreviations for certain compound forms in the core language.