I am a recent Software Engineering graduate from École de Technologie Supérieure with a strong foundation in software development. During my internships at CAE and Schneider Electric, I gained hands-on experience in migrating software, containerization, and developing web applications. I am passionate about learning new technologies and eager to contribute my skills in a dynamic, growth-oriented environment. Fluent in both French and English, I am ready to tackle challenges in the tech industry and grow as a professional.
Schedule Generation for Boucherville Primary School
Website in React / Node.js / Next.js
Hnefatafl Game AI Development
Python / Minimax / Alpha-Beta Pruning / PyCharm
×
Gesture Interface for Interactive Application
This project aimed to develop an interactive gaming application utilizing a gesture-based interface that leverages image and pose recognition, fully integrated into Unity. The primary goal was to enable players to control in-game movements and interactions without the need for traditional peripherals like keyboards or mice.
Main Achievements:
Image Recognition System: We employed Google’s Teachable Machine to train models capable of recognizing various poses and gestures captured by the camera. These models were seamlessly integrated into Unity to manage player movements and trigger specific in-game actions.
Game Environment Creation in Unity: Leveraging Unity’s Roll-a-Ball tutorial, we developed a customized interactive game environment with enhanced features tailored to our project requirements.
Technologies Used:
This project was made possible by integrating cutting-edge technologies:
Teachable Machine by Google: Used to train machine learning models capable of recognizing human poses and gestures through a camera feed. This was pivotal in creating a responsive and interactive gaming experience.
Unity: A powerful game development platform that served as the backbone of this project, allowing us to build, simulate, and refine the interactive gaming environment with precision.
C# Programming Language: Utilized within Unity to script game logic, control player interactions, and manage the overall gameplay flow.
×
Disaster Defender - Mobile Application
Disaster Defender is a mobile application developed using Flutter to help users prepare for and effectively respond to natural disasters. The application integrates several essential features to provide a secure and informative user experience.
Main Features:
User Authentication: Utilizes Firebase to allow users to create an account and securely log in to the application. Firebase Authentication provides robust security and supports multiple authentication methods, including email/password and OAuth providers.
Disaster Management: The app allows users to view a list of recorded natural disasters, with details about each event. Data is stored and synchronized in real-time using Firebase Firestore, ensuring users have the most current information available.
Interactive Map: An integrated map enables users to visualize disasters and available shelters in their area. This feature leverages Google Maps API, providing users with accurate and real-time location data, along with navigation features.
Advanced Search: Users can perform specific searches to find information about particular disasters or safe locations. The search functionality is powered by Firebase's querying capabilities, allowing for efficient retrieval of relevant data.
User Management: The application differentiates between standard and premium users, with additional features available for the latter. User data and subscription details are managed using Firebase's real-time database and cloud functions.
Technologies Used:
Language: Dart Framework: Flutter
Backend: Firebase
Firebase Authentication: Manages user authentication securely.
Firebase Firestore: A scalable NoSQL database that stores disaster-related data, user profiles, and more.
Firebase Cloud Messaging (FCM): Sends real-time push notifications to keep users informed about disaster updates and emergency alerts.
Tool: Android Studio was used as the primary Integrated Development Environment (IDE) for developing the application. It provides extensive support for Flutter development, including emulators for testing across different devices and screen sizes.
Mapping: The interactive map feature is implemented using Google Maps API, allowing users to view disaster locations and shelters on an interactive map. The API provides geolocation services and real-time data, enhancing the app's functionality.
×
Schedule Generation for Boucherville Primary School
This project involves the development of a sophisticated web application designed to automate the creation of school schedules for Boucherville Primary School...
Main Features:
User Interface (UI): Developed using React and Next.js, the application features a clean and intuitive interface with a "Schedule Wizard" to guide users through the setup process.
Backend and Data Handling: The backend is built with Node.js, managing requests, schedule generation, and data storage in JSON format for seamless communication between the frontend and backend.
Advanced Algorithm for Schedule Generation: The system utilizes highly complex algorithms, including the Hungarian Algorithm for optimal teacher assignment and Graph Coloring techniques for effective conflict management, ensuring that the generated schedules are both efficient and robust.
Constraints Management: The application rigorously enforces constraints such as teacher availability, maximum working hours, and student subject load, ensuring a balanced and conflict-free schedule.
Multiple Schedule Options: The algorithm generates multiple schedules, allowing users to choose the best option based on their preferences and needs.
Technologies Used:
Frontend: React, Next.js
Backend: Node.js
Data Management: JSON, Redux, redux-persist for state management and data persistence.
Algorithms: Highly complex algorithms including the Hungarian Algorithm for optimal teacher assignment and Graph Coloring for conflict management.
Deployment: Hosted on Vercel with serverless functions for backend integration.
×
×
Remote-Controlled Ornithopter Conception
The Remote-Controlled Ornithopter project was a multidisciplinary engineering challenge undertaken during the preliminary year of my Bachelor of Engineering program. This project involved the design, development, and optimization of a biomimetic flying machine that mimics the flapping-wing flight of birds, known as an ornithopter. The project encompassed a broad range of engineering disciplines, including mechanical design, electronics, firmware development, and aerodynamics.
Main Achievements and Technological Integration:
Firmware Development: Embedded C was utilized to develop the firmware for the Printed Circuit Board (PCB) that controlled the ornithopter's various functions. The firmware was responsible for managing the flapping motion, stabilizing the flight, and communicating with the remote control.
Remote Control Programming: The remote control was programmed to use RF (Radio Frequency) communication, enabling real-time control of the ornithopter’s flight parameters. The communication protocol ensured a robust and low-latency connection, critical for the precise maneuvering required during flight.
Mechanical Design with SolidWorks: Utilized SolidWorks extensively to design and model each component of the ornithopter, ensuring all parts were lightweight yet durable enough to withstand the mechanical stresses of flapping flight. The design process involved iterative simulations to optimize the mechanical linkages and joints, which are crucial for replicating the natural wing movement.
PCB Design and Fabrication: Used Eagle PCB Design Software to create the schematic and layout for the ornithopter’s control and power supply boards. The PCB design included integrating multiple components such as the microcontroller, sensors, power regulation circuits, and motor drivers.
Aerodynamic Optimization: Conducted extensive research and simulations to study various aerodynamic wing profiles using tools like XFLR5, a software used for analyzing airfoil performance. The goal was to optimize the lift-to-drag ratio, enabling sustained and stable flight with minimal energy consumption.
Testing and Iteration: Multiple prototypes were developed and tested under different flight conditions. Data from these tests were used to refine the design, firmware, and control systems, culminating in a highly responsive and efficient flying machine.
Technologies Used:
Programming Languages: Embedded C, Python (for simulation and data analysis)
Fabrication Techniques: SMT (Surface-Mount Technology), 3D Printing (for prototyping components)
Communication Protocols: SPI, PWM, RF Communication
Project Outcome:
The final ornithopter was capable of stable flight with responsive control, showcasing the integration of advanced firmware, precise mechanical design, and optimized aerodynamics. The project not only provided valuable hands-on experience in various engineering domains but also resulted in a deep understanding of the challenges involved in developing a complex, multidisciplinary engineering system.
MegaMek - Reengineering Project
Java / Understand / CodeScene / Figma / SonarQube
×
MegaMek - Reengineering Project
The MegaMek reengineering project aimed to enhance and modernize the existing codebase of MegaMek, a turn-based strategy game that simulates battles between robots in the BattleTech universe. Our team focused on implementing a player ranking system while addressing the challenges posed by the complexity of the existing code, particularly the overhaul of the GameManager class.
Main Challenges and Solutions:
Complexity of the GameManager Class: We tackled the "God Class" problem by refactoring the GameManager into multiple specialized classes, reducing complexity by over 60%.
Player Ranking System: Introduced an Elo-based ranking system with a dynamic dashboard.
User Interface Enhancement: Improved the UI with a new dashboard for better player interaction.
Unit Testing: Added tests to ensure the new features did not disrupt existing functionality.
Technologies Used:
Language:Java
Java was the core programming language used in this project, providing a robust and object-oriented approach to refactoring the complex GameManager class. The language's versatility allowed us to modularize the code efficiently and maintain high performance throughout the game's extensive operations.
Tools:Understand, CodeScene, Figma, SonarQube
Understand: We used Understand to perform detailed static code analysis, which helped us identify code smells, such as the overly complex GameManager class, and other maintenance issues in the codebase.
CodeScene: This tool was instrumental in visualizing code complexity and identifying hotspots within the MegaMek project. It provided insights into how we could effectively reduce technical debt during the refactoring process.
Figma: Figma was used for designing the new user interface components, particularly the dynamic player ranking dashboard. Its collaborative features allowed our team to iterate on the UI/UX design efficiently.
SonarQube: SonarQube played a critical role in continuously inspecting the code quality throughout the reengineering process. We used it to enforce coding standards, monitor code duplication, and ensure that our refactored code met the highest quality benchmarks.
Version Control System:GitHub
GitHub was our version control platform, enabling us to manage the project's codebase effectively. It facilitated collaboration among team members, tracked changes, and allowed for seamless integration of new features while maintaining a stable codebase.
×
Hnefatafl Game
The Hnefatafl project involved developing an AI to play the ancient Scandinavian board game, Hnefatafl, which was once popular among the Vikings. The lab focused on implementing algorithms like Minimax and Alpha-Beta pruning, as well as developing heuristics to evaluate game positions. The final objective was to create a program capable of playing the game effectively, with a minimal interface to track the gameplay.
Lab Objectives:
Implement the Minimax and Alpha-Beta Algorithms: We developed these algorithms to enable the AI to make strategic decisions during the game, simulating multiple moves ahead to determine the best possible outcomes.
Develop Heuristics for Position Evaluation: Custom heuristics were created to assess the strength of various game positions, allowing the AI to make more informed decisions.
Explore and Implement Strategies to Improve Decision-Making Efficiency: We explored different optimization techniques to enhance the efficiency of the decision-making algorithm, ensuring the AI could make moves within a 5-second limit.
Functions Implemented:
Move Generator: We developed a function to generate all possible moves for a given board configuration, allowing the AI to consider all options before deciding on the best move.
Evaluation Function: This function evaluates the board's state to determine the quality of a configuration, helping the AI prioritize better positions.
Minimax and Alpha-Beta Algorithms: Implemented to determine the optimal move by simulating the game several moves ahead. The Alpha-Beta pruning significantly reduced the number of nodes evaluated, making the decision process faster.
Interface:
Server Interface: A graphical server interface was available, but we also implemented a console interface to track the game's progress and facilitate debugging.
Server Communication: The server sent messages containing the board configuration and the opponent's moves. Moves were specified as pairs of squares.
Technologies Used:
Language:Python
Python was the primary language used for developing the AI algorithms. Its flexibility and extensive libraries made it ideal for implementing complex algorithms like Minimax and Alpha-Beta pruning while maintaining clear and readable code.
The Minimax algorithm was essential for decision-making, enabling the AI to anticipate future moves. Alpha-Beta pruning was crucial for optimizing the search process, allowing the AI to evaluate moves more efficiently within the time constraints.
Heuristics Development:Custom Heuristics
We developed custom heuristics tailored to the unique dynamics of Hnefatafl, which allowed the AI to assess board positions and make strategic decisions that increased its chances of winning.
Development Environment:PyCharm
PyCharm was used as the Integrated Development Environment (IDE) for this project, offering powerful debugging tools and a user-friendly interface that streamlined the development and testing processes.
More exciting projects in
Python,
Machine Learning,
AI, and
Data Science are coming soon!
Skills
Back-end
ASP.NET
C#
Java
Python
C++
SQL
Flutter
Kotlin
REST API
MongoDB
Front-end
JavaScript
HTML
CSS
Bootstrap5
React.js
jQuery
Node.js
Express.js
Testing
JUnit
Jest
Selenium
Scripts and Tools
Bash
Shell
MakeFile
CMake
Data Formats
XML
JSON
CSV
UML
Work Methods
Agile
Scrum
Kanban
Deployment
CI/CD
Azure Dev-Ops
Version Control
GitHub
GitLab
BitBucket
Git
SourceTree
Cloud & Infrastructure
AWS
Microsoft Azure
Docker
Kubernetes
Jenkins
Development Tools
VSCode
IntelliJ
Oracle SQL Developer
Synapse
Testing & Monitoring
Postman
Grafana
Jenkins
CodeScene
SonarQube
X-Ray
Business Intelligence
PowerBI
Creative
Problem Solving
Fast Learner
Dynamic
Experience
2023
Software Developer Intern, CAE (4 Months)
Saint-Laurent, QC
Migrated a software suite from Windows to Ubuntu 20.04 LTS, increasing performance by 25%.
Implemented containerization with Docker to standardize development and production environments.
Configured Makefiles and CMake to ensure library compatibility in C++, Java, and Python.
Automated tests and deployments using Azure DevOps and Jenkins.
Validated and updated source code for various environments.
Tested solutions on simulators to ensure proper functionality.
2022
Software Developer Intern, Schneider Electric (4 Months)
Dollard-Des-Ormeaux, QC
Developed internal applications for electrical inventory management using C# and Java.
Created web interfaces in HTML, CSS, JavaScript, and React for internal tools.
Managed SQL databases with C# (LINQ) to update inventory and handle data.
Developed dashboards in PowerBI.
Conducted a test plan to ensure solution reliability.
2021
System Software Specialist Intern, CAE (8 Months)
Saint-Laurent, QC
Simulated onboard systems using Synapse and C++ for electrical, pneumatic, fire extinguishing, and air conditioning systems.
Deployed solutions in Azure DevOps for automated testing and production.
Collaborated with multidisciplinary teams to integrate simulation software into aircraft simulator projects.
Tested solutions in simulators to ensure proper functionality.
Managed configurations and versions using Git and SourceTree
Education
Bachelor of Engineering, Software Engineering
École De Technologie Supérieure (ETS), Montreal, QC | 2020 - 2024
At École de Technologie Supérieure (ÉTS), my Software Engineering degree provided me with a solid grounding in both the theoretical and practical aspects of engineering. The program was rigorous and industry-focused, which aligned perfectly with my career goals. I delved into software systems, multimedia, cybersecurity, and intelligent systems, learning to design and develop complex software solutions. The cooperative education model at ÉTS allowed me to apply my knowledge in real-world settings through internships, significantly enhancing my problem-solving skills and technical expertise. The accreditation from the Canadian Engineering Accreditation Board (CEAB) added a layer of credibility to my qualifications, assuring that my education met the highest national standards.
Cheminement Universitaire en Technologie
École De Technologie Supérieure (ETS), Montreal, QC | 2019 - 2020
I acquired foundational knowledge in technology and engineering that prepared me for the rigorous Bachelor of Engineering program. This preparatory year focused on key concepts in different engineering programs, such as Software, Electrical, Construction and Robotics, providing a solid base for my subsequent studies in software engineering.
Diploma of College Studies, Computer Science and Mathematics
Collège De Rosemont, Montreal, QC | 2015 - 2018
My journey at Collège De Rosemont in the Computer Science and Mathematics program was instrumental in shaping my technical foundation. The program offered a perfect blend of programming, algorithms, and mathematical modeling, which sparked my passion for software development. I gained hands-on experience in various programming languages and data structures, which laid the groundwork for my later studies in engineering. This program equipped me with the essential problem-solving skills and technical know-how that have been crucial in my academic and professional growth, preparing me either for further studies or to step directly into the tech industry.