I was hired by Control Data Corporation in Minneapolis, Minnesota in November, 1960. My position was Assistant Mathematician. My duties were teaching computer programming and implementing and testing scientific subroutines. I also implemented the input/output conversion package for the FORTRAN 60 compiler.
In September, 1961 I was transferred to Los Angeles as an Installation Support Analyst with the CDC 1604 at Thompson Ramo-Wooldridge in Canoga Park, California. There I wrote a basic utilities package for the 1604, various application programs and interface and test programs for the 1604-Polymorphic System link.
In January, 1962 I moved to CDC's System Programming Group in Palo Alto, California, where I participated in the development of the 1604 COOP Monitor System. I designed and implemented two I/O drivers, various resident utilities and the COOP Loader. In the last project I supervised one programmer.
In May, 1962 I was appointed joint Project Manager for FORTRAN 63; I was responsible for the 1604 version of the compiler and its object library. I designed the central control module, three intermediate code processors (including the optimization module), the object-time I/O package and the extended arithmetic facilities. During this project I supervised seven programmers. I personally implemented the central control module, the DO-processing module, the object-time I/O package and the CODAP Assembler compatibility modifications. I was also responsible for all internal documentation, supervised the preparation of the user documentation and delivered several formal presentations of the system to the users' group, salesmen and customers.
I was joint designer of the 3400 and 3600 versions of FORTRAN 63. I designed and implemented the assembly language generation module for the 3600 version and implemented the macro processor for the 3600 COMPASS Assembler.
In January, 1964 I took leave-of-absence from Control Data Corporation to continue my academic studies in Probability Theory at the University of Minnesota in Minneapolis. While there I worked as a Research Assistant at their 1604 computer center, where I designed and implemented custom revisions to the COOP Monitor System and the CODAP Assembler. I assisted Professor Max Engely (visiting from ETH, Zurich) in the implementation of a formal equation manipulation system and advised a student in the design and implementation of a 1604-160A dual processor link and peripheral processing sub-system.
In June, 1964 I rejoined Control Data Corporation as a Senior System Programmer. During the Summer I studied the 6600 computer hardware and its planned software. I designed and implemented a 6600 ASCENT language Cross-Assembler for a host 1604 or 3600 to be used as a training and development tool. In September I moved to Geneva, Switzerland, working for the International Division of Control Data Corporation at CERN. There I supervised a group of eight system programmers until May, 1966. Our principal project was the completion, installation and revision of the SIPROS Operating System, the ASCENT Assembler and the FORTRAN 66 Compiler for the 6600 in cooperation with CERN's system program group. We also produced I/O drivers and control programs for two types of high-speed photo-scanning devices (HPD and LUCIOLE) to multi-process them on-line to the 6600, a 6600 Peripheral Processor parallel-simulation package and a DD210 Display Console file editing package.
While at CERN I performed various functions in addition to my supervisory and design duties. I presented the 6600 systems to customers and user groups throughout Europe and in Israel, prepared and conducted a 6600 software training program for CDC customer analysts and engineers, and consulted in 1604 problems in Europe and Israel. I participated extensively in 6600 hardware debugging, including very substantial hands-on debugging, systematizing the functional isolation of CPU bugs and the preparation of a high-speed trace-and-compare package and a randomized CPU test generator. I designed and implemented several programs for the 6600 including a multi-computer tape translation interchange package, an ``exact" numeric conversion package and various modules of the SIPROS System.
In May, 1966 I returned to Control Data Corporation, Palo Alto as technical staff to the Department Manager of 6000 Programing Systems. I designed and implemented several modules of 6600 SCOPE 2.1 and SCOPE 3.0, including part of the Loader, the Job Control Language processor, the I/O control package, the unified mass storage control package, and the disk driver, whose implementation I supervised. I was Acting Manager of the SCOPE 3.0 system, supervising 20 programmers for three months until its completion. I also functioned as design consultant and general trouble-shooter for all of the SCOPE systems, including the 6600 COMPASS Assembler and the UPDATE package. My last major project with CDC was as Lead designer of the ECS-SCOPE Operating System for 6000-series computers. In this capacity I directed an extended design study and controlled the overall design and implementation of the initial version of the system.
In March, 1968 I came to the Weizmann Institute of Science, Rehovot, Israel, as a Visiting Scientist with the title ``Supervisor, Systems' Programming". In this capacity until 1976 I directed all phases of programming systems design and development for the GOLEM computers, built by the Computer Research and Development group of the Department of Applied Mathematics. An entire range of Software was developed for the GOLEM B computer under my supervision. This included a recursively structured multi-tasking operating system, a sophisticated macro assembler, a full FORTRAN IV compiler, a multi-level file management system and various other compilers, such as SNOBOL, MORTRAN, APL and PLB (Programming Language for the Golem B). I also participated extensively in the functional design of the GOLEM B computer.
While at the Weizmann Institute I have been involved in many other aspects of computer usage and research, ranging from membership in the Computer Steering Committee, preparing studies and reports of computer facilities and needs, to teaching and supervising thesis projects in the graduate program in Computer Science. During the period 1968-1972 I also served as a paid consultant to the Israel Ministry of Defence in the design and development of special-purpose extensions for their CDC 6500 computer system.
In 1971 I became a tenured Research Fellow at the Weizmann Institute. My personal research until 1976 was in the area of Cross-Assemblers and Simulators for mini-computers and micro-processors. In the course of investigating techniques for the efficient generation of Cross-Assemblers and Simulators I implemented support systems for the NOVA mini-computer and the MC8080 and COSMAC micro-processors on the GOLEM B computer. These systems were used extensively in courses in the Computer Science Program and for many hardware/software development projects in the Weizmann Institute.
In 1976 I began a Sabbatical leave, working for TELETEST, 40 Exchange Place, New York City as Designer and Project Leader for a store-and-forward message switch produced under contract to RCA Global Communications. The programming systems involved were developed and installed over a period of two years. During this time I was joint designer of the initial phase of the system, supervisor of all program development, designer of the international communication and domestic delivery systems and technical liaison to RCA Contract Administration and Programming Systems Projects. I personally produced the video control sub-system and the output formatting and transmission modules of the final system.
I returned to the Weizmann Institute in 1978. I added a MC8048 Cross-Assembler, Simulator to the already existing systems that Summer. I participated extensively in maintenance and upgrading of the GOLEM B systems, including the production of a revised memory manager module and the addition of JCL macro and string substitution facilities to the GOLEM B Operating System Job Processor.
Starting in September of 1978 I began to transport the Zurich P4 PASCAL Compiler to the GOLEM B. The system was operational in January of 1979 and has since been in use as a standard programming language at the Weizmann Institute. I extended the compiler for greater generality and enhanced portability, producing a version which has been the basis for PASCAL systems for three different computers, including the Zilog Z80.
Among the enhancements to PASCAL-P4 was a portable optimizer, written as a student Master's thesis project under my direction. It was integrated with the compiler, improving object code efficiency by factors of 2-7, depending on the program.
Starting in February 1980 I developed a Z80 system to emulate a full IBM I/O interface, including selector and multiplexor channels and multi-access controllers, to provide operational control of a laboratory computer, a bit-slice emulated IBM 370, being developed in the Department of Applied Mathematics. The operating system project consisted of four people. Related work resulted in a tailored version of MVT, developed as a student Master's project under my supervision, and successfully run on the emulated 370. I also wrote a Monitor to control execution of application programs on this system. This system remained in service until June 1987 in an experimental laboratory of the Weizmann Institute, supporting more than ten real-time measurement and control devices concurrently.
My research from 1981 to 1983 was in detail simulation of large-scale operating systems. Techniques were developed for modeling large systems with varying degrees of detail in interconnected PASCAL and SIMSCRIPT programs. An initial model of the GOLEM B Operating System was prepared and tested.
During my Sabbatical Leave 1983-84 and for three more months in 1985, I consulted to the Tools and Technology Department of Control Data Corporation in Arden Hills, Minnesota. My principal task was the design and development of a front-end global optimizer for the CYBIL compiler. I also designed and developed software to measure the complexity of CYBIL programs by instrumenting the front-end of the Compiler.
From 1985 to 1994 I supervised the development of the Logix System, used by a large project at the Weizmann Institute and at over 70 other academic and research institutions throughout the world for research in Concurrent Logic Programming. I personally designed and implemented major sections of the Flat Concurrent Prolog (FCP) emulator, the FCP Compiler, the interactive high-level debugging system and all of the operating system servers. A major capability of the system was the support of distributed communication and computation. I presented the system at several institutions in Israel and the USA.
In January 1994, I helped to found Ubique Ltd., a company based on early concepts of virtual presence and places, which exploited the distributed and interactive features of FCP and the Logix system. My initial contribution was a substantial revision of the MOSAIC browser to coordinate through the Logix system as a client in a distributed system and to present a graphic interface for real-time interaction between remote users of the system. Subsequently, I revised the system interface to communicate with a high capacity server and to support animated icons and other graphic features using the X4 graphic system of UNIX.
In late 1994, Ubique began development of an interface to the Netscape browser, called Virtual Places, to support animated communication between remote users. My project within this development was the Macintosh version of the interface, written in C++, including all of the client management, as well as coordination and display of user dialogs and menu-driven features. During this phase I supervised five programmers. The project culminated in a commercial Macintosh Virtual Places Client.
In 1996 I assumed responsibility for the Java version of the Ubique Instant Messenger. I designed and implemented most of the Client management and graphic interface, and advised in the development of the remote communications module. This system was released for commercial use in 1997.
In October, 1997, I left Ubique to return to my position at the Weizmann Institute of Science. My first project was to prepare a customized image animation system for use in vision research by a group within the Department of Computer Science and Applied Mathematics. I designed and implemented a major revision of the animation phase of ImageMagick, written in C; the system is available from WIMP .
Using PERL, I developed a ``fair'' scheduling algorithm for users of our Solaris and SGI multi-processors. Other work in PERL includes CGI-script support for the Department's web site and an enhancement to the Dienst Mathematics Database system to provide fast access to our Technical Reports.
My major project during the last year has been the design and
development of a sub-system
of Logix to support programming in pi-calculus, specifically
for research in Biochemistry.
The SpiFcp/BioPsi system includes a compiler for pi-calculus
programs and debugging and recording support. It is available
as part of an open-source project at:
See especially: efcp/SpiFcp.
See also Stochastic
Other consulting work includes: a 3-month course for RCA
personel in internals of the MTC Systems (9/79-1/80);
A 6-month design project for a Store-and-Forward
TELEX Switch, which has since been developed and installed
by TELETEST at the site of TELECOMS, the Telecommunications
Authority of Singapore (12/81-6/82).
A postscript version of this report is here.