Projects
Table of Contents
Grapevine Leaves Classification
Project Date: July 2022
Data Mining Course's Project
This project is the final assignment for a data mining course. The primary objective is to classify grapevine leaves into five distinct classes using various deep learning models, including MobileNetV2, ResNet50, EfficientNetB3, and InceptionNetV3. The project also explores the impact of autoencoders on classification accuracy and employs 10-fold cross-validation as a performance metric.
Libraries Used: tensorflow, keras, PIL, pandas, numpy, sklearn
Histopathology Image Classification
Project Date: May 2023
Image Processing Course's project
In this project, I explored various deep learning models for image classification, specifically in the context of histopathology image analysis. I trained and evaluated these models on a custom dataset and compared the performance of different model architectures. The models include the homework model, an updated model with modified convolutional layers, and a pre-trained ResNet-50 model fine-tuned for our classification task.
Libraries Used: Python, TensorFlow, Keras, OpenCV, Pandas, NumPy, Matplotlib, Scikit-Learn, PIL, Seaborn
Finding Vowels
Project Date: December 2021
Information Retrieval Course's Mini-Project
In this project, I embark on a journey to enhance Persian language understanding through state-of-the-art machine learning. My core objective revolves around accurately labeling each word in Persian text with its corresponding part of speech, a fundamental task in natural language processing. By leveraging a meticulously curated dataset of Persian texts, I employ a range of machine learning models, including Gaussian Naive Bayes, Multinomial Naive Bayes, Decision Trees, Perceptron, and Logistic Regression, to decode the grammatical structure of Persian sentences. My project's success hinges on comprehensive feature engineering, innovative feature selection techniques, and meticulous model evaluation, ensuring that our POS tagging model meets the highest standards of accuracy and precision.
Libraries Used: Pandas, Numpy, Scikit-learn, PersianStemmer
Parkinson's Disease Classification
Project Date: June 2022
Data Mining Course's Mini-Project
Parkinson's disease is a debilitating neurodegenerative disorder that profoundly affects a person's ability to move and leads to symptoms like tremors, slowness of movement, and muscle rigidity. Timely diagnosis is crucial for effective treatment and management, and this project seeks to contribute to that goal by employing cutting-edge data analysis techniques. I embark on an exciting exploration of various machine learning algorithms, each with its unique strengths and characteristics. These include Decision Trees, K-Nearest Neighbors, Support Vector Machines, and Random Forests. Through rigorous experimentation and cross-validation, I fine-tune these algorithms to achieve optimal performance, ensuring they are finely attuned to the nuances of Parkinson's disease classification. Recognizing the complexity of my dataset, I implement Principal Component Analysis (PCA) to reduce its dimensionality while preserving vital information. The outcomes of this endeavor hold the promise of significantly improving the lives of individuals affected by Parkinson's disease by enabling swifter and more accurate diagnosis and management.
Libraries Used: Python, Scikit-Learn, Seaborn, NumPy, Pandas, SciPy
Sentiment Analysis
Project Date: November 2021
Information Retrieval Course's Mini-Project
In the realm of natural language processing, understanding sentiment expressed in text is a pivotal challenge. This project presents a Python solution to this problem by implementing sentiment analysis using a Naive Bayes classifier. Sentiment analysis, often called opinion mining, revolves around the task of discerning the sentiment or emotional tone embedded within text, such as tweets. This project encompasses two primary datasets: the SandersPosNeg dataset and OMD. The SandersPosNeg dataset features tweets categorized as either positive or negative sentiment, with a Naive Bayes classifier achieving an accuracy of approximately 82.9%. Meanwhile, the OMD dataset, processed through the same steps, yields an accuracy of around 76.3%.
Libraries Used: Python, Scikit-Learn, NLTK, NumPy, Pandas
Travelling Salesman Problem
Project Date: October 2021
Bio Computing Course's Project
The Traveling Salesperson Problem (TSP) is a classic optimization puzzle involving finding the shortest route that visits a set of cities and returns to the starting point. In my project, I've successfully tackled this challenge using two distinct algorithms: the Genetic Algorithm and the Self-Organizing Map (SOM). The Genetic Algorithm harnesses principles of natural selection to evolve and refine potential routes over successive generations. By employing a population of routes, combining them through crossover and mutation operations, and favoring shorter paths, this algorithm efficiently converges towards an optimal or near-optimal solution to the TSP. In contrast, the Self-Organizing Map, an artificial neural network technique, organizes cities on a grid based on similarity, aiding route optimization. Your project showcases how these innovative algorithms can effectively solve the TSP, demonstrating your prowess in the fields of bioinformatics and computational biology.
Libraries Used: Python, NumPy, Matplotlib
Job Assigning to N Agents
Project Date: November 2021
Bio Computing Course's Project
Job Assignment is the vital process of matching tasks with the most suitable individuals or resources, impacting fields like employee task distribution and logistics route planning, essential for optimizing operations and productivity. In this context, Ant Colony Optimization , inspired by ant foraging behavior, offers a potent algorithmic approach. Artificial ants explore solutions, leaving pheromone-like trails that guide further exploration, making ACO a powerful tool for optimizing job assignments, particularly in complex, large-scale scenarios across various domains. In this Project I solved Job Assignment using ACO.
Libraries Used: Python, NumPy, Matplotlib, Pandas
Cutting Stock Problem
Project Date: December 2021
Bio Computing Course's Project
The Cutting Stock Problem is a classic optimization challenge encountered in industries like manufacturing and paper production. It involves determining the most efficient way to cut large rolls or sheets of material, such as metal, paper, or fabric, into smaller pieces to meet customer demand while minimizing waste. The objective is to find the optimal cutting pattern that minimizes the total number of rolls or sheets used. Simulated Annealing is a versatile optimization technique inspired by the annealing process in metallurgy. Just as heated metal cools and forms a crystal structure with minimal defects, Simulated Annealing iteratively explores potential solutions while gradually decreasing the "temperature" parameter, allowing the algorithm to escape local optima and converge towards a global optimum. In this project I solved this problem using Simulated Annealing.
Libraries Used: Python, NumPy, Matplotlib, Pandas
N Queens Puzzle
Project Date: December 2021
Bio Computing Course's Project
The N-Queens puzzle has long been a litmus test for the problem-solving capabilities of both humans and machines. It challenges us to place N chess queens on an N.N chessboard in such a way that no two queens threaten each other. As N grows, the puzzle's complexity explodes, making it a formidable problem for traditional methods. In this exploration, I delve into the world of Memetic Algorithms, a hybrid optimization technique merging genetic algorithms and local search heuristics. My journey uncovers their effectiveness in taming the N-Queens puzzle, efficiently navigating the labyrinthine solution space to find elegant solutions for boards of varying sizes.
Libraries Used: Python, NumPy, Matplotlib, Pandas
Maze solver AI
Project Date: November 2022
Artificial Intelligence Course's Project
This project houses a Python implementation that breathes life into Q-learning, illuminating its prowess in maze navigation. Here, an intrepid agent undertakes the challenge of collecting flags amidst a maze of unknowns, deftly circumventing obstacles through a series of learned actions. Through each epoch, it evolves from an exploration-driven novice to a strategic explorer, adapting its decisions based on an evolving Q-table.
Libraries Used: Python, NumPy, NetworkX, Matplotlib
Connect Four Game AI
Project Date: January 2023
Artificial Intelligence Course's Project
Connect Four comes to life in this project, offering a dynamic gaming experience that blends tradition with innovation. The goal is simple: connect four of your chips in a row, but the journey is anything but. Beyond the classic two-player showdown, you'll find yourself facing off against two formidable AI opponents: the traditional Minimax with Alpha-Beta Pruning and the modern Neural Network AI.
Libraries Used: Python, NumPy, Pygame, TensorFlow
Assembler and Disassembler
Project Date: July 2022
Assembly Course's Projects
In these projects I coded assembler and Disassembler with Python and Assembly (NASM-x86) language. The implementations using Python were mini-projects of Assembly course and the ones with Assembly were the course's final projects.
Libraries Used: Python, NumPy, Pygame, TensorFlow
Image processing using Assembly
Project Date: July 2022
Assembly Course's Mini-Project
In this mini-project I designed an application using Assembly language that could make some changes to input photos.
Libraries Used: Python, NumPy, Pygame, TensorFlow
Neural Networks From Scratch
Project Date: December 2021
Bio Computing Course's Project
This project is a comprehensive exploration of neural networks from scratch, offering a hands-on learning experience for both beginners and enthusiasts in the field of deep learning. With a focus on fundamental concepts, the project covers topics like dataset generation, neural network architecture design, activation functions, optimization techniques, and experimentation. By running code implementations and experiments, users can gain insights into the critical factors affecting neural network performance. This project provides a practical and educational platform to delve deeper into the world of artificial neural networks.
Libraries Used: Python, NumPy, Matplotlib, scikit-learn
Snake Game
Project Date: August 2021
Experience the nostalgia of the classic Snake game brought to life in Python with my customizable Snake Game. Navigate through the vibrant world of day and night modes, where you can choose between a sleek white screen with a pink snake and yellow fruit or a thrilling black screen with a green snake and red fruit. With the option to toggle wall collision on or off, challenge your reflexes as you control the snake's direction, collect fruits to increase your score, and strive to avoid running into walls or your snake's own body. It's a timeless game with a modern twist, offering endless hours of fun and excitement for players of all ages.
Libraries Used: Python, Pygame
Semantic Tableaux
Project Date: April 2020
Logic Course's Project
Introducing my Semantic Tableaux Solver—a computational tool meticulously crafted for exploring the intricacies of propositional and predicate logic. This Python-based software is meticulously engineered to streamline the construction and examination of semantic tableaux, a fundamental technique in formal logic analysis. Tailored to meet the needs of students, researchers, and professionals in the field, our solver efficiently manages complex logical formulas, adeptly handles negations, disjunctions, and implications, and offers guided insights into the assessment of logical statement validity.
MLP From Scratch
Project Date: December 2021
Bio Computing Course's Project
In this project, I've embarked on an exciting journey by implementing a Multi-Layer Perceptron (MLP) entirely from scratch. This MLP, designed for classification tasks, is handcrafted in Python, with each component meticulously constructed. From the MLP class itself to the intricacies of forward and backward propagation, and even the training process, every aspect has been crafted from the ground up. In this weblog post, I'll take you through the fascinating process of building an MLP from scratch and showcase its power in action on a specific dataset.
Scheduling Algorithms
Project Date: December 2021
Operating systems' Course's Project
Explore the intricate world of operating system scheduling algorithms in this enlightening project for the Principles of Computer Systems course. Delve into the core concepts of process management, CPU allocation, and scheduling strategies, while comparing and implementing two pivotal algorithms: Shortest Job First (SRTF) and Round Robin (RR). Gain a deep understanding of the goals, key terms, and the intricate dance between preemptive and non-preemptive scheduling. Discover how these algorithms optimize CPU utilization, ensure fairness, and minimize execution times. Join us on this journey through the heart of operating systems, guided by Narges Babaahmadi's insightful exploration.
Graph Traversal Methods
Project Date: April 2020
Combinatorics Course's Project
Delve into the realm of advanced graph algorithms with our meticulously crafted C++ implementation of Breadth-First Search and Depth-First Search. This project serves as an exemplary showcase of these essential algorithms, offering invaluable tools for the traversal and analysis of complex tree and graph data structures. Embark on a journey through the intricacies of BFS and DFS, foundational techniques with expansive utility in the domains of computer science.
Moris Mano Basic Computer
Project Date: April 2021
Computer Systems Course's Project
My CPU Project represents a significant endeavor in the domain of computer organization. I have meticulously crafted a fully operational Central Processing Unit (CPU), incorporating a sophisticated Arithmetic Logic Unit (ALU) and a suite of critical hardware components. Notable features include a memory unit housing 4096 words, each comprising 16 bits, nine registers, seven flip-flops, specialized decoders, a 16-bit common data bus, and an intricate network of control logic gates. This project achieved a perfect score in my Computer Organization course, utilizing Logisim, a powerful digital logic simulator. Explore the inner workings, delve into intricacies, and witness the art of computational science at its pinnacle.
House Price Prediction
Project Date: April 2021
Statistical Methods' Course's Project
In my house price prediction project, I harnessed the power of data and machine learning to estimate house prices accurately. I handled data preprocessing challenges, explored data visually, and experimented with various machine learning models, ultimately finding that the Decision Tree Regressor excelled. This project showcases my passion for machine learning and predictive modeling, offering valuable insights to fellow enthusiasts.
Simple Twitter
Project Date: April 2020
Advanced Programming Course's Project
This Project is a dynamic command-line application developed in C++ that mirrors the fundamental functionalities of the renowned social media platform, Twitter. It enables users to register accounts, log in securely, compose and post tweets, express appreciation through likes, engage in discussions via comments, and explore the latest updates. Utilizing a basic text-based database, the project efficiently manages user data, tweets, and comments, ensuring data security while providing an authentic social media experience in a console environment. With its range of features and user-friendly interface, the Twitter Project offers a captivating glimpse into the world of microblogging and database management within a simple yet engaging application.
Titanic Survival Prediction
Project Date: December 2022
Deep Learning Course's Project
This project offers a Python-based solution for predicting Titanic passenger survival using logistic regression with L2 regularization. It covers data preprocessing, exploratory data analysis, feature engineering, and model training. Users can follow the provided Jupyter Notebook to build their own prediction model, and the trained model is applied to the test dataset for submission. This project provides valuable insights into data science and machine learning techniques for similar tasks.