Data Engineer @ Artefact

Passionated AI and Datascience.


I am SENHAJI RHAZI Hamza, software engineer, I got a master degree in mechatronics from FSTF (Fez, Morroco) and a master degree in computer science from EPITA (Paris, France)

During my experiences i did accumulate a descent background on both mathematics and software engineering.
I have an interest for problem solving, and modeling every-day problems through mathematics/informatics tools is where I find myself the most !

This website is constructed with the purpose to be a resource course in informatics/mathematics.
I'm making the bet to explain some "hard" concepts staying rigorous and clear enough to be understood by just 1 year math university background.
I'm also allowing myself to share some personal thoughts and writings.



Master degree in Computer Science (EPITA-SCIA) NONE

EPITA is an engineering school in Paris.
I got specialized in Machine learning and Data-Science field.
Epita is ranked as the second best school in France for computer science field according to "Usine nouvelle" classement for the year 2018


Master degree in mechatronics (FSTF-IMT) NONE

FSTF is a Faculty in Morroco (Fez), where I have studied Mechatronics (MCT) a multidisciplinary field of engineering that includes a combination of systems engineering, mechanical engineering, electrical engineering, telecommunications engineering, control engineering and computer engineering


Preparatory class school (GSR-PSI) NONE

Groupe scolaire la résidence (GSR) offers a cursus of Preparatory class where I have studied 2 years of intense mathematics and physics

Professional experiences

2018 (6 months)

Intern R&D NLP Engineer at reciTAL NONE

My work at reciTAL consisted on doing research on the NLP (natural language processing) task, more specifically for QA systems (Question answering systems) and develop a commercial product out of it. In other words developing an intelligent search engine, where people can query their unstructured data in human language.

QA systems task is a sub-field of NLP which is a sub-field of AI, where the challenge is to query over unstructured or semi structured data like a Wikipedia articles for example, and have a system that can point the answer on the article, Stanford university have launched a competition over this task released a famous dataset (SQUAD dataset ) and people all over the world are competing

During my internship, I had to do a research part in order to improve the models and adapt them for French as well as English and develop a commercial product using those models, with all what it implies. At that time our work at reciTAL lead us to occupy the 3rd place in one of the task (predecting the existence of answer) on the leader-board.

Checkout more details about the competition Competition launched by Stanford university

2015 (4 months)

Intern software developer NONE

OCP Group is the biggest corporation in Morocco, that was representing 7% of the GDP by 2012, I was affected to the service supply, that was in charge to satisfy the demands in supply of all the services (including itself).

The service supply had difficulties to track the satisfaction of a demand, since when the demand is blocked somewhere in the process, it was difficult to track why, where, when...

They have tried a solution with excel that was heavy and inefficient to track the progress of a demand.

I have redesigned their way of tracking supply demand, where i replace those excel sheets with an Access Database, and linked it with an interface developed by VB.net, then I have built some performance indicators based on statistics treatments

2014 (2 months)

Intern assistant NONE

Astron machine tournante, is a company, specialized in fixing maintaining electrical motors, it was a stable company with the same clients, type of technical problematics to manage, when a motor arrives it goes through a process of electrical/mechanical tests, according to the results and the type of motor, a process of fixing was launched.

2013 (2 months)

Intern assistant NONE

Sofacuis is a company specialized in oven construction, during my internship in Sofacuis i contributed to redesign one of the four models produced by the company using SolidWorks CAO software for mechanical design

2014-2018 (partially)


During my years of study, I have been teaching mathematics and some physics for high school students and also helped for contest preparations like SATS (for USA universities)

Skills and projects

Machine learning and Convex optimization

Twitter sentiment analysis (Python scikit-learn tkinter)

This is a Machine learning project more specifically NLP project, that aimed to predict tendencies (positive or negative) of tweets in regard to a subject by selecting parameters like date range, city etc.., to see more checkout our Video

Portfolio Optimization (ROBOT ADVISOR) (using Markowitz Model) (Python ocvx-opt)

This is a project where the company JUMP gived us some information about a set of assets.
The project was about building a robot advisor that is able to choose optimal combination from 20 assets among more than 500 assets given, that guarantees the best return on invest
It was a really fun project where I used Markowitz Model theory for Portfolio optimization checkout the project

Machine learning algorithms (Python numpy)

In this section, I am gonna enumerate some of Machine learning/Algebra algorithms that I have implemented, that will be put progressively in a form of tutorial in the Machine learning section

  • Linear regression
  • Support vector machine (SVM)
  • Decision tree
  • Naïve bayes
  • Gaussian Mixture models
  • Expectation maximization algorithm (generalization of k means)
  • Dimentionality reduction : Principal component analysis (PCA)
  • Dimentionality reduction : Linear discriminant analysis (LDA)
  • Dimentionality reduction : Kernel Principal component analysis (kernel PCA)
  • Gradient Descent
  • Newton Descent
  • Factorization LU
  • Matrix Factorization for recommender systems

Movie sentiment analysis (SCALA SPARK Kafka)

In this project, we used a python API called from Scala, for sentiment analysis instead of re-implementing our own, since the aim was to distribute computation on several computers and to make them comunicate throught Kafka, checkout the code

Image processing

PhotoShop Java (swing)

In this project, I have implemented a PhotoShop like application with basic features, like filters, kernels, resize, rotations,etc...
For the UI part the used library was swing proposed by Java for interface design.

Scale invariant feature transform SIFT (image recognition) (Python)

Sift is a method used for image recognition, it is not a machine learning method, it's a method where you compute key-points descriptors for an image, which play a role of a signature to the image.
When you have another image that contain the same object, you have sensitively close key-points descriptors and by fixing a treshold distance you decide if the 2 image correspond or not, for more details check the wikipedia article that explain the method, and the source code

Video processing (parallel programming)(c++ open-cv TBB)

This project was more about using TBB library (for parallel programming) by applying several filters on a video stream in parallel.

Ray Tracing(Java)

Ray tracing is a technique to generate a 3d scene from a scene description, in this project I had to handle shades, lights and reflections , you can check out the code source here
Here is an example below for 3d rendered scenes where reflection, shade, light is handled :

Text mining

Search engine using hybrid trie structure (c++)

This project was about implementing a search engine under some memory and time execution constraints, so the reasonable technical choice was to implement this search engine with c++, using hybrid trie structures.
This technic consist in holding on memory a tree of a depth (n) where each node has as children all the alphabet letters of the words that we have to search in.
Having in memory this tree, each branch choosen constitute a prefix, since we subdivide the initial words into different location according to their prefix, for example for an alphabet {a,b} and a depth n = 2 we subdivide our initial words in 4 locations instead of one, so the search is going to bee faster, see the image below, and check code source here

Database + API (Web-micro servie)

API Web-micro service, (Flask/python/POSTGRESQL)

This project is an example of how we can answer a current use-case (described in the README of the github link ) of user registration, Managing properties, rights on properties... with python flask and POSTGRESQL

Application delay-tracking for supply service (VB.NET-ACESS) (VB.net + Access)

This is the application developed during my internship at OCP, described here I have taken some old excel sheet, i designed a database, used acess, and used VB.net to interface it with the database

Managing subway transportation like app (POSTGRESQL)

This was a project where I had to design a database in order to handle a public transportation like company, that has to to bill the costumers according to their use of the subway lines, i used Postgresql in this project


Game Connect Four (javascript/JQuerry)

This is the famous Game Connect Four , that i have made for my little brother, you can play it here

File explorer (Haskell)

This was a project where I had to implement a file explorer system using haskell programming language, the main competence acquired in this project was in learning functional programming paradigm, i liked it so much that i taken it a course in Scala coursera which was completed successfully

Game bouncing ball (Java Android)

This is a project is a ball game on android with 5 levels of difficulty, the purpose of the game is to touch a ball, that appears randomly in the screen for a short period of time, according to the level of difficulty, the ball appears for less time, and the number of chances to miss the balls accorded does down, your score is computed according to the level of difficulty and the number of time you touched the ball, check the source code here

Coding game (Thron game) (SCALA)

This a project where I have participated in a game competition, where I had to predict others players moves, under constraint of time execution and memory consumption, i used in this project the famous algorithm alpha beta used in chess I have managed to make it to the golden league, here is my coding game profile


  • Arabic : Mother tongue
  • French : Bilingual
  • English : Fluent (Toeic result : 890 (year 2017))
  • Spanish : A2 level

Other interests