On joining the UK and electrical engineering and equipment firm,
Ferranti, she started working in a group led by
John Makepeace Bennett. She worked on both the
Ferranti Mark 1 and the
Ferranti Mark 1 Star computers. The programs for these computers were written in
machine code, and there was plenty of room for error because every bit had to be right. The machines used serial 40-bit arithmetic (with a double length
accumulator), which meant that there were considerable difficulties in scaling the variables in the program to maintain adequate
arithmetic precision. The Ferranti programming team members found it useful to commit the following sequence of characters to memory, which represented the numbers 0–31 in the
International Telegraph Alphabet No. 1, which was a 5-bit binary code of the paper tape that was used for input and output: Another difficulty of programming the Ferranti Mark 1 computers was the two-level storage of the computers. There were eight
pages of
Williams cathode ray tube (CRT) random access memory as the fast
primary store, and 512 pages of the
secondary store on a
magnetic drum. Each page consisted of thirty-two 40-bit
words, which appeared as sixty-four 20-bit lines on the CRTs. The programmer had to control all transfers between electronic and magnetic storage, and the transfers were slow and had to be reduced to a minimum. For programs dealing with large chunks of data, such as
matrices, partitioning the data into page-sized chunks could be troublesome. The Ferranti Mark 1 computer worked in integer arithmetic, and the engineers built the computer to display the lines of data on the CRTs with the most significant bit on the right due to their background in
radar. This could be argued as the logically sensible choice, but was changed to the more conventional system of the most significant bit on the left for the Mark 1 Star. The Mark 1 Star worked with both fractions and integers. Program errors for the Ferranti Mark 1 computers were difficult to find. Programmers would sit at the computer control desk and watch the computer perform one instruction at a time in order to see where unintended events occurred. However, computer time became more and more valuable, so Dr Bennett suggested that Woods write a diagnostic program to print out the contents of the accumulator and particular store lines at specific points in the program so that error diagnosis could take place away from the computer. The challenge of her routine, 'Stopandprint', was that it had to monitor the program under diagnosis without interfering with it, and the limited space in the fast store made this difficult. Along with Bennet and Dr D.G. Prinz, Woods was involved in writing interpretive subroutines that were used by the Ferranti group. Errors with the programs were one problem, but errors caused by the computer were another. The computer frequently misread the binary digits it was given. The engineers thought the mathematicians could compensate for this by programming arithmetic checks, and the mathematicians would too readily assume that a wrong program result was due to a computer error when it was due to a program error. This caused inevitable friction between the mathematicians and the engineers. At the centre of this was a program that Woods had written for inverting a matrix to solve 40
simultaneous equations, which was a large number for the time. The long rows of data required by this calculation took the computer too long to process without an error. For one dispute Woods went to
Tom Kilburn, who was second only to
Professor Sir Frederic Calland Williams in the engineering department. Kilburn was polite but did not argue, and she felt he was ignoring her complaint. However, 50 years later when she asked him about the exchange, he said that he had not argued "because [he] knew [she was] right." While at Ferranti, Woods discovered that the women in her department were getting less pay than the men. She presented the case to the personnel department and was able to convince them to grant equal pay and rights for women. ==Cottage industry programming==