A new parallel programming, ELC, Experimental Language Based on C, is designed and implemented. A run-time system to support ELC is also defined and several implementations are discussed, one of which was done by Tom Seevers in 1989. Five programming constructs are introduced which permit explicit specification of sections of program code that may be done in parallel. These constructs are INCASE, ... [Show full abstract] FORCASE, FORALL, SIMULCASE and SIMULALL. Each construct has a number of caselimbs, which are the sections that may be executed in parallel. Caselimbs are scheduled for execution on one or more logical processors, called TMMs, or Task Management Modules. FORCASE and FORALL allow the caselimbs to be scheduled in any way, even sequentially, while SIMULCASE and SIMULALL require that the caselimbs execute at the same time. A memory management system is defied which detects multiple conflicting assignments to the same variable, called a data integrity error. Caselimbs in SIMULALL and SIMULCASE may communicate with each other while executing via message queues, which are first-in first-out buffered queues. A hierarchically structured system of message queues is formed when such message queues are declared inside caselimbs which contain parallel constructs. Such a system benefits from data hiding and program structuring. The translation from ELC source code to object code in a machine language called NQL, New Quadruple Language, is discussed. Sample programs in ELC are presented and programming techniques are discussed. Conflicts with existing C language semantics and applications that are problematic for ELC are discussed and future improvements are suggested.