Close

Elham Badri

Software Developer

Download Resume

About Me

Hey there! My name is Elham and I am an ambitious and driven second-year Computer Science student at the University of Toronto’s Co-op program with a passion for developing software and learning. In the past, I've worked on many different personal projects, school projects, and hackathons where I learned and improved my technical skills. In addition to this, I have gained valuable industry experience working as a Software Developer and Analyst.

Now I am looking to gain even more experience in the field of software development through internships/co-ops for Fall 2022. If you are looking for someone with great problem-solving skills who is motivated to learn new things quickly then please don't hesitate to reach out!

Experience & Leadership

Oracle

Software Developer

Collaborated on transforming a monolithic application to a microservices architecture in C#, developing new SQL stored procedures for data retrieval.
Executed the rewriting and migration of critical validation endpoints from C# to JavaScript, resulting in improved performance and maintainability, testing using Jest unit tests to ensure accuracy and reliability.
Diagnosed and resolved critical bugs, addressing timeout errors, increasing system efficiency by 15%.
Contributed significantly in the migration of applications to AWS, leveraging Kubernetes and Docker, and using OpenLens for debugging to minimize disruptions
here is something I did at the postion:

Splitting monolithic applications into microservices

microservices have many benefits over monolithic applications such as:

  • Improved scalability
  • Easier Maintenance
  • Easier to develop
This is due to the fact that each service is seperate from the rest making it easier to developers to increase the number of instances, fix bugs in each service, and not have to worry about too many dependencies when developing new features

                  
# Monolithic Python Flask Application

from flask import Flask, render_template

app = Flask(__name__)

# Routes for different functionalities
@app.route('/')
def home():
    return render_template('home.html')

@app.route('/products')
def products():
    return render_template('products.html')

@app.route('/orders')
def orders():
    return render_template('orders.html')

if __name__ == '__main__':
    app.run(debug=True)

=========================

# Catalog Microservice

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/products')
def products():
    # Product-related logic
    return render_template('products.html')

if __name__ == '__main__':
    app.run(debug=True, port=5001)


=========================

# Order Microservice

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/orders')
def orders():
    # Order-related logic
    return render_template('orders.html')

if __name__ == '__main__':
    app.run(debug=True, port=5002)

                  
                

In this code, a monolithic api handles both catalog and orders

By splitting up this into 2 seperate microservices, you can decouple the logic, gaining all the benefits of using microservices

Oracle

Software Developer

Developed new UI and backend features using Java, Typescript, Git, SQL, and Perforce in an agile environment, following object-oriented design principles and enhancing the user experience
Resolved issues and improved application stability, usability, and performance using Java and SQL
Improved search functionality using Java while communicating with project managers, resulting in a 60% faster search experience and improved user experience
Ensured stability and reliability of new features through comprehensive unit testing, achieving 100% test coverage
Demonstrated features and solutions to team members to identify and address technical challenges, sharing knowledge and expertise to drive project success here is something I did at the postion:

Improving Query Performance with Bind Variables

As a software developer, I am always looking for ways to improve the performance of my code. One technique I have found effective is the use of bind variables in SQL statements.

Bind variables are placeholders for values in a SQL statement. They are used to improve the performance of queries by allowing the database server to cache the execution plan for the statement.

For example, consider the following Java code that uses a Prepared Statement with a bind variable to retrieve rows from a table:

                  
                    // Create the prepared statement
                    String sql = "SELECT * FROM employees WHERE salary > ?";
                    pstmt = conn.prepareStatement(sql);
              
                    // Bind the value to the first bind variable
                    pstmt.setInt(1, 100);
              
                    // Execute the statement
                    rs = pstmt.executeQuery();
                  
                

In this code, a Prepared Statement object is created with a SELECT statement that includes a bind variable `?`. The value for the bind variable is then set using the `setInt` method, and the statement is executed using the `executeQuery` method.

By using bind variables in this way, I was able to improve the performance of my queries by allowing the database server to cache the execution plan for the statement. This helped to reduce the load on the database server and improve the overall performance of my application.

Sunnybrook Health and Sciences Centre

Software Developer and Analyst

Developed new features and fixed bugs for the CrowdEEG platform, (code) a tool which allows medical experts to annotate and analyze medical time series data with JavaScript, jQuery, Meteor and MongoDB. Refactored the amplitude adjustment feature entirely, implementing custom scaling, scaling a single channel to screen, scaling all channels to screen, and ultimately increasing speeds by 300%.

Created a menu where all these features are located, implementing options to move channels up and down, as well as reversing the polarity of channels. Refactored various annotation features and significantly improved upon them, including: change point annotations, sleep stage annotations, adding specific labels to these annotations, allowing channels displayed to be selected, and improving the crosshair alignment feautre.

Worked with an apache server to deploy changes

World Master Taekwondo Academy

Taekwondo Instructor

Instructed two to four classes each week teaching between 15 - 30 students per class. Used leadership and communication skills to promote discipline and respect

Georges Vanier Secondary School

Peer Tutoring Manager

Analyzed each tutor’s skills and matched them with a tutee which received positive feedback Communicated with over 30 tutors and tutees to create a schedule, allowing them to meet on their given days

Education

University of Toronto - Scarborough

Sept 2020 - Aug 2024

Honours Bachelor of Science in Computer Science - Software Engineering Stream

Projects

Health Schedule

Developed a clinic scheduler Android application using Java and Android Studio following a Scrum process. Created Doctor, User, Patient, Appointment classes and worked on first version of the dashboard.

Implemented first version of the Model-View-Presenter Model. The application stores users, patients, and appointments in a Firebase Realtime Database. The application has features such as the creating an account as a doctor or patient, viewing upcoming appointments, viewing past appointments, booking appointments, filtering and searching for specific doctors.

View Github Repo

SocialPhoto

Built and deployed a full stack photo sharing application, allowing users to create, edit, like, and delete posts. Used Node, React, Redux, Express, and MongoDB to develop application and deployed using Netlify and Heroku. Follows a MVC pattern.

View Project
View Github Repo

Vent

Built and deployed a full stack confession web application at Hack the North 2021. Used Node, React, Express, and MongoDB to develop application and deployed using Netlify and Heroku. Material UI is used for styled components.

View Project
View Github Repo

WikiMe

Implemented various functions in a flask backend to generate a quiz using Wikipedia’s API in 2 days at Hack the North 2020++. Utilized scikit-learn library and tf-idf to locate the top 10 most important words within a Wikipedia article to generate quiz and received positive feedback. Developed endpoints that could be easily used by the frontend team in under 36 hours.

View Project
View Github Repo

Sorting Visualizer

Utilized React to develop an application that visualizes different sorting algorithms. Implemented various sorting algorithms such as Bubble Sort, Insertion Sort and Selection Sort. User can select the number of bars to sort through a slider. While algorithms are running, header becomes disabled.

View Project
View Github Repo

TodoList

Built a todo-list application utilizing react hooks. Implemented features such as making a certain task high priority, adding and removing tasks. Can toggle the form by conditionally rendering it.

View Project
View Github Repo

Encryption Library

Developed an encryption library using python with a team utilizing object-oriented programming principles and strong problem-solving skills which received extremely positive feedback. Collaborated very effectively as a team finishing the project much earlier than expected.

View Github Repo

Skills