Machine Learning internship - Hardis Group
In this post, I talk about a three-month internship I took in summer 2019 as an engineering student, where my mission was to help in the development of a learning platform and create Machine Learning courses for it.
When I was in high school, Richard Feynman was only a famous scientist whose work was too complicated for me to grasp. This was the case until I discovered his lectures, and soon after a few books about his life.
Today, Richard Feynman is one of the people who has had a lot of influence on my educational background. He has a way to create representations of concepts to structure his reasoning that makes his explanations so clear, that I hope one day I will be able to create content with this level of quality.
With that in mind, I think you can imagine how I felt when a company offered me an intership where I would have had to create courses on a topic I loved.
My internship at Hardis Group
Hardis Group is a french software firm that employs 1’000+ people for a turnover of €115M+ in 2018.
My internship topic had two perspectives: full stack development and Machine Learning courses creation, I talk briefly about the first one before reflecting about the second–and big–one.
Full stack development
On my first day at Hardis Group, I joined the team in charge of creating their online learning platform. My mission was to help in the development process and make it evolve so that it could support my Machine Learning courses.
The stack’s components I worked on are:
- Vue.js for the front-end
- Python + Flask for the back-end
- Kubernetes to run the user’s code (as part of the platform’s exercices)
- AWS cloud solutions
At the end of my internship, my contribution accounted for 25% of the repository’s source code. For example, I’ve implemented an editor supporting Markdown and LaTeX with real-time rendering of what the course would look like if posted (I will upload an open-source version of the markdown + LaTeX real-time rendering on my github sometime).
Machine Learning courses
The main mission I was assigned at Hardis Group was the creation of introduction courses to Machine Learning ; I created four of those:
1. Unsupervised I - autoencoders and Fashion MNIST
This course covered the following topics:
- What is unsupervised learning?
- Data clustering
- Auto-encoders
- Exercice: creating an unsupervised image classifier (images from Fashion MNIST)
2. Supervised I - Keras and MNIST
This course covered the following topics:
- What is supervised learning?
- Neural networks basics
- Creating a MNIST image classifier using Keras
- Exercice: create a neural network exceeding 90% of categorical accuracy on MNIST (we are limited by the platform’s ressources)
3. Supervised II - Keras and CNNs
This course covered the following topics:
- What is a convolutional neural network?
- Convolutional layers
- Pooling layers
- Keras implementation
- Convolutional network architectures
- Exercice: create a neural network exceeding 75% of categorical accuracy on Fashion MNIST
4. Q-learning and Snake
This course covered the following topics:
- What is reinforcement learning?
- Q-learning
- Exercice: implement a Q-learning algorithm that can win a 3x3 game of Snake 60% of the time after 30s of training (I implemented a browser interface so that the user could visualize their AI winning a game of Snake)
My internship: one year later
As I am writing this post, my portfolio is very recent and I am currently writing content for it. My internship at Hardis Group took place a year ago, this gave me plenty of time to think about it.
Here are a few things I learned:
- Explaining a topic helps you mastering it. Writing introduction courses about Machine Learning topics helped me realize there were a few things I had not fully understood
- I really enjoy creating teaching content. I enjoy it so much that I have enrolled in the Educational Technology class at Georgia Tech for Fall 2020
- Full stack development and modern stacks are fascinating, I really had a lot of chance working on this topic I had never approached before
- Cloud technologies and Docker/Kubernetes are also very impressive
Working in a software development firm is cool. Honestly, I woke up every day eager to go to work.
However, I will try to aim at a position more involved in managment after obtaining my PhD ; I want to be able to work on projects while leading the team developing it.