Software Engineering Student at McGill University
Software Engineer Coffee Afficinado Violinist
"One hand alone does not clap."
"ايد واحدة ما تسقفش"
Arabic Proverb
Any single effort of mine is a result of the support,
kidness and belief of the countless friends and family around me -
to them, I give my profuse gratitude.
Hey there! My name is Imad, I'm a Software Engineer at Microsoft. I currently work on Microsoft Teams where I primarily do Backend and Infra work. Still learning a bunch!
I decided to commit to a career in tech to help empower others and hope that, in the future, I achieve just that goal. The particular fields which I'm interested in are Backend and Infrastructure Development, I am also extremely passionate about Model-Driven Engineering, Software Language Engineering and Distributed Systems / Cloud.
I am most passionate about my extracurricular involvement (including social work), experience as a teaching assistant and personal projects so please check those out!
I was Coach for McGill University's 2020 World Finalist ICPC Team. (Disclaimer: this achievement was all the team's - I was lucky to be along for the ride)
Prior to my time at McGill University, I lived in Geneva, Switzerland, New York City, and Halifax, Nova Scotia. While in Switzerland I spent much of my time helping acclimate Syrian refugees to life in Europe (tutoring children in Maths/Physics/Chemistry, translating and even helping some set up online businesses).
I was also a highly ranked player and organizer of the first ever Swiss National Tournament on the popular rhythm game, osu!. Sadly, my rank has decayed quite a bit and I don't play much anymore, but sometimes I log in to catch up with friends!
Since the start of the COVID-19 Pandemic, I've been building Shopify Stores and Admin Panels free of charge
for local businesses looking to transition to online platforms during this rough time. Please email me at imad@dodin.ca
if you are a local business that have been negatively impacted by the COVID-19 Pandemic.
Ca va bien aller.
This website acts as a brief portfolio and blog. Please listen to me ramble about:
In case you're wondering, this site
What is Competitive Programming?
Traditionally, Competitive Programming can be descrbed as a mind
sport where in participants attempt to program a solution to a
problem with provided specifications, but I much prefer to describe
it as Leetcode on Crack - i.e. solving similar types of
problems as LeetCode but with a lot more (complex) algorithms and
more twists!
I am proud to be the coach for our
2020 World Finalist Team
(for the first time in McGill history) in
ICPC, the most "prestigious"
Competitive Programming Contest!
Compete McGill is also responsible for training representatives to
CS Games - what I like to describe
as an Olympics of Practical CS / Software Engieering Challenges!
A special shoutout goes to Andre Kaba for starting Competitive Programming efforts at McGill. Andre started the club by giving random workshops by himself around campus - his love for Competitive Programming inspired my and this massive club would not be possible without him.
It's experiences like the one I had at Compete McGill which keep me passionate about tech. Being reminded that this field surrounds me with extremely friendly, bright and goofy people which I can call my friends is one of the things I am extremely thankful for in my life!
I was elected to serve as Co-President and Coach for Competitive Programming at McGill during the 2019-2020 Academic Year! This might just be the best extra-curricular experience of my life. Here's what me and my team did:
I helped found and grow Competitive Programming at McGill, McGill University's first ever Competitive Programming Club to try and build a community of people who loved Competitive Programming like I did! I did various things:
I am one of few undergraduate students to assist in the offering of courses in the ECSE department, namely ECSE 223: Model Based Programming and ECSE 321: Introduction to Software Engineering. I have mentored, graded and developed for 5 course offerings, comprising over 100 applications and 400 students.
The two main objectives of this course are to teach students how to develop a real Full Stack Application with relevant technologies, and help them improve their design thinking (through modelling)!
When I took the course, Our project took Second Place in the class and I was subsequently invited to help in offering the course ever since. I have, to date, graded over 60 Web Applications on design, functionality and development practices and am proud to have been involved in the improvement of the course to use more modern technologies.
I am extremely proud of my efforts as part of the course team, as I see students grow and lots of them leveraging their projects to help them get their first internships!
Here is a brief overview of technologies we teach as part of this course, those with an asterisk (*) were improvements since becoming part of the teaching staff:
This course comprised two things I love profoundly: Modelling (the Software one, not the fashion one!) and Web Development. It is where my passion for Backend and Infrastructure development started and I am really grateful to have been afforded the opportunity to be involved in its offering
This course aims to introduce students the concept of modelling (something I love!) as well as have them develop their first Java application (a board game, since Fall 2018).
In the 2019-2020 academic year, I was invited to also assist in the offering of this course due to my efforts in Model-Based Software Engineering. I mentored and graded over 40 groups and their applications, providing support and evaluating them on design, development practices and teamwork.
Since this is the first time many students are able to use what they learn to build a real product, I am lucky to see the glee in lots of students when they are finally finished with their work! I've loved every minute of mentoring teams and often spent time outside of my office hours to make sure that all of them ended the course with something they could be proud of!
I was a mentor for McGill's CSUS Helpdesk for two years, a program wherein experienced undergraduate students provide support to younger students on a variety of Computer Science courses. I had 3 hours of shifts per week.
Here is a brief summary of what I did as a Helpdesk Mentor
In the 2017-2018 academic year, I was a Software Developer on McGill Robotics' Autonomous Drone Project. This was my first experience working on a big project as a team, and I'm proud of my work which included:
WISP Online is an online platform to track students' progress in Competitive Programming and provide gamification to facilitate the introduction of students to Competitive Programming. We hope to provide our own online judge in the near future
WISP is built with a Microservice Oriented Architecture on ExpressJS, with a VueJS frontend.
Technologies: Kubernetes - ExpressJS - MongoDB - VueJS.
live | code | editorial (coming soon)I oversaw the development of various platforms for McGill Tech Games, an event I hosted as President of Competitive Programming at McGill.
This experience was pretty interesting for me as, although I developed and put some effort into deployment, it was the first time I acted as a Project Manager for a product.
The work we did for this event is split across multiple repositories which you can find below (please note that repositories are not refined as we were in quite a rush to finish!):
Technologies: GCP - ExpressJS - MongoDB - VueJS - Docker - (OCaml).
Treeple is my first ever Web Project, it was developed as part of the ECSE 321 course at McGill University. It won Second Place out of over 20 groups during the semester and I was subsequently offered to join the teaching staff for the course because of how much I seemingly loved the course material, as well as working with and guiding my teammates!
Treeple is a system to manage trees and view sustainability information in the Greater Montreal Area. It has a monolithic Spring Boot Backend, a VueJS frontend and an Android Frontend!
Feel free to test out the application by logging in with username and password admin! Also checkout my guide on using the application here.
Technologies: Spring Boot - VueJS - Android (Java)
live | code | editorial (coming soon)I develop and help maintain Canary, the chat bot for McGill University's student run discord server, serving over 1000 members.
Canary provides members with the ability to search course databases, exam schedules and other academic information directly from chat, notifies members about weather and food recall warnings and allows members to save quotes by eachother to share later.
Canary also provides moderators with various utilities to moderate the chat: setting user roles and banning / silencing users.
I am an active member of the Discord server and was previously a moderator, using Canary (which we have dubbed Marty, for our adorable mascot) almost daily! Feel free to join the server to see Canary in action!
Technologies: Python (DiscordPy) - Docker.
live | code | editorial (coming soon)I built a blog for the Summer Training I held for Competitive Programming at McGill in the Summer of 2019. It is very simple blog built with Jekyll - which I highly suggest if you're looking to build a simple blog. (The blog you're reading this on is built with Jekyll!)
Content Management is fairly straightforward with Jekyll, you just need to add a Markdown file to the appropriate folder on the repository. Hosting is also fairly simple as GitHub Pages has native support for hosting Jekyll source files! (Feel free to see how I set up domains on the repository below!)
Technologies: Jekyll - HTML - CSS - Javascript
live | codeAs you can probably tell by the lengthy, descriptive title, this is a research project that I completed as part of my Capstone project. The objective of this project was to leverage the VIATRA Model Generator to improve the automation of tests for Systems Engineering tools.
This project was a really great experience since I really love modelling and I had a chance to play around with models of a whole bunch of different languages as part of the project. We demonstrated, as a proof of concept, the use of the VIATRA Model Generator to help automate testing on Yakindu Statechart Tools.
While I often hear complaints about how finnicky research is, and I got a taste of this during this project, I actually enjoyed that part of the process quite a bit - as it made the end-product quite a bit more enjoyable for me.
Technologies: Eclipse Modelling Framework - Java (Xtend) - VIATRA - Constraint Programming
code | report | posterThis was my project as a 2018 SURE Intern at McGill University. I was selected as a Cloud and IoT Research Intern based on my academic performance and worked on developing a Proof of Concept Edge Computing station within the context of IoT Smart Cities.
As part of this project, I developed my own WebRTC Implementation to develop a Emergency Response Touch Kiosk, establishing connections between the Kiosk and emergency personnel (e.g. police, paramedics etc.)
I implemented basic facial detection, and retrieved data from various IoT Sensors performing pre-processing and filtering before forwarding data to Cloud Services for further computation. I also demonstrated developed various example hooks that could be abstracted for use by any IoT Device.
I developed various simple Arduino devices to simulate IoT Devices in a Smart City - below is an image of one such device for sensing light.
Unfortunately, due to agreements with the Broadband Communications Lab and their sponsors, I am unable to share my work here, but can provide my final poster presentation for this project.
Technologies: WebRTC - HTML - CSS - Python (Tornado) - WebSockets
posterAs part of a Release Engineering course, I improved the Release pipeline for Skrape.It, an open-source package that facilitates web-scraping on Kotlin. As part of this,
I experimented with migrating the project build from Maven to Gradle, to see the effects on build-time. I similarly experimented with migrating CI from Travis to GitHub to see whether there was a noticeable impact on the time to release.
We found that Gradle did not have a significant impact on build time for this project, but demonstrated the importance of caching relevant build files in a release pipeline. We also interestingly note a significant decrease in time-to-release with GitHub Actions vs Travis CI
Technologies: Maven - Gradle - Ruby - Kotlin
code | reportThis is a collection of implementations of various Computer Vision concepts. Here you'll find some Jupyter Notebooks on Image Pre-Processing, Stitching (SIFT, SURF, RANSAC), Stereovision, Motion Detection, Facial Recognition and Image Classification.
We took 4th place in our class' Kaggle Competition on using (non Deep Learning) classification methods to classify flowers from the FLOWERS17 Dataset by the University of Oxford
Technologies: Python - Numpy - OpenCV - sk-learn - sk-image
codeThis is a CLI I built for the final project for our course on Fault Tolerant Computing. It is a Python CLI that takes, as input, a list of network nodes and connections with various costs / reliabilities and outputs the optimal connected network design.
This project was not necessarily the most difficutl I've had to do at my time at McGill, but I thoroughly enjoyed the course on Fault Tolerance and wanted to include it here!
Technologies: Python
codeI often get asked why I'm part of the Syrian Students' Association as someone who is not Syrian. The answer to this is multi-faceted: the primary reason is that SSA's work is primarily humanitarian, fundraising money and providing events to support to Syrian community in Montreal and abroad. This was pretty in line with previous efforts I made in high school, which I talk more about below. The Syrian situation is also simply close to my heart as a Palestinian, but also due to my mother, who studied in Syria and whose parents found refuge in Syria for a time after their expulsion from their homes in 1948.
In the 2018-2019 academic year, I acted as VP Finance for SSA. I managed around 5000 dollars in funds to organize fundraising and cultural events to preserve the Syrian Identity. Here's a selection of our events:
In the 2018-2019 academic year, I acted as VP Media for SSA. I made quite a few graphics that you can find on my Portfoliobox page. I'm not the greatest graphic designer, but it was a position that we could not find anyone else to fill, so I was more than happy to step in. We did several events during the 2018-2019 Academic Year including:
In my second year at McGill, I helped with the campagign for the McGill Chapter of Books Not Bombs. I helped organize a campaign to establish a scholarship at McGill University for students displaced by the conflict in Syria. I did some of the following things:
I spent some time as an intern for the BADIL Resource Center for Palestinian Human Rights when I was in my second year of high school. My tasks were primarily administrative initially, but eventually evolved to include documentation during various events: I was lucky enough to be given the opportunity to attend the Office for the High Commisioner for Human Rights' (OHCHR) 26th Regular Session. I attended various talks at the session and gave commentary on some of the struggles associated with acclimating children with post-traumatic stress, based some of my own efforts volunteering with Syrian refugee children.
Those who knew me when I lived in Switzerland, know that I spent much of my free time working with Syrian refugees to the "Suisse-Romande" area. I worked with families to help them acclimate themselves to life in Switzerland.
Here are some of my efforts in this regard:
My efforts in this regard (and in assisting in my local school community) awarded me with the Princess Diana Award for Community Engagement.
Music is a huge part of my life - when I'm not playing my Violin, you'll find me listening to a whole bunch of random stuff. As someone who has gotten a lot of use out of his noise cancelling headphones, please find a selection of playlists / albums that show a bit of my taste, you'll find that they have some range so if one thing isn't to your taste, don't discount the rest!