Early Life
People are often intrigued by my first name, Jacques, and frequently ask me if I have a French or Canadian origin. They are surprised when I reply that I was born in Brazil (in 1932), of immigrant parents: my mother came from Salonica, Greece, where a large Jewish community prospered before WWII; and my father was born and lived in Jerusalem, then under British mandate. My parents met while my mother was visiting a relative in Jerusalem. They migrated to Brazil shortly after their marriage, establishing themselves in the town of Belo Horizonte where my uncle had a small business. My mother’s education in Salonica stressed French as a cultural language, which led her to choose the name Jacques as the appropriate variant of the Hebrew name Yaakov. At home, my parents spoke Ladino and Hebrew but I was brought up in Portuguese, learning it in the local Hebrew elementary school. The small Jewish community in Belo Horizonte was a mélange of Sephardim and Ashkenazim. I recall that in the thirties, the heated discussions that divided the community were about Zionism in opposition to communism, my parents being ardent followers of the former.
Education
I
n Belo Horizonte, I attended the local public high school and was admitted, after very competitive entrance examinations, to the Engineering School of the State University of Minas Geraes, the state whose capital is Belo. I graduated with a degree in Civil Engineering with highest honors, which included a medal for having attained the best grades awarded in the preceding several years. Shortly after my graduation, I was granted a Brazilian government scholarship for pursuing graduate studies in the U.S. At that time, I decided to become a structural engineer and dreamt of building steel bridges and skyscrapers. For me, that meant assessing their soundness by performing sometimes-toilsome computations. In the mid fifties, I made the decision to attend the Master’s program at the University of Florida, Gainesville. At the time, L. E. Grinter was the Dean of Engineering and was the author of one of the most prominent American textbooks on the design of steel structures. This initial graduate work inspired me to want to continue researching in the field, and it became clear that I wanted to enroll in a doctoral program in Structural Design.
I remember that at that time, the best-regarded schools were MIT and the University of Illinois at Urbana-Champaign. I visited both schools and opted for Illinois. In retrospect, I know that this was the right choice since it was in Urbana-Champaign that I had the unique opportunity to acquaint myself with one of the first digital computers available in American universities in the late fifties: the Illiac I. My doctoral dissertation involved energy minimization using Raleigh-Ritz methods to determine Fourier series coefficients defining shapes of buckling columns made of thin-walled plates [Coh 60]. This particular topic enabled me to learn a great deal of assembly language programming and the solution of systems of non-linear equations resulting from the energy minimization process. I recall being allowed to use the Illiac for a couple of minutes a few times a day often late at night to do the required debugging. It took me a couple of years to obtain reliable results because of the erratic convergence of solving a system of non-linear equations by Newton-like methods. Furthermore, the symbolic computations for obtaining the system of numerical equations had to be done by hand.
Interestingly, about fifteen years later, while on sabbatical at MIT, I succeeded in re-enacting the computational work first conceived in my dissertation. The symbolic processing for deriving the non-linear equations was done using Macsyma; Fortran subroutines were then used to solve the non-linear equation solving them. The entire computational effort only took a couple of weeks [Coh 76]. The Brazilian government-sponsored scholarship that enabled me to study in the United States stipulated that, upon the return to the country, I had to spend at least one year doing activities at a local university or research institution.
Early Career
My Return to Brazil and Time Spent in Grenoble
A
fter graduating from Illinois, I returned to Brazil. There, I had another unique opportunity to work with early computers, this time with the Burroughs 205, a drum machine available at the Pontifical Catholic University of Rio de Janeiro. This machine was tricky to efficiently program since several copies of important data resided in what was called “fast memory.” I did a great deal of programming using the Burroughs, ranging from operations research to simulation, to the design of reinforced concrete structures. My experience with early computers transformed my perspective about being a structural engineer. I had the realization that most of the work in structural design could be done with computers. For me, developing programs was much more interesting than the computations themselves.
I always wanted to spend time in Europe, perhaps because while in the U.S., I heard that a polished education required spending some time in the old continent. I remember packing my bags again in the early sixties and obtaining a summer position at the Bull computer company in Paris where I was associated with the operations research group. It was there that I had my first experience in programming in Algol 60 running in the first French built machine and compiler. It consisted of developing a program for determining the maximal path in a graph using iterative methods. That program was to be used in scheduling industrial tasks.
I must confess that initially, like many of the earlier programmers, I was somewhat reluctant to use higher-level languages, preferring assembly language to achieve higher efficiencies. That reluctance dissipated when I was invited to participate as a researcher in the compiler group in the Applied Mathematics Institute at the University of Grenoble. I was hired as member of the National French Research Center (CNRS, in French), an institution that has associations with major French universities. My research work in Grenoble was highly productive. The Applied Math Institute had been chosen as the center for developing the first full-fledged Algol 60 compiler in a French university.
As members of the compiler group, we were encouraged to test the compiler being developed by writing all sorts of programs, especially recursive ones. It was in Grenoble that I became interested in syntax-directed compilers. It was a unique opportunity to participate in the meetings of the IFIP group that was then designing the successor of Algol 60. In the mid-sixties, I had the opportunity to meet the leaders of language and compiler design, including Peter Naur, Edsger Dijkstra, Alan Perlis, John McCarthy, F. Bauer, Donald Knuth, Robert Floyd, Niklaus Wirth, and many others.
Using the Grenoble Algol 60, I started developing many interesting programs, including a Lisp-embedding in Algol, all sorts of parsing algorithms, and a miniature Algol compiler written in Algol. My doctoral dissertation in Grenoble [Coh 67a] was concerned with languages for writing compilers. This was in 1967, considerably before Yacc and Lex had been developed.
Like my initial work with the Illiac, my time in Grenoble transformed my career outlook as I began learning more about languages and compilers. My epiphany then was akin to that which compelled me to embrace programming instead of doing specific calculations. I realized that a program could handle a potentially infinite number of input data. Similarly, a compiler could handle any program. Therefore, a compiler-compiler could (theoretically) handle any language! This, of course, was easier said than done.
My French sojourn was very productive from a scientific point of view and enabled me to make the transition from engineering to computer science by working on topics that were very novel at the time. However, there are many other valuable “side effects” of that sojourn. It allowed me to acquire fluency in French, and brought me in contact with many individuals who are among my best collaborators and close friends. My friendship with Laurent Trilling has a particularly special significance to me: over the past decades, Laurent and I have shared and continue to share interests in languages, automatic theorem proving, and bioinformatics. Grenoble was and still is a major French center for computer science and applied mathematics. Many of my original colleagues there moved elsewhere in France to establish new computer science departments. Among them I should mention Jean-Claude Boussard and Olivier Lecarme in Nice, Alain Colmerauer in Marseilles, Laurent Trilling, and Jean-Pierre Verjus in Rennes.
The work I conducted in Grenoble completely revolutionized my initial goals: I decided to become a computer scientist, instead of a structural engineer. Nevertheless, the previous experience I gained in my dissertation at Illinois coupled with the subsequent work in operations research would prove essential to my education and the research that I conducted in the eighties and nineties.
When I arrived in Grenoble in 1963, I had been appointed to the rank of Attache’ de Recherche (Research Associate) in the premier French research organization: Centre National de la Recherche Scientifique (CNRS.) At the end of my stay at Grenoble, I had achieved the rank of Charge’ de Recherche . Subsequently, while already in the U.S., I was offered the most prestigious position at the CNRS, that of Directeur de Recherche; however, I had to decline the offer since I was already well established and tenured at Brandeis University.
Later Career
Time at MIT and Brandeis
Even though my time in France was extremely positive, I always planned to return to the U.S. I had the good fortune of being offered a research position in MIT’s Civil Engineering department and I promptly accepted it. Unfortunately, I discovered that the software development in the department was still not as advanced in computer science as I believed it could be. A year later, I was offered an academic position at Brandeis University and have been associated with that university since 1968.
Some of the high points of my academic career since being at Brandeis include: being invited to teach a compiler course at Brown University for several years, as well as at MIT; being awarded a chair in Computer Science by the Feldberg family in association with their enterprises (Zayre, and later TJMaxx); serving as the chairman of the Computer Science department for thirteen years; and finally being appointed as Editor-in-Chief of one of the most prestigious professional journals, the Communications of the ACM, where my tenure spanned for four years.
Both at Brown and at Brandeis, I have had the pleasure of working with many brilliant students who now occupy prominent positions in both the industry and academia. During the thirteen years that I served as chair at Brandeis, I created the department practically from scratch, and managed to obtain substantial NSF grants for my research and for the department as a whole.
Around 2010, I felt it was time to retire from Brandeis. My last published research paper [CRC 11] gave me the pleasure of working with Ruth Charney, a former Brandeis student in the early seventies who is now a senior professor at the Brandeis’ Mathematics Department.
Even though the transition from full time work to retirement is not always straightforward, it has allowed me to slowly adapt to a less intensive tempo of life, enjoying traveling with my wife, interacting with old friends and concentrating on improving my violin skills. I still greatly enjoy attending the yearly conferences on Synthetic Biology, organized by Ron Weiss (also a former Brandeis student) who directs research in that area at MIT. There is no greater pleasure in my academic career than to witness the success of my former students.