Imad Dodin

Software Engineering Student at McGill University
:computer: Software Engineer :coffee: Coffee Afficinado :violin: Violinist

  • summary
  • extracurriculars
  • projects
  • volunteering
  • music

"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.

Biography

:wave: 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!

:computer: 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.

:heart_eyes: I am most passionate about my extracurricular involvement (including social work), experience as a teaching assistant and personal projects so please check those out!

:trophy: 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)

:earth_americas: 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).

:video_game: 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!

:rotating_light: 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.
:rainbow: Ca va bien aller. :rainbow:

Timeline

This website acts as a brief portfolio and blog. Please listen to me ramble about:

  • Extracurriculars (The highlight of my time at McGill and the thing I am most passionate about!)
  • Projects (Research, Personal and Course) which I had fun with - some are ommitted or short due to NDAs and the like.
  • My Thoughts (on Internships, Software Engineering and various Global Affairs).
  • Coffee! (I keep track of my various recipes after hours of experimentation and lots of caffeine trembles!)

In case you're wondering, this site

Competitive Programming at McGill

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!

2019-2020

  • Co-President / Coach

    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 led, with my Co-President, a team of 15 Executives with the goal of growing Competitive Programming at McGill - we experienced the fastest growth during a single year of any Computer Science club, to our knowledge.
    • We held NP-Compete again, this time we had over 200 contestants and took over the whole of the Lorne M. Trottier Building at McGill! Here are some fun pictures from that event!
    • We started building WISP, an online platform to help introduce students to Competitive Programming and gamify / track their progression. (More under projects tab.)
    • We hosted a training program throughout the Summer to introduce students Competitive Programming - you can see the blog for that here!
    • We held McGill Tech Games, hosting around 120 students in a CS-Games-esque olympics of practical Software Engineering challenges. Photos here. This involved a hefty amount of coding, which you can find on our GitHub Page
    • We collaborated with the McGill School of Computer Science to help host the first ever ICPC Preliminaries in Quebec, right at home at McGill!
    • Our teams won a whole bunch of awards! I am one proud coach!:
      • ICPC Preliminaries @ McGill University - 1st Place. (Standings)
      • ICPC Regionals @ Rochester Institute of Technology - 3rd Place. (Standings)
      • ICPC North American Championships @ Georgia Tech - 8th Place. (Standings)
      • ICPC World Finals @ Moscow Institute of Physics and Technology (Qualified, Postponed due to COVID-19).
      • IEEEXtreme - 1st Place Canada (We are, for some reason missing from the leaderboards and are waiting for IEEE to rectify the situation).
      • Multiple Google CodeJam Round 2 Qualifications.

2018-2019

  • VP Competitions / Training Lead

    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:

    • Organized and presented training workshops (like this or this), covering various concepts in data strutures and algorithms, helping students write code for some tough concepts! A subset of these can be found on our training repository.
    • Held a review session for COMP 251: Data Structures and Algorithms. (Video below!)
    • Held an Introduction to Git Workshop, for fun! (Video is second on the playlist below!)
    • Helped organize NP-Compete (pun definitely intended), McGill's internal programming competition. We had around 45 participants in this year! You can see photos on our facebook page!
    • Won first place at Google Tech Challenge Montreal! Kudos to Google for hosting such a fun event and for the awesome backpacks which I use to this day! Here are some photos of our Angry Birds themed team!
    • Competed in in ICPC, the International Collegiate Programming Contest. Here are some more photos of our sleep deprived states!

Course Assistance

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.

2018-2020

  • ECSE 321: Introduction to Software Engineering

    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:

    • Spring Boot
    • PostgreSQL*
    • VueJS
    • Android (Java)
    • Gradle
    • Travis CI*
    • Heroku*

    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

2019-2020

  • ECSE 223: Model Based Programming

    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!

Helpdesk Mentoring

2018-2020

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

McGill Robotics

2017-2018

  • Software Developer - Autonomous Drone Project

    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:

    • Improving Simulation for Martlet, our autonomous drone - I wrote various ROS Service scripts to simulate targets that were to be detected as part of the AUV-SUAS competition which we took part in. Some of my work is visible in our teaser here.
    • Helping maintain our build farms on Digital Ocean.

Web Projects

  • WISP Online (In Progress)

    Follow @compete-mcgill

    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.

    WISP Figma live | code | editorial (coming soon)
  • McGill Tech Games

    Follow @compete-mcgill

    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).

    Backend Challenge UI Screenshot
  • Treeple Tree Management System

    Star

    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)

    TreePLE Screenshot live | code | editorial (coming soon)
  • Canary

    discord server invite Star

    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.

    Canary (Marty) Screenshot live | code | editorial (coming soon)
  • Compete McGill Summer Training Blog

    Star

    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

    Summer Blog live | code

Research Projects

  • Automated Test Generation Techniques for Systems Engineering Tools

    Star

    As 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 | poster
  • Cloud Computing in Smart Cities: Smart Kiosks as Edge Stations for IoT Devices

    This 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.

    Arduino Device

    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

    poster

Course Projects

  • Release Engineering (Skrape.It)

    As 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 | report
  • Computer Vision

    Star

    This 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

    code
  • Network Design CLI

    Star

    This 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

    code


McGill Syrian Students' Association

I 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.

2019-2020

  • VP Finance

    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:

    • SSA Hiking Trip
    • Kabab Sale to fundraise for the Syrian Kids Foundation
    • SSA Ski Trip
    • Bake Sale to fundraise for the Syrian Kids Foundation
    • A fundraising ball in collaboration with Fondation Amal
    • Various talks by members of the Syrian community in Montreal on themes of civil liberties and reconstruction.

2018-2019

  • VP Media

    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:

    • Kabab Sale to fundraise for the Syrian Kids Foundation
    • Bake Sale to fundraise for the Syrian Kids Foundation
    • SSA Ski Trip
    • Various talks by members of the Syrian community in Montreal on the theme of reconstruction.

Books Not Bombs McGill

2017-2018

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:

  • Created campaign graphics for our Facebook Page and Promotional material.
  • Helped organize campaigning efforts (Organizing listserv, campus tabling etc.)
  • Helped present a motion in support of our scholarship to the Students Society of McGill University General Assembly - All Yays, One Abstained.

Badil Center for Palestinian Human Rights

2014

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.

Princess Diana Award

2013-2016

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:

  • Tutored children in Mathematics, Chemistry, Physics and French to get them caught up to speed in returning to school.
  • Acted as an older brother to children, helping them with struggles in school (primarily in dealing with bullying and anxiety, in part based on my own past experiences).
  • Translated between English, Arabic and French, assisting families in communication with their children's schools, their local communities and in business opportunities.
  • Helped families set up Whatsapp stores to supplement their income by selling (delicious) food, arts and crafts and services. (Appropriately filing income with local and federal governments).
  • Organized multiple bake sales, food sales, clothing/furniture drives and events to help settle families into their new environments comfortably

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!