Keio University

What It Means to "Research" Software

Publish: July 25, 2016

Few would dispute that we live in an age of information. Computers and smartphones have become fully integrated into our daily lives, and it is now almost impossible to imagine life without digital devices. The spread of information technology knows no bounds, with remarkable advancements in artificial intelligence, autonomous driving, and Industry 4.0, which aims to advance the manufacturing industry. You are likely aware that software is at the core of this information technology. You may have a sense that the reason we can do more and more interesting things is that more and more interesting software is being developed.

So, what do you think it means to study or research software at a university? It is neither about mastering how to use software nor is it the same as programming as a hobby. Researching software can be described as a challenge against a complexity that exceeds human cognitive abilities. The most complex thing humanity has ever created is computer software. Compared to the complexity of modern software, even a jet airplane or a skyscraper is incomparably simple.

Figure: A view of the laboratory. Research is conducted by connecting numerous computers.

When trying to create new and interesting software, one often has to efficiently solve complex problems that have never been encountered before. As the problems become more complex, their solutions become even more so. Furthermore, trying to solve problems efficiently makes the solutions even more complex. Therefore, the final solution ends up increasing in complexity exponentially. On the other hand, human cognitive ability is limited, and there is a certain limit to the complexity of problems we can handle. The theme of software research, it could be said, is to conceal the inherent complexity of software, to keep its complexity from exceeding human cognitive abilities, and as a result, to constantly provide room to challenge even more complex problems.

Figure: Software architecture of GLoop

Finally, let me introduce what we are doing in my laboratory as an example of software research. Recently, I often see articles about how the world is changing dramatically due to machine learning, such as deep learning. To perform this deep learning efficiently, we use a massively parallel processor called a GPU. This thing called a GPU has exceptionally high processing power, but it is quite tricky to draw out its full performance. The solution becomes complex. We are researching and developing a software infrastructure (codename: GLoop) that conceals this complexity. Using GLoop makes it possible to harness the high processing power of the GPU without the solution becoming complex.

However, the fact that this kind of software infrastructure also becomes increasingly complex is a source of trouble... As you can see from the figure, GLoop is very complex.

Gakumon no susume (An Encouragement of Learning) (Research Introduction)

Showing item 1 of 3.

Gakumon no susume (An Encouragement of Learning) (Research Introduction)

Showing item 1 of 3.