Since  my arrival at Brandeis in 1968, I was responsible for organizing and teaching new courses in computer science. These courses were offered by the Physics Department since at that time there was no CS department. Most of my students then were either math or science majors. The math department at Brandeis has had a superb reputation in pure mathematics but lacked the applied courses that were usually taught by physicists.
The first course I taught at Brandeis involved an aggregate of computer science topics that included languages, compiling, recursion, data structures, and miscellaneous algorithms that ranged from pattern matching to sorting. The language I used for the course was Algol 60 for which we had a compiler running in the IBM 1130, written at the University of Grenoble by Olivier Lecarme and Camille Bellissant in the late sixties. At that time, I also had students in the math department who wanted to learn symbolic manipulation languages, so Lisp was introduced as one of the topics in the intro CS course. To explain the intricacies of Lisp, I developed, along with one of my students, Carl Zuckerman, a Lisp interpreter written in Fortran. That interpreter incorporated many features of Lisp including the fact that it was based on a post-fix polish version of Evalquote and could perform garbage collection [CZ 72].
With the help of a colleague, Ira Gilbert, I toyed with the idea of building a hardware model of a Turing Machine that would be available to explain to the students the concepts of computability. Ira had always been a wizard in building electronic gadgets. His goal was to build the least expensive model. I recall that we received a $500 grant from the Brandeis Dean to make that idea a reality.
The TM consisted of three wooden boxes. The first box represented the tape that consisted of a set of 72 columns each containing 3 small lamps, each storing individual bits. A homemade circular switch simulated the head movement and the contents of the tape. One of the lamps represented the actual position of the head and the other two represented the 4 possible tape symbols. In the scrap market, Ira bought a set of telephone switches that made up the circuitry of the machine. Those switches were used in decoding the TM instructions.
Programming was accomplished by using cables, pretty much the way one formatted output in old printers. The second box contained the holes for specifying a program by joining them through cables. In that box there were 16 states displayed vertically. Horizontally there were rows of holes. A cable joining two holes would specify the starting state, the symbol read, the symbol to be written, a left or right move and the ending state. Therefore there were 16 rows each containing 12 holes. The third box contained buttons allowing to input bits on to the tape, to move the pointer, and to start execution at a given state.
The TM model was a success. One could program the addition of small binary numbers. I recall that that program was presented in an ACM conference and Ira got a standing ovation during his presentation when the machine succeeded in adding two binary numbers after clonking for a couple of minutes.
In the seventies, I was also responsible for introducing new languages into the then-emerging CS curriculum. Pascal was introduced as soon as that language became available for the PDP-10 that Brandeis purchased in the late seventies. The C language and the Unix packages of Yacc and Lex were actively used in a compiler course that I taught at Brandeis until the early nineties.
In 1974, I was invited to teach a compiler course at Brown University. There, I was appointed Visiting Associate Professor and then Visiting Professor. My relationship with Brown lasted for about eight years and I have the fondest memory of the extremely bright students with whom I have closely interacted.
In 1982, Joel Moses, then the head of CS and EE at MIT, invited me to teach a graduate-level compiler course at MIT. This particular experience was challenging since I had a highly capable group of students who were immersed in the Lisp culture and were skeptical about syntax-directed compiler construction.
In the early eighties, my friend Alain Colmerauer asked me to teach a compiler course at his university in Marseilles, France. This was to be an intensive course lasting for a month and with classes in the morning and laboratory sessions in the afternoons. I recall that for several years I left the snowy Boston area in early January during Brandeis’ winter break and traveled to the balmy weather of Cassis in southern France. There, I was privileged to interact with Alain, his associates and his students.
It must have been in the mid eighties when I got involved with Prolog and have become a believer in logic programming ever since. With Jan Komorowski, then at Harvard, I presented the first Prolog course to be offered in the Boston area. A few years later, I organized with Jean-Louis Lassez the first American conference on constraint logic programming. I now regularly teach a course on those topics at Brandeis.
In the early nineties, while I was chairing Brandeis’ newly established CS department, I obtained funds to hire Hal Abelson from MIT to teach the university’s introductory course using his superb text based on Scheme. Hal taught that course for two years and paved the way for subsequent teachings of the course by Brandeis faculty. The Scheme course remains one of required introductory courses for Brandeis’ CS majors.
In a similar vein, I managed to obtain funds for a course on Ada that was taught by Ben Brosgol, a known expert in that language. Also in the realm of teaching, it is important to mention my yearly summer association with interns from École Polytechnique and École Normale Supérieure in France. It is a privilege to interact with such bright young people and to teach them how to approach a research problem and be able to produce a paper or website containing the description of their work.
It is the greatest reward of a teacher to be able to have influenced a large number of students. Many of my former students from Brandeis, Brown, Marseilles, École Polytechnique and École Normale now occupy key positions in excellent universities and industries.
My latest involvement in teaching is in the emerging field of bioinformatics. In the spring of 2002, I was invited to co-teach a joint course on that subject at Brandeis and Wellesley College. My colleagues co-teaching that course were the biologists Dagmar Ringe from Brandeis and Andrew Webb from Wellesley. We had the unique opportunity to observe the differences in the two cultures (CS and Biosciences) and reflect on how those divergences could be bridged by thoughtful education that would combine majors in both fields.