In the last part of my story I told you of my first encounter with a mainframe computer and the Algol 60 language while I was an undergraduate student at Aberystwyth University.
Today I want to talk about the next stage as a postgraduate student at the University of Manchester.
I had a wonderful three years in Aberystwyth. It was a beautiful location by the sea with access to all sorts of landscapes and environments; perfect for a Biology student. I could go on at great length about the forays into tidal pools in front of the main University buildings on the sea front, the Welsh woodlands, mountains, salt marshes and bogs we visited. I could tell you about the student who used to bring her pet Jackdaw and her Border Collie to lectures, or the tale of the incredibly fierce rat that my friend and I allowed to escape in the lab, which caused 30 students to jump on tables and chairs. However, I will not. Perhaps another time.
Suffice it to say that as we needed to specialise in the last year of study I gravitated towards the area of Animal Behaviour. I did a project on memory in goldfish, training them to perform a task, then using a drug on them to prevent the formation of long-term memory and showing that they had forgotten their task while the control group had not.
I obtained a reasonably good Honours degree in Zoology in the summer of 1972 and then had to consider what to do next.
I considered developing the programming skills I had acquired in a Biological context, and applied to a few places with this idea in mind. However, nobody wanted a newly graduated Zoologist who had done a little programming, it seemed, or maybe the fact that I didn't really know what to do next was glaringly obvious. I started looking for a possible place to take a postgraduate degree.
I was offered a place to study for a PhD in the Animal Behaviour group in the Zoology Department at the University of Manchester. As was normal in those days, I had been awarded a Local Education Authority grant to study for my first degree. However, I could not find funding for my PhD, so I put my studies on hold and went home to try and find a job, with the intention of funding myself for my first year, and seeing what happened after that.
A Year Out
Back home I found a job by the simple expedient of knocking on the door of a local plastics factory where I had worked before during vacations. I ended up as a labourer, doing shift work, earning about £0.50 per hour. Through this method I managed to accumulate enough to fund myself for my next year.
Being an inveterate hoarder I seem to have kept my employment contract, and happened to find it recently while tidying the house.
In case you are wondering, the Grinding Department was responsible for chopping up all the waste plastic, melting it down and converting it to pellets so it could be re-used. It was fairly heavy, noisy, boring work, but it achieved the desired goal.
University of Manchester
In the autumn of 1973 I was in the city of Manchester, at the University of Manchester, one of the largest universities in the UK. I was there to obtain a PhD (Doctor of Philosophy) degree, doing research in Animal Behaviour.
Doctor of Philosophy Degree
My research topic was to be looking at how animals decide what to eat, where to look for food, how much effort to expend finding and eating it and so on. At the time this area was variously referred to as feeding strategies, optimal foraging and by other names. Later in the decade and into the early 1980's this subject became what is now known as Behavioural Ecology, one of the areas where Mathematical methods (and ideas from Economics) were used to describe and predict animal behaviour.
A recent programme in the BBC Radio 4 series "In Our Time" did a fine job of covering this subject and can be heard on the BBC website if you are interested (and if the site is not blocked from outside the UK).
I found myself a member of the Zoology Department, which was then a separate entity within the University. It was later incorporated into the School of Biological Sciences, after my time, in 1986. The Zoology Department had been established in 1870 and the rooms and laboratories had an ancient feel about them which I really liked. In 1973 the department was housed in a beautiful old building adjoining the Manchester Museum. Postgraduate students in the department were given keys to the building and these also gave access to the Museum which was linked to the front part of the building. The Museum contained some fascinating exhibits, including a number of live animals.
My PhD Supervisor had two other students who were starting at the same time that I was, both doing research in Animal Behaviour. Two of us were using the Barbary Dove (Streptopelia risoria) as our experimental animal and the other one was researching on the Common Marmoset (Callithrix jaccus). Our animals were in the Animal House in the basement of an old building near the Zoology Department.
It was usual in those days for postgraduate students in the Department to begin their research projects by carrying out a literature review and writing it up for assessment. In my case this consisted of reading through any of the relevant journals held by the University Library, or for more up to date material, reading a publication called Current Contents which summarised recent publications in peer-reviewed scientific journals. If a paper looked interesting in Current Contents then it could either be obtained by requesting a photocopy through the Inter-Library Loans service or by writing to the author (whose address would be published with details of the paper) to ask for a reprint. Needless to say, this was a slow and laborious process, though the arrival of a new paper was an exciting event.
The purpose of doing the literature review was to become highly conversant with the subject and as up to date as possible with published research. This required the keeping of a good collection of references to papers and reprints, and the way to to this in those days was by keeping a filing system. I started by keeping a box file full of hand-written index cards in alphabetical order. There was very little at that time for doing this in any other way.
My supervisor introduced us to a slightly more advanced technology in the form of edge-notched cards at this time. These have holes punched all around the edges, which can be notched with a punching tool (we used scissors) to differentiate them from other cards. The principle is that cards relevant to a topic will all be notched in a particular position. They can be extracted from the deck by passing a needle or rod through the relevant hole and lifting out all the cards which are not relevant to a search. Searches can even be combined by using more than one needle or rod.
This system was a type of mechanical database, though I have to admit that the sophistication of this method was largely lost on us and we used the simpler methods we had already started with.
University of Manchester Regional Computer Centre
Across the road from the Zoology Department was the Kilburn Building, which was fairly recently built, having been opened in 1972. This contained the Computer Science Department (later the School of Computer Science) and, on the ground floor, the University of Manchester Regional Computer Centre (UMRCC).
UMRCC was one of the regional computer centres funded by Government to provide high-powered computer facilities for universities in the local region. UMRCC initially provided services for a group of universities which, as well as Manchester itself, included Salford, Liverpool, Keele and Lancaster. The University of London Computer Centre (ULCC) was one of the other such centres.
I don't know if there was much in the way of inter-computer networking going on at that time. I would not have had to use it myself being at the heart of things in Manchester, but I think the access to the Regional Centre was via Remote Job Entry (RJE) facilities at the satellite universities. Sadly, I cannot seem to find much information on these facilities now. I will leave further discussion of this subject until a later episode when I speak about finding myself at one of the satellite universities.
At the time that I was there, UMRCC had a state of the art CDC 7600 computer from Control Data Corporation, front-ended by an ICL 1906A. The CDC 7600, designed by Seymour Cray, who also designed the Cray-1 later in his career, was considered to be the fastest supercomputer in the world at that point. I think it ran the SCOPE operating system, but I have not found much to support this vague memory. The 1906A ran the GEORGE operating system, either GEORGE 3, or since this model had paging hardware, GEORGE 4 - I don't remember, and I can't find any records any more.
Picture: CDC 7600
Attribution: "CDC 7600.jc" by Jitze Couperus - Flickr: Supercomputer - The Middle Ages.
Licensed under CC BY 2.0 via Wikimedia Commons
As a student I was able to get an account on these systems and soon started learning about them and using them. The main work-horse was the CDC 7600 with the 1906A (quite a powerful computer in its own right at that time) being mainly used as a gateway to the CDC. As before, programs mostly had to be written on coding sheets and punched cards generated, but at UMRCC the users had access to card punches for small amounts of work, making corrections and so forth.
Picture: IBM 029 Card Punch from Wikipedia
There were also teletypes available to us, connected to the ICL 1906A, but I didn't use these at the start, and I will talk about them later.
One of the things that fascinated me about the Computer Centre was the viewing gallery. Access to the ground floor of the building was through a corridor with a glass wall looking into the computer room. In it was all of the hardware, mainframes, tape drives, card readers, line printers and so on. The computer operators wore white coats and could be seen tending to the machines.
A pair of rather poor quality videos1,2 are available on YouTube, made at some time in the 1980s when there were two CDC 7600s and the ICL 1906A was replaced by an Amdahl. See the links below. There are several views into the machine room from the viewing gallery in these videos. It looked similarly full of hardware in the early 1970s.
The building itself was heated by waste heat from this equipment. I was in Manchester during the Miners' Strike and the Three-Day Week when a lot of electrical equipment was shut off and lights turned out to save power. UMRCC kept going during this time and was heated where other places were not.
During this period, I was writing programs in Algol 60 as before, though the compiler available to me was different from the one I had been used to. I also learned Fortran at this time.
Fortran seemed a strange language compared to Algol 60. Statements had a fixed layout, starting in column 7 up to column 72 with columns 73-80 often being used for sequence numbers, to keep the card deck in order. Hardware card sorters were available to sort mis-ordered decks. If a statement had to be continued to a second card then each continuation card needed a character in column 6. Columns 1-5 contained a numeric label used by
GOTO statements and others, and if column 1 contained a
C that made the card a comment card.
See the example of a simple Fortran IV program on the WikiBooks site for what the Fortran of this time looked like.
In this example you will see
FORMAT statements that define input and output formats. In this program all of these statements are collected at the top, though most people placed them after the
WRITE statements they were associated with. As an example consider the following
FORMAT with its associated
601 FORMAT(4H A= ,I5,5H B= ,I5,5H C= ,I5,8H AREA= ,F10.2,12HSQUARE UNITS) WRITE(6,601) A,B,C,AREA
H (Hollerith) format defines a sequence of characters of a predefined width,
I (Integer) format defines an integer number and
F (Floating point) defines a real or floating point number. It was quite laborious having to count the width of
H formats in particular.
Also, the first character defined in a
FORMAT statement had special significance. These were the days of line-printers and these needed control characters to be sent to them to control the line spacing. The first character output on a line by a Fortran program was a line-printer carriage control character. A space in this position tells the printer to advance to a new line on the output. A zero advances two lines (double space), a 1 advances to the top of a new page and + character will not advance to a new line, allowing overprinting.
Failure to remember the use of the first column could result in problems. For example, writing a column of numbers where the first digit was a '1' could result in the printer throwing large numbers of pages with just a single (truncated) number on each. Printing signed numbers starting in column 1 could result in them all overprinting one another as a consequence of the '+'. Neither of these mistakes were very popular with the computer operators!
WRITE statement defines the output unit (6) which will be associated with a device like a file, card punch or line printer, and the format statement which defines the layout of the data. There were various ways in which units were associated with devices. Sometimes the association was by default and other times the job control cards surrounding the program itself defined these associations.
One of the great things about Fortran was that were many libraries available for numeric work or to plot results. I had dabbled with using a graph plotter at Aberystwyth and I learned more about how to do this at Manchester. I also made heavy use of the Numerical Algorithms Group (NAG) Library which contained many tools for numerical work like random number generators, statistical methods and matrix manipulation functions.
The language Pascal had also started to become popular around this time. It had been published in 1970 and a CDC version had been developed. Due to its similarity with Algol 60 I wondered if it might be a language I could use.
I acquired a copy of the book written by Jensen and Wirth, a strange thing which looked as if it had been generated on a typewriter, with handwritten insertions where there were unusual characters. Sadly I don't seem to have this any more; I must have lent it out and never had it returned or possibly it's lurking in some forgotten corner of my house.
Pascal was remarkable at the time because it had data type definitions, records, sets and pointers, which Algol 60 did not. I learnt how to use it and wrote some programs in it but it seemed rather abstract and not very practical compared to Fortran.
In its early incarnations Pascal required declarations to be made in a particular order:
labels constants types variables functions and procedures
labelsare numeric and are the target of
gotostatements. Pascal users are strongly dissuaded from using
constantsare identifiers associated with values
typesallow the programmer to define new data types
variablesare identifiers which refer to storage ares of various
functionsare subroutines that return a value
proceduresare subroutines that do not return a value
In Pascal you can define types based on existing types. For example:
type byte = 0..255;
this type is a sub-range of the standard type
integer. This example also demonstrates sub-ranges.
Pascal contains set types, which was an innovation at the time it was created. For example, to declare a set capable of holding any lowercase letters:
var letterset : set of 'a'..'z';
this could then be used for testing, such as:
if 'a' in letterset then ...
There were issues with the implementation of such features in the early days however. For example, it was not possible to define sets containing very large numbers of members since they were represented as bits in a byte, word or longword.
Pascal also allows the definition of complex data structures called
records, such as:
type dates = record day : 1..31; month : 1..12; year : 0..9999 end; var today : dates;
There were also issues with these data types in the early days. It was possible in the language to define files containing these items, but many Pascal implementations could not handle them.
The Wikipedia article on Pascal contains a good overview of the language if you are interested in investigating further.
Pascal became popular for teaching and later became more effective as the language definition changed and more implementations became available.
I did not use Pascal much at this time, but later made heavy use of it, as I shall describe in later episodes.
- University of Manchester:
- Wikipedia entry: http://en.wikipedia.org/wiki/University_of_Manchester
- Prior to 2004: https://en.wikipedia.org/wiki/Victoria_University_of_Manchester
- Manchester Museum: http://en.wikipedia.org/wiki/Manchester_Museum
- School of Computer Science: https://en.wikipedia.org/wiki/School_of_Computer_Science,_University_of_Manchester
- Behavioural Ecology: https://en.wikipedia.org/wiki/Behavioral_ecology
- Experimental animals:
- Current Contents: https://en.wikipedia.org/wiki/Current_Contents
- Card systems:
- Control Data Corporation CDC 7600: https://en.wikipedia.org/wiki/CDC_7600
- Seymour Cray: https://en.wikipedia.org/wiki/Seymour_Cray
- Cray-1 supercomputer: https://en.wikipedia.org/wiki/Cray-1
- ICT (ICL) 1900 series: https://en.wikipedia.org/wiki/ICT_1900_series
- ICL GEORGE operating system: http://en.wikipedia.org/wiki/GEORGE_%28operating_system%29
- Card Punch: https://en.wikipedia.org/wiki/Keypunch
- UMRCC videos on YouTube:
- The three-day week: https://en.wikipedia.org/wiki/Three-Day_Week
- Wikipedia article: https://en.wikipedia.org/wiki/Fortran
- WikiBooks examples of Fortran: https://en.wikibooks.org/wiki/Fortran/Fortran_examples#Simple_Fortran_IV_program
- Graph plotter: https://en.wikipedia.org/wiki/Plotter
- NAG Library: https://en.wikipedia.org/wiki/NAG_Numerical_Library
- The Pascal language:
- Wikipedia article: https://en.wikipedia.org/wiki/Pascal_%28programming_language%29
- "The Programming Language Pascal" 1973: http://www.standardpascal.com/The_Programming_Language_Pascal_1973.pdf
- Life and Times of a Geek part 1: http://hackerpublicradio.org/eps.php?id=1664