Letter Recognition

Embedded Game Project - C/C++

68fd3a24.png

Letter Recognition

Image Processing - BMP - C/C++

The aim of this project was to process a Windows bitmap (BMP) image file and detect letters of the Latin alphabet in the image. The first step is to learn the shape of the letters. The system goes through a learning phase where the average shape of more than 20 variations of each letter is formed. In the second step, we detect letters that require the number of rows and columns in our input image, in order to form a grid accordingly. Given a set of words as input, the system will count and show the localization of those words in the image.

68fd3a24.png


Web Development

Web Programming - Social Media Simulation

In this course, we select implementing a social media development, such as Twitter. To this goal, I used PHP, HTML, css3, bootstrap, jquery and SQL, participating in several parts of web programming. In the website mentioned, the user has a range of authorities, including the following someone, like action, commenting, and share with others, coinciding with having a profile and posts he/she posted. Each person has his own page and security roles and safety observed by using a database. Also, it has amazing UI/UX and an appropriate appearance, all designed by me. you can visit just the UI of some pages of the website here.

1233.jpg


TZAAR Game

Decision Theory - Game Theory - Minimax Algorithm

Tzaar is a relatively new game, that was invented by Kris Burm and published in 2007. There is no randomness and both players know all information about the current position in the game. White player and black player take turns, white has the first turn. In the starting position, there are 30 white and 30 black pieces. Each color has pieces of three types: 6 are Tzaars, 9 are Tzarras and 15 are Totts. The most important property of this game is the high branching factor, which makes the game difficult for computers.
The aim of this project was to design a strong Tzaar-playing program. To do this, first, the game was modeled, and some criteria to score each game status were proposed based on the game strategies. Secondly, some useful heuristics and alpha-beta pruning were implemented, then followed by designing a pre-defined table for the initial movements in order to optimize the first choices (technically speaking, this was done due to the fact that most players always start the game with similar choices). Finally, because of the high branching factor, a node evaluation method was used to sort the nodes before the node expansion, which helps us to only expand a proportion of nodes (depends on the computational sources) and still make feasible decisions.

68fd3a24.png


Difference Of Gaussian Parallelism with OpenMp & Cuda

Parallel Computing - GPU Computing - CPU Parallelism

The aim of this project was to implement the theories that were taught during the course of multi-core programming. The task was to improve the execution time of the DOG algorithm by dividing its computational loads first among the CPU cores and second among GPU blocks, using an interactive kernel profiler known Nsight for controlling. To do this, each pixel point was considered as a single processing thread, in which its distance from the cluster center was computed. for more information click here

68fd3a24.png


Nonogram Game

Game Theory - Constraint Satisfaction Problem

Nonograms pictures logic puzzles in which cells in a grid must be colored or left blank according to numbers at the side of the grid to reveal a hidden picture. The aim of this project was to solve the game using computers. For this purpose, the game was modeled as a constraint satisfaction problem (CSP). There are various methods that have been used for this problem, one of which is backtracking, the one used in this project as well. Moreover, two well-known heuristics were also used, namely, minimum remaining values (MRV) and least constraining value (LCV), which improve the efficiency of the solution. Finally, with the help of some other methods, e.x. arc consistency checking, my computer was able to solve the problem for the boards with at most 700 squares.

68fd3a24.png


Messengers through SNMP Protocol

Network - Java

Simple Network Management Protocol (SNMP) is a networking protocol used for the management and monitoring of network-connected devices in Internet Protocol networks. The SNMP protocol is embedded in multiple local devices such as routers, switches, servers, firewalls, and wireless access points accessible using their IP address. In this project, I managed an application using SNMP protocol which is regarded as a Messenger app. It works with different OIDs, and we can connect two devices by connecting a server using this application.

snmp.JPG


Trie Tree

Data Structure - Java

Trie tree is a type of tree data structure that is used for locating specific keys from within a set. This project was given during the data structure course, and its aim was to implement the trie tree efficiently. My final implementation was capable of storing and retrieving about 200 words in a reasonable time, less than 2 seconds (As the project had been done a long time ago, my approximation of its capacity can be much better or worse than the real one).

68fd3a24.png