1165 København K
Tlf: 35 32 28 98 (mon-thurs)
Computer science student once hated functional programming. Then he ended up getting an internship with US space agency NASA to do a project in...you guessed it...functional programming
If the pilot of an aircraft presses a button,there shouldn’t be a delay of two seconds before the software reacts. This is the kind of problem that the University of Copenhagen student Nis Wegmann has been working on with space agency NASA.
After reporting on his internship the first time, here, the University Post finally managed to get past the press release, and get hold of him to ask him a few more questions.
He makes finding student internship positions look so easy. First, he did an internship in Brazil. Then he did an internship with US space agency NASA.
Where on earth did you get the inspiration from to apply for an internship with NASA?
I originally didn’t apply for an internship at NASA. I saw an outdated post on the internet that Galois where looking for an intern. But, reading the post inspired me to send a speculative application to Galois for an internship. Galois is not a big company at all; they have about 50 employees and are specialised in using functional programming for implementing domain specific tools for safety and security critical applications such as mission critical systems and data encryption. Their main clients are U.S. government institutions such as NSA (national security agency, ed. ), NASA, etc.
I sent my application directly to Lee Pike from Galois regarding a project they were carrying out about improving the robustness of software in airplanes by using functional programming. Fortunately, I’ve carried out several projects combining functional programming, domain specific languages and mission critical software, including my undergraduate thesis. Given my background, I was a perfect match for the project, so that was kind of my foot-in-the-door.
Since the project was sponsored by NASA and a lot of the testing was being carried out at NASA Langley Research Centre, it was decided that I should be transferred to Virginia, instead of working at Galois. That is basically how I ended up working with NASA.
See our earlier story here
What was the most exciting thing about your stay there?
Besides the obvious excitement of working on a project with NASA and Galois, I’ve always thought the best way to travel is through school/work. Compared to back-packing you really get a chance to get involved with people, make friends, and experience the culture from a different perspective than the tourist-view.
I’ve also done an internship in Brazil for eight months, which was great. However, the best thing, I think, is to get a chance to make use of the skills that you learn at University in a real project, with real people, in the real world. Sometimes going to school, especially when you are an undergrad, feels monotonous as you just follow one theoretical course after another. Doing an internship abroad breaks the monotony and helps you realise that all the hard work you do at school is not wasted.
DIKU (Department of Computer Science, University of Copenhagen) has a long tradition in functional programming. In fact the first course you are thrown into at DIKU is on functional programming. At that time I hated it, utterly. Today, this whole week, I’ve voluntarily participated, worked, and a co-authored a publication on the biggest international conference on functional programming, ICFP. I have DIKU and their devoted teachers, who whip us with love, as one teacher once expressed it to me, to thank for this.
Did you have to go through tight security clearance every time you went to the office? How was it like to work there?
Most of the time I spent at the National Institute of Aerospace (NIA), but every time we had to test our programs, we went to the NASA centre and [tested the programmes, ed. ] on remotely controlled airplanes. The security was quite tight. I know they do a thorough background-check on you, and for some people it takes a year to go through. If you don’t have a clearance, you have to be escorted through the entrance, but once you’re inside it is more relaxed. I was there for five months and they never finished my clearance, although some of my colleagues got it faster. Maybe it is because I once voted for [Danish far left political party] Enhedslisten!
Tell us a little bit more about functional programming and what exactly your project was
Functional programming is the voodoo of computer science. It is a field in programming where you use recursion combined with idempotent (non-destructive) operators and data structures for solving problems in computer science. Since it is very abstract and mathematical a lot people, especially the ones who are used to program in normal (imperative) programming languages, feel restrained and find it hard in the beginning. But the ones who master it, talk about it like it is black magic, and claim that you can write better programs with fewer bugs in less time.
In recent years, companies like Google, Intel, and the banking industry, have realised that functional programming is great for implementing parallel programs, that is programs which run on multiple processors. In the past it was only necessary to parallelise programs if you want to run them on super computers or cluster networks. Nowadays, where every computer has a GPU (Graphics Processing Unit), which are highly parallel devises with massive build-in parallelism, and CPU’s has multiple cores, parallelism is ubiquitous and can be applied everywhere.
The project that I worked on had nothing to do with parallelism, however. It was a project about improving the security of airplanes by monitoring their software for errors while they are in the air. We used functional programming to implement a domain specific language tailored for designing such monitors. The challenge is that the software systems in airplanes are hard real-time, which means that there are strict upper-bounds on the response time for the software. Obviously if the pilot presses a button there shouldn’t be a delay of two seconds or so, before the software reacts–like in some web browsers for instance. For that reason it is a requirement that the monitors interact minimally with the software they survey and only interfere if an actual error happens.
Now that you are back, what are your plans?
I have to finish my Master’s Thesis. After that I’m not sure. Originally I was planning to do a PhD, but now I’m more leaning towards starting up a company.
Do you see yourself working for NASA again sometime down the road?
Not in Virginia. It’s too countryside for me. If I have to work again in the States I would prefer a big city like New York, Los Angeles, or San Francisco.
A couple of weeks ago, a young NASA scientist took the internet by storm for sporting a Mohawk when landing the Mars rover, which seems to have inspired young people. What’s your trick to get more youngsters interested in what you do?
I don’t understand why it should be necessary to use tricks. Doing a research project with NASA should speak for itself. On the other hand I’ve encouraged fellow students at DIKU to apply for internships many times. And most people seem to be very keen when you talk to them about it. But somehow people think it’s extremely difficult to contact a company on your own, find a teacher who will supervise the project, plan the travel, and so forth, even though I’ve done it twice. Perhaps I should get a mohawk!
Stay in the know about news and events happening in Copenhagen by signing up for the University Post’s weekly newsletter here.