A Software Engineer and Backend Developer.
I am Siavash Ganji and I study Master of Science in Computer Software Engineering at Sharif University of Technology. I’ve mostly worked professionally with Python but also a little bit with Java. In my spare time I enjoy escaping from escape rooms with my friends, taking photos and developing telegram bots.
|Databases||PostgreSQL, Redis, MySql, Mongodb|
|Frontend||HTML, CSS, jQuery, Angular|
|Framework & Libraries||Django, Celery, Pandas, NumPy, Keras, Hadoop|
|Other||Linux, Docker, Git, GitHub, Gitlab CI/CD|
Expected graduation date: January 2021
GPA: 18.66 out of 20 (4 out of 4)
Advisor: Prof. Abbas Heydarnoori
Thesis Title: Automated generation of commit messages in code repositories
- Semantic Web 20/20
- Software Testing 19.2/20
- Software Requirement 19/20
- Formal Specification of programs 18.8/20
- Software Evolution 18/20
Overal GPA: 15.88 out of 20 (3.06 out of 4)
Last 2 years GPA: 3.4 out of 4
Advisor: Prof. Ali Katanforoushi
Project Title: AI/NLP Bot Template for Gomanesh Contest
- Database Design and Analysis 20/20
- Design Compilers 20/20
- Datamining 19/20
- Linear Algebra 19/20
- Cryptography 18/20
- Artificial Intelligence 18.5/20
Topic Recommendation for Software Repositories using Multi-label Classification Algorithms (2020)
Abstract: Many platforms exploit collaborative tagging to provide their users with faster and more accurate results while searching or navigating. Tags can communicate different concepts such as the main features, technologies, functionality, and the goal of a software repository. Recently, GitHub has enabled users to annotate repositories with topic tags. It has also provided a set of featured topics, and their possible aliases, carefully curated with the help of the community. This creates the opportunity to use this initial seed of topics to automatically annotate all remaining repositories, by training models that recommend high-quality topic tags to developers.In this work, we study the application of multi-label classification techniques to predict software repositories’ topics. First, we augment GitHub’sfeatured topics. The core idea is to derive more information from projects’available documentation. Our data contains about 152K GitHub repositories and 228 featured topics. Then, we apply supervised models on repositories’textual information such as descriptions, README files, wiki pages, and filenames. We assess the performance of our approach both quantitatively and qualitatively. Our proposed model achieves [email protected] and LRAP of 0.890 and 0.805,respectively. Moreover, based on users’ assessment, our approach is highly capable of recommending correct and complete set of topics.
Keywords: Topic Tag Recommendation, Multi-label Classification, Recommender Systems, Mining Software Repositories, GitHub
Advanced Topics in Python (2020)
Python has become one of the most popular programming languages due to its simplicity and flexibility and is used in many fields, including data science, artificial intelligence, and web service development. Many developers do not know all the features of this language or do not use it properly. In this book, you will learn how to use Python language features correctly. This book examines different versions of Python, common mistakes, and idioms to turn you into a professional programmer. This book also describes functional programming, logging, testing, and package publishing as well.
Published by Dibagaran Tehran, Selected as the top university publisher in 28th Tehran International Book Fair.
Thesis: Automated Generation of Commit Messages in Code Repositories (2020)
Abstract: Software requirements change frequently hence during software evolution and maintenance, source code change are being committed in the software repositories. Reading the source code to understand the change is a very time consuming and tedious activity. Commit messages contain information about code change that let the developers know the nature of the change without having to read the source code. Unfortunately, developers neglect to write these messages due to the pressure of deadlines and lack of time. Commit messages can speed up the process of understanding the program for developers and also play an important role in writing software documents. Therefore, an automated method for generating commit messages is important. The former methods are divided into three categories: template-based, information retrieval, and deep learning. Deep learning is used nowadays to summarize code changes. One of the problems with previous methods is the lack of standard data. Also, if there is a lot of data, these methods are very time-consuming in training. Therefore, in this study, Java codes has been collected from the code repositories of the GitHub and has become a standard database during cleanup and tokenization. A pre-trained transformer model is used that can process and train large volumes of information in parallel. Afterward, commit messages are generated by finetuning the available data on the pre-trained model.
Keywords: Code Change Summarization, Commit Message, Deep Leaening, Software Evolution
AWARDS & HONORS
- Teaching Assistant, Data Science For Software Engineering (Graduate Course)
Instructor: Prof. Abbas Heydarnoori, Sharif University of Science and Technology (2020)
- Teaching Assistant, Database Design and Analysis (Undergraduate Course)
Instructor: Prof. Abbas Heydarnoori, Sharif University of Science and Technology (2019)
- Teaching Python Programming Language
Online class at cafetadris. – (2018)
- Teaching Assistant, Advanced Programming (Undergraduate Course)
Instructor: Prof. Adel Hosseini, Shahid Beheshty University – (2017)
Jomlex is an Iranian social networking service.
Technologies: Python, Django, Celery, Redis, Ubuntu, NginX, PostgreSQL, Android, Java Retrofit, Picasso
Developing Backend and Designing Database Schema for Sina Hospital Information System.
Technologies: Python, Django, Celery, Redis, Graphene, NginX, PostgreSQL, Docker, GraphQL
Design and Implementing Telegram bot games.
Technologies: Python, Redis, PostgreSQL, SQLAlchemy
Enjoy downloading movie/series subtitles easily. You can also filter subtitles by language and episode number.
It is a web-based platform connects automatically to Instagram despite of all restricted API, it provides a user-friendly dashboard to…
This is a light-weight and smooth HDFS (Hadoop File Manager System) Written in Python and Django. It has some essential…
Subfix is a telegram bot can fix encoding problem in subtitle file. It accepts Srt and Zip file.
Dlnew is a telegram bot that send you file in social media like Youtube, Instagram, Pinterest, Soundcloud, Twitter, Radio Javan…
World of Words 504 is a telegram bot that help you to learn new words in 504 essential word. it…
Siarobo is a multi plugins bot in telegram. It can chat, send youtube video, get music, get lyric, get subtitle,…
Nasser e din Shakh was my second experience in developing telegram game with escaperoom.ir group. It is funny with some…
Escape Room Team Leader
I like to manage a group of people to escape from escape rooms. I believe the escape room is a team-building activity and helps me to boost my skills in project management, communication, and problem-solving.
Running E-Commerce Business
Starting an online business is a challenging activity. I like to go through different business courses and try them in reality. Starting a business also allows me to interact more with people in areas other than software engineering.
Skincare and Hair
Brake Pads and
Spare Parts Shop
World of Words
Online Tool to
Learn English Words