Hadis Ghafouri

I'm a |

About

I have recently graduated with a bachelor's degree in Computer Engineering from Isfahan University of Technology , which is ranked within the top 4 universities in Iran according to the 2021 US news ranking.

I achieved a Rank of 554 out of 164,000 participants in the Iranian national university entrance exam(konkur) for bachelor's degree in the Mathematics field.

I achieved a Rank of 553 out of 165,000 participants in the Iranian national university entrance exam(konkur) for bachelor's degree in the English field.

The world of computer science is where I can spend hours building and exploring different areas without noticing the passing of time. I chose computer as my major because there's always something new to learn and explore.

I love to collaborate with other people, especially, I am passionate about team projects, and I enjoy creating applications, and websites and diving into different aspects of computer science.

I love to solve difficult problems. The most amazing and exciting moments in my life were the moments when I solved a problem and found its solution.

when I first became familiar with cloud computing and especially distributed systems, I started gaining more knowledge and I realized this is the area I like to explore more and become better at. As a result, I chose my bachelor project thesis in this area.

Currently, I am working on pod scheduling algorithms in the Kubernetes cluster.

I am fascinated by how distributed systems work, the complexity of these systems and the algorithms to solve difficult problems such as fault tolerance and consistency is so amazing to me.

I always try to become better in every aspect of my life. Growing and making progress as a person is my highest priority. By being a better person, I can help other people live a better life and have a positive impact on the world.

My favorite hobbies are exercising and cycling especially in nature.

A cup of coffee always makes me happier=)

Research Interests
  • Systems and Networking
  • Cloud Computing
  • Distributed Systems
  • Security & Privacy
  • Programming Languages & Compilers
  • Game Theory
  • Blockchains
  • Data Mining
  • Machine Learning

Resume

Research Experience

Implementation and evaluation of custom schedulers in the Kubernetes cluster

Octobor 2023- February 2024
  • In this project, I have worked on scheduling algorithms and the way resources are being provisioned on Kubernetes clusters.
  • Approximately, I have worked on this topic for about 4 months, from Octobor 2023 to February 2024, under the supervision of Dr. Zali.
  • I have gained hands-on experience working with different tools in DevOps and cloud computing areas. I have learned the Kubernetes concepts and architecture, which is the most popular container orchestration platform. I have also learned Docker and microservice concepts.
  • In Kubernetes, the smallest computational unit is Pod. Kubernetes has a worker-slave architecture. So it has one master and several workers. When users or system admins want to deploy an application inside the cluster, there is a process which is called scheduling, that begins to manage the process of deploying these pods on the best nodes it can find.
  • This process is handled by the kube-scheduler component in the master node. We can deploy our scheduler to Kubernetes and change the configurations and algorithms of how this default scheduler works on Kubernetes.
  • As a result, in my project, I created a new scheduler plugin that scores nodes based on their current network traffic and available memory.
  • So, the more the network traffic is on a node, the lower its score will be and the higher the available memory, the higher the node’s score will be. I have implemented and evaluated my solution on different Kubernetes clusters.
  • I used two popular ways of creating my clusters. The first one is using the Vagrant file which is an infrastructure as a code solution. It means we write all the configurations and requirements of our desired cluster, like having 3GB of RAM and 2 virtual CPUs, and then we can create our cluster with virtual machines.
  • The second way is through a kind cluster. Kind is a lightweight cluster that uses containers as nodes instead of creating actual virtual machines.
  • I evaluated my new schedulers on these two clusters and tested two different scenarios.
  • When we have a server-based application that generates lots of traffic, the default scheduler in Kubernetes, which does not consider network metrics, deploys this server on a node that might have the highest network traffic on it. Whereas, my scheduler will choose the node with the lowest network traffic.
  • The results for the second scheduler which scores nodes based on their available memory were also interesting. The default scheduler in Kubernetes only considers the resource request written in the specification of pods and doesn’t consider the real-time available memory of nodes. My custom scheduler could collect the real-time available memory and score nodes based on these data.
  • This situation matters especially when we are providing services and servers to our users and the accessibility and availability of our app to the end-users have a high priority to use.
  • Furthermore, I am working on my scheduler to consider more metrics in addition to network and memory metrics. In more detail, I want to create an optimization problem for my scheduler which chooses the best metric in a combination of metrics.
  • Poster Link

Education

Studying Computer Engineering

2019 - 2024

GPA: 17.86/20, 3.71/4 (Last 4 semesters: 18.35/20 , 3.95/4)

Isfahan University of Technology , Isfahan, Iran

Teacher Assistant Of Cloud Computing

Spring 2024

Isfahan University of Technology, Isfahan, Iran

Instructor: Dr. Zeinab Zali

website

Email

  • Designed assignment questions in Kubernetes area

Teacher Assistant Of Software Testing

Spring 2024

Isfahan University of Technology, Isfahan, Iran

Instructor: Dr. Shirin Baghoolizadeh

website

Email

Teacher Assistant Of Cryptography

Fall 2023
Fall 2024

Isfahan University of Technology, Isfahan, Iran

Instructor: Dr. Mohammad Dakhilalian

website

Email

Teacher Assistant Of Operating Systems

Fall 2023

Isfahan University of Technology, Isfahan, Iran

Instructor: Dr. Zeinab Zali

website

Email

Teacher Assistant Of Data Structures

Spring 2023
Fall 2024

Isfahan University of Technology, Isfahan, Iran

Instructor: Dr. Abdolreza Mirzaei

website

Email

  • Designed and developed challenging assignment questions
  • Created course materials including video and lecture notes on the subject of object-oriented programming

Teacher Assistant Of Compiler

Spring 2023

Isfahan University of Technology, Isfahan, Iran

Instructor: Dr. Hossein Falsafain

website

Email

Professional Experience

Instructor Lab of C Programming Workshop

Fall 2020

Isfahan University of Technology, Isfahan, Iran

Supervisor: Dr. Sayed Jalal Zahabi

website

Email

  • Conducted weekly training sessions to teach students the fundamentals of C programming Language
  • Created course materials, including lecture notes, assignments, and quizzes, to help students learn the concepts effectively

Skills

Programming Languages
cpp iconGo
cpp iconC
cpp iconC++
cpp iconPython
cpp iconSQL
cpp iconJavascript
cpp iconTypescript
cpp iconHTML
cpp iconCSS
cpp iconSASS
cpp iconLATEX
Frameworks & Tools
KubernetesKubernetes
DockerDocker
Vmware WorkstationVmware Workstation
AngularAngular
GitGit
LinuxLinux
CodeVisionAVRCodeVisionAVR
KarmaKarma
JasmineJasmine
JestJest
Frameworks & Tools
ProteusProteus
CodeVisionAVRCodeVisionAVR
SQL ServerSQL Server
PostgreSQLPostgreSQL
Cisco Packet TracerCisco Packet Tracer
WiresharkWireshark
Adobe XDAdobe XD
JupyterJupyter
VSCodeVSCode
VimVim
Libraries
PandasPandas
MatplotlibMatplotlib
NumPyNumPy
ReactJsReactJs
NG-ZORRONG-ZORRO
BootstrapBootstrap
Web Development
Responsive DesignResponsive Design
APIsAPIs
Clean CodeClean Code
Unit TestingUnit Testing
Soft Skills
CommunicationCommunication
TeachingTeaching
CollaborationCollaboration
EnthusiasmEnthusiasm
CreativityCreativity
Problem SolvingProblem Solving
Languages
Native,PersianNative : Persian
Fluent,EnglishFluent : English
TOEFL iBT(2023),95TOEFL iBT(2023) : 95
Reading,23Reading : 23
Listening,28Listening : 28
Speaking,20Speaking : 20
Writing,24Writing : 24

Projects

  • All
  • Academic
  • Front-End
  • Full-Stack
Go Rest API
Card image cap
Mano Simulator
Card image cap
Course: Computer Architecture
Xlang Compiler
Card image cap
Course: Compiler Design
A* And BFS Search Algorithms
Card image cap
Course: Artificial Intelligence
Tic Tac Toe with MINIMAX Algorithm
Card image cap
Course: Artificial Intelligence
DPLL Algorithm Implementation
Card image cap
Course: Artificial Intelligence
FTP Client & Server Python Socket Programming
Card image cap
Course: Computer Networks1
Network Performance Analysis with Python
Card image cap
Course: Computer Networks1
Network Topologies in Mininet Simulator
Card image cap
Course: Computer Networks2
Analyze Openflow With Mininet
Card image cap
Course: Computer Networks2
C Linux Terminal
Card image cap
Course: Basic Programming
Forecasting Solar Panel Energy Using Machine Learning
Card image cap
Course: Data Mining
Hotel SQL Database
Card image cap
Course: Database Lab
Microprocessor Project
Card image cap
Course: Microprocessor
Xv6 Operating System
Card image cap
Course: Operating System
Bank Simulation with Linux Kernel module
Card image cap
Course: Operating System
Network Simulation In Packet Tracer
Card image cap
Course: Network Lab
IPC mechanisms in Linux
Card image cap
Course: Operating System
Art Gallery
Card image cap
Coffee Website
Card image cap
React Portfolio
Card image cap
Linux Workshop
Card image cap
Music Player
Card image cap
Monsters Rolodex
Card image cap
Photographer Portfolio
Card image cap
Black And White Portfolio
Card image cap
Breakout Game
Card image cap
Gericht Resturant
Card image cap
Ecommerce Shop
Card image cap

Certificates

Cloud Computing Concepts, Part 1
Instructor: University of Illinois at Urbana-Champaign
Cloud Computing Concepts, Part 2
Instructor: University of Illinois at Urbana-Champaign
Cloud Computing Applications, Part 1
Instructor: University of Illinois at Urbana-Champaign
Cloud Computing Applications, Part 2
Instructor: University of Illinois at Urbana-Champaign
Introduction to Docker, Kubernetes, OpenShift
Instructor: IBM company
Machine Learning Specialization
Instructor: Andrew Ng
AI For Everyone
Instructor: Andrew Ng