I graduated from Queens College (New York) in 1976. My major was computer science and back then, this was unusual as very few places offered degrees in CS.
My mom worked at Queens College and she also went back to school. In 1976 we both graduated
In my senior year, I also worked for a startup company they wanted to build an on-line health testing service. The idea was that one would not have to see a doctor for their annual health checkup. Instead, one would take a set of medical tests and the result would be either a recommendation to see a doctor or just come back next year.
I wPhoney Programmingrote a multi-taking operatng system for a Data General Nova minicomputer and a Control Data Eclipse minicomputer.
We were bought out and disbanded. This gave me a healthy distrust for big industry. I was already going to NYU for my master's. But I found it hard to give up industry. I did and am glad I did. However, I advise all my students that they can take off a year between
Of course the world is different now, but I wanted to do research because I wanted to do research not because I thought it was a great life.
The Courant Institute at New York University was my home for my graduate career. It was a great place to do a PhD. Despite my leanings towards systems work, Courant gave me a healthy respect for applied mathematics.
Between Master's and PhD I took a multimonth bicycole trip through Europe. I highly recommend taking time off to recharge batteries before the long haul.
NYU-Ultracomputer. Combining fetch-and-add in Omega network. The main idea is as follows. Suppose there is a set of processors and a set of memory modules with a multi-staged interconnection network. Back then, this was one reasonable way of thinking about a parallel machine. Today, we assume the memory is near the processor and all together they form a non-uniformly accessed shared memory. Today, it mught be more reasonable to assume that the processor and memory are a single unit and the netowrk connects the disks.
When multiple processors try to acess the same variable at about the same time, their requests will meet at some switch within the network. Usually, this will mean that one request waits while the other continues. The innovative idea is to combine the two requests into a single one which gets forwarded. On the return the single response gets split into two separate responses. ((I need a link here to a couple of Ultracomputer papers))
Butler Lampson claims that ever successful engineering project must "do one thing right" My take on this is a bit different. Every project needs to have one thing interesting. One thing that captures the imagination; one thing that every team member brags about. This helps everyone do their mundane routine work in a high quality fashion. Combining Fetch-and-adds in a network is an idea that can excite a whole project even if combining rarely happens and is only a small part of the project.