2018 PFN Internship Coding Tasks
We have published the coding task used in the screening process of PFN internship 2018. It is available on GitHub.
Hello, I’m Kusumoto, an engineer in PFN. In PFN, we organize a summer internship from August to September. Coding task is what we asked applicants to solve during the screening process to check the applicants skill level at programming, problem-solving, etc. Because we are hiring in a wide range of fields, including machine learning, this year we prepared five kinds of problems — “Machine learning/Mathematics,” “Back-end,” “Front-end,” “Processor/Compiler,” and “Chainer.” Applicants would choose one of these tasks according to the theme they have chosen.
This year, we received many more applications than previous years. With this increasing applications, we increased the number of acceptances we offer.
The detail of the coding task is as follows.
- Machine learning/Mathematics: You are asked to implement an algorithm of adversarial examples for some neural network model. You need to write a simple report on the performance of the algorithm as well.
- Back-end: You are asked to create a tool that analyzes some log file.
- Front-end: You are asked to develop a prototype of an annotation tool for speech videos.
- Processor/Compiler: You are asked to optimize the code of matrix multiplication. Further, you need to design a hardware circuit of matrix multiplication.
- Chainer: You are asked to implement a training code for some model, using Chainer.
Every year, we carefully create the coding task with creative sense. I hope these tasks become a good practice problem to learn what you want to study.
I created Machine learning/Mathematics task this year. Let me briefly write what I usually consider when creating problems.
- Make the problem not require specific knowledge: In PFN, we hire people from a wide range of fields. We make problems solvable without any particular experience or knowledge of machine learning itself as possible so that various people can tackle the problems.
- Make the problem setting close to actual research: In the field of machine learning or deep learning, we often repeat the process like “find a good theme -> consider a novel method -> implement it -> summarize and evaluate the result.” Our problem setting imitates the latter part of this process. It may be similar to an assignment in a university class.
- Ask interesting theme: Lots of interesting research results appear every day in the area of machine learning/deep learning. The coding task should also be interesting. This year, the task was on the method called Fast Gradient Signed Method, which shows far better performance than random noise baseline method. I believe that this was a fun experiment in and of itself.
- Do not make the problem too difficult: It is not good if the problem is too time-consuming. Our objective is that a student with enough skills can solve the problem within one or two days.
We evaluate the submitted code and report from various perspective. Not only correct implementation is important. That code is readable for other engineers, that there is an appropriate amount of unit-tests, and that other engineers can easily replicate the result are also evaluated.
In addition to the code, summarization of the result and evaluation of the proposed method are also important factors in experiments. Reporting the result to other people is also important especially when you work in a team. We will check the submitted report to see how good these factors are.
If you are interested in PFN, we look forward to receiving your application in the next internship program.
We are also hiring full-time employees in Tokyo, Japan and San Mateo, California. Please refer to the job page below.