日本語

About Computing Software Group

Our research interests are in programming languages and system software, i.e. the core of computing systems. We are seeking students who love programming as well as programming language design and software engineering. Our aim is to explore “cool” things related to programming.

What is programming-language research?

We are a research group for students who are interested in programming languages, tools, libraries, and frameworks for writing a program with good maintainability and extensiblity.

If you have an experience of writing a not-toy program, you would agree to the significance of our goal. Our interests are techniques for writing a program so that its behavior will be clear, its code will not be redundant, and its organization will be well structured to make its functionality easily extensible.

The examples of research topics for master thesis are available from this page. For PhD topics, please check this page.

Software as an art work

Developing useful software is a main part of our research. So most students are developing software as their art work. Coming up with a good idea, developing software based on that idea, and write a paper is our research activity. For example, they are developing software for the following research topics.

Programming languages

Our typical research topic is to study various programming tools for helping software development. For example, we are studying techniques for mechanically generating programs when the programs are too complicated to write by hand or writing the programs by hand is not realistic due to their amount. We have been developing programming tools based on these techniques, which partly automate programming and reduce the amount of work by software developers. Debugging is another example. We have been developing such programming tools for finding and fixing a program flaw.

Another research topic is to study new language constructs. It is a typical topic for programming language research. A language construct is a various component constituting a language, such as a while statement, an object and a class, inheritance, a lambda expression, the do notation for monads, type inference, and so forth. During this type of research, we develop a new programming language (or an extended version of existing language) supporting such a new construct.

We are also studying a compiler and a virtual machine (or an interpreter). We are improving the execution speed of such software and extending its functionality. Garbage collection and thread scheduling for parallel computing are also research topics.

The target programming language is selected for each research topic. Students often select their favorite languages for their research.

IoT devices (micro controller)

Small electronic devices and robots around us are controlled by micro controllers. Since these controllers are very small computers that have only a small amount of memory and must run with low energy, programming for such devices is not easy. We are studying programming environments so that we can do much higher-level programming for such devices.

Software engineering by machine learning

We are also studying machine learning to help programming. Machine-learning techniques for natural language processing are applicable to programming. They are useful for retrieving valuable knowledge from programs. For example, we are studying a machine-learning technique for cross-language code-clone detection, which finds mostly duplicated code between two programs written in different languages. This is useful for refactoring. Another topic of our research is to automatically retrieve a coding style by analyzing existing programs. The code completion based on the machine learning technique is also a topic.

Libraries and frameworks

Modern software is developed by using a framework and/or libraries. We are also studying frameworks and libraries. Developing a framework/library for a particular application domain such as machine learning, scientific computing, security, and robotics, is a possible topic. Developing a more general-purpose framework/library for parallel computing or distributed computing is also a research topic. They are used for developing software utilizing SIMD/GPUs or supercomputers. We are also studying a meta framework/library, which helps us develop those frameworks or libraries.

Some libraries/frameworks are called operating systems or middleware since they run in the kernel mode or in a separate process. We have also studied such operating systems and middleware.

For machine learning, we often use a machine-learning framework such as PyTorch. Such a framework significantly reduces the development costs of machine-learning software. Our research aim is to develop a better framework/library so that writing a program will be much easier.

Make a language or a library?

The boundary between languages and frameworks/libraries is unclear. A number of frameworks for machine learning have been developed for Python. This is because making such a framework is much easier than making a new language for machine learning. However, a framework often enforces an unnatural style of program (or protocol) on the user programmers.

Modern programming language constructs are getting to address this problem. They enable as a natural style as languages do. A framework or library implemented in such a means is called an embedded domain-specific language (eDSL) since it is embedded in the host language such as Python. EDSLs, or libraries with language-like programming interfaces, are the next generation of libraries. We are actively studying eDSLs, more concretely, programming tools for developing EDSLs, and general-purpose languages in which useful EDSLs are easily developed.

To Applicants

We welcome students who have passion and strong interests in software development. Good programming skills are desirable but not mandatory. Only basic programming skills are. Past students were able to quickly learn necessary skills if they like programming. Potential applicants can ask a question about such required skills by emails. Visiting our group is also possible by appointment.