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|
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
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 are changing continuously and hence during software evolution and maintenance, source codes changes are being committed in the software repositories. Reading source codes to understand the changes is a very time consuming and tedious activity. Commit messages contain information about code changes that let developers be aware of the essence of the changes without reading the source codes. Unfortunately, due to the pressure of deadlines and lack of time, developers neglect to write these messages. Commit messages can speed up the process of software understanding for developers and also play an important role in software documentation. Therefore, an automated method for generating commit messages is important. The previous methods are divided into three categories: template-based, information retrieval, and deep learning. Nowadays, deep learning is used to summarize code changes. One of the problems with previous methods is the lack of standard dataset. Also, if there is a lot of data, these methods would be very time-consuming in training. Therefore, in this study, Java codes have been collected from the code repositories of the GitHub and these have become a standard database after being clean and tokenized. A pre-trained transformer model is used in order to process and train a large volume of information in parallel. Afterward, commit messages are generated by fine-tuning data on the pre-trained model. Finally, the proposed method was examined from a quantitative and qualitative perspective and the results show a 42.2 BLEU score, which has grown significantly compared to previous works. In 75% of the cases, software developers also preferred the messages generated by this method to previous methods.
Keywords: Code Change Summarization, Commit Message, Deep Learning, 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