Placement Student Story - Engaging with new talent

NAG Placement Student Story - engaging with the new talent.

Since its inception over forty years ago, the Numerical Algorithms Group (NAG) has been a consistent supporter of students. The company was founded on academic collaborations and still has very strong links with Universities and learning institutions spanning the globe, so it makes perfect sense to honour its background.

NAG offers support to students and post graduates in many ways, whether by sponsoring MSc courses or by recruiting students on yearly work placements. Essential to NAG's past, current and future success is the fostering of new talent, which helps ensure that the company and its product portfolio evolve alongside fast moving technical advances in software, hardware and computer practices.

Ruth Varley, previously studying on the MEng in Software Engineering course at Aberystwyth University, worked at NAG on the NAG Placement Student Programme during 2006 and 2007. She describes her time at NAG in her own words below.

“My first impression of NAG was completely different from what I'd been told to expect from the commercial world - cut throat, highly stressed and competitive. I believe that NAG's unique collaborative ethos is due in part to its age; the company is over 30 years old, which in software terms is an extremely long time; its longstanding ties with academia; and its not-for-profit status. I was given plenty of freedom in my work which I greatly appreciated, and combined with the relaxed and informal working atmosphere made my time at NAG very enjoyable.

I was thrown straight in at the deep end, which helped me feel very much part of the team. My first project was to develop a benchmark system to allow the comparison of the speed of different versions of the NAG Library. This project included writing user guidelines and code templates for the generation of new benchmark programs plus creating help documentation.

After this I was asked to re-write an existing numerical code in a new language. This particular routine had been requested by a user in the finance industry, and was needed within a very short time frame. The original source code was written in C and my role was to re-write it in Fortran, and ensure that it worked with the rest of the library (standard error reporting, re-use of existing routines where possible, naming of parameters etc). I also wrote the documentation and test program to go with it.

Once the adapted routine was with the client, I worked on expanding the tool I had written while working on it. This tool was for making a library which contained only a subset of NAG routines. I extended it into a system which allowed a smaller library to be built containing a specified group of routines, along with any underlying dependencies.

Following this, I produced a new version of an integer optimisation routine. The general optimiser which the routine used was scheduled to be replaced (although later I produced benchmarks which showed that the old version was faster for some problems, so it was decided to include them both in the next version of the NAG Library), so the program had to be re-engineered, which involved changes to the parameter list. The development work was reasonably quick and easy, but writing the test program took a lot of work.

As I was working on this, it became necessary to compare the C and Fortran libraries as a high street bank was considering becoming a customer and wanted to know which was faster. This involved modifying the Make system to allow linking against external libraries, since the C library Make system was very different from the Fortran one. The results were inconclusive, and the bank decided to buy licences for both.

I also worked on many other projects, which meant that during my time at NAG I learnt a variety of technical skills, many of which will prove useful in the future. Noteworthy skills that I acquired were proficiency in Fortran 77, Fortran 90 and the use of CVS. I also learnt a smattering of Perl and Python, and increased my knowledge of C, shell scripting, gdb and Make.

I had the opportunity to work directly on numerical routines that are now, or soon will be, commercially available which is very exciting. My experiences of consultancy work made me realise the importance of clear requirements from the client, without which misunderstandings can easily occur. The collaborative nature of the consultancy work I undertook with NAG was very inspiring; when I worked on producing a new routine for a client the prototype went back and forth between us, giving the client opportunity to provide input and feedback, and giving me the reassurance that the project was going in the right direction.

Overall, my year placement at NAG was amazing. My colleagues were very welcoming and friendly, and I was always treated as an equal member of the team. I got to work on 'real' projects that I found very interesting and were beneficial to the company. Knowing that I've worked on code development, help guidelines and documentation that will be used by people all over the world, gave me a feeling of great accomplishment. NAG has invited me back to work for them next summer. I'll definitely be going!”