France-IOI internship

France-IOI

France-IOI is a non-profit association founded in June 2004 with the aim of developing the selection and training of the French team for the International Olympiad in Informatics (IOI). Its board of directors is composed of four founding members (Mathias Hiron, Arthur Charguéraud, Fabrice Bardèche and Joël Courtois) and 7 elected members (Guillaume Le Blanc, Ismael Belghiti, Jacques-Henri Jourdan, Loïc Février, Amaury Pouly, Benjamin Butin and Louis Jachiet).

The main objectives of the France-IOI are: Train, select and support the French delegation to the IOI. Create and distribute educational content for programming and algorithmic. Organize national and international competitions in programming, algorithmic or computer science discovery.

The main goal of France-IOI is to make programming and algorithmic accessible for all: free tools and content distributed by the association allow rapid progress, and the Algorea platform is the hub of many exercises and training tasks.

My internship

The internship focused on the integration between the Front-End and the Back-End of the learning platform, regarding its UI: browsing of the content, management of student groups and progress monitoring, rights management, etc. Since the platform is developed by a handful of developers, my main goal as an intern was to increase development speed of the Algorea platform. I worked with the lead developer of the platform (Damien Leroy) and another intern (also from EPITA).

Because I had no experience in Angular, Typescript and Rxjs, the internship supervisor tasked me to do a very versatile component, that was a very good introduction to key concepts of the technologies I was going to use for the whole internship. I also had to learn the agile method of doing things: Pull requests must be small enough to be reviewed easily, and the code added to the project must be clean, tested and reviewed by the lead developer.

A designer has already designed most of the components of the platform (so the HTML and CSS), the first part of my work was to adapt these components to make them functional. I had to rewrite some of the components from scratch, given the numerous changes. The main pages of the Algorea website were already built, but it wasn’t ready for production yet. I was tasked to work on the most essential components so that the platform could be used the sooner the better.

design

My work was centered around a daily meeting we had (the lead dev, the other intern and I) at 9am, where we would talk about what we did the day prior and what we planned to do the following day. My objective was to create, update, or close at least one pull request a day (you can find a Gantt chart of my pull requests in the figure 1)

Works done

At the beginning, each pull request had to be reviewed multiple times, because I had to change a lot of things (correct errors, or refactoring parts of the code), so the progress was pretty slow. As my skill kept growing, the features I had to implement were more and more complex, that’s why the rhythm of my PRs didn’t accelerate.

Pull requests Gantt Chart

The Stack

During this internship, I learned a few new technologies:

  • Angular
  • TypeScript
  • Rxjs
  • Sass
  • Karma

I also developed my skills in the following:

  • git and Github
  • Javascript
  • the Agile Methodology

Final thoughts

To conclude, I would say this internship was a great experience, especially as a first professional experience in web development. I was reluctant at first to work in the web industry as I thought that it was boring and not technical enough, but I faced problems that changed my point of view. The only downside I can think of is the fact that I had to work remotely as France-IOI is internationally based so they don’t have a dedicated workspace.