# ARKAPRAVA SAHA

## Sudoku

• This is a course project under Prof. Huzur Saran.
• It is an app for playing Sudoku.
• It generates a random Sudoku puzzle according to the level chosen by the player.
• The player enters a value at an empty position and can check whether it is possible or not.
• In the end the player can ask for the solution.
• This app was created using HTML, CSS, JavaScript and was deployed on the Heroku cloud platform.
• Here is the link to the app.

## Synthesis Tools for Symmetry in Boolean Circuits

• This is an independent project under Prof. Kolin Paul.
• It is based on symmetry in Boolean circuits.
• Binary Decision Diagrams (BDDs) are appended with symmetry information to create Symmetric Decision Diagrams (SDDs).
• Using the Cudd package (programmed in C), the symmetric nodes of a boolean function are first found.
• The various operations on BDDs (AND, OR, NOT) are extended for SDDs.
• The Boolean function was then represented by an SDD.

## Web Portal for TV Show

• This is a course project under Prof. Maya Ramanath.
• It is a Web portal for the TV show named Saturday Night Live.
• The backend consists of a database in SQL created from data available at Kaggle about the show.
• The frontend is a user interface coded in Python where users can ask queries about the show and get results.
• The queries ranged from finding the stars involved in an episode to displaying all stars from a season ordered by ratings.

## Text Classifier

• This is a course project under Prof. Parag Singla.
• It classifies a set of articles into eight newsgroups.
• It uses the Naive Bayes algorithm with Laplace Smoothing. Programming is in Java.
• The algorithm uses some previously classified articles as the training set and tests on the unclassified ones.
• The percentage of articles correctly classified by the algorithm is around 94-95%.

## Programming Language Compiler

• This is a course project under Prof. S. Arun Kumar.
• It is a compiler for a simple programming language.
• The compiler is designed mainly in 6 steps. All programming (for the compiler) is in SML.
• Firstly the program taken as input is scanned to generate a list of tokens.
• After that the list of tokens is parsed to produce a concrete parse tree and a symbol table.
• Then the concrete parse tree is reduced to an abstract syntax tree.
• The next step is code generation, where semantic analysis is performed on the abstract syntax tree (which includes checking variable declarations and type checking) to produce the target code.
• A BigInt package is defined to take care of arithmetic operations on arbitrarily long integers.
• Finally the target code is run (using the BigInt package if needed) to generate the output of the program.

## Institute Complaints App

• This is a course project under Prof. Vinay Joseph Riberio.
• It is an Android App for lodging and resolving complaints in the institute.
• The server is coded in PHP (using SQL for the databases). The Android front end is coded in Java using Android Studio. The web front end is in HTML.
• There are three levels of complaints: individual, hostel and institute.
• A user first logs in using his/her user-id and password.
• After that the user gets a list of complaints concerning him/her.
• The user can mark a complaint as resolved if (s)he is satisfied.
• A user can also upvote/downvote any complaint according to his/her wish. The number of upvotes and downvotes of a complaint is a measure of its importance.
• A user can lodge a complaint specifying the level of the complaint, the hostel name (if it is a hostel level complaint), the title, the description and an attachment (a picture, if needed).
• Some categorized users (who are in charge of resolving complaints) can view their responsibilities and can then do the needful.

## Search Engine

• This is a course project under Prof. Amitabha Bagchi.
• It demonstrates a search engine programmed in Java.
• The pages for a query are displayed in descending order of relevance using a given relevance function.
• The search engine can search for single word queries and even for AND, OR and phrase search queries.
• The positions of a particular word in a given page were stored in an AVL Tree. A hash table is used to store the words in all pages.

## Taxi Service

• This is a course project under Prof. Amitabha Bagchi.
• It demonstrates a miniature taxi servicing application programmed in Java.
• It can display the shortest path between two places, the nearest available taxi at a given time, and the fare for a certain trip.
• This is implemented using a graph, where the vertices represent places and the edges represent the paths.
• The weight of an edge (positive) denotes the cost of travelling along that path.

## Carrom Board

• This is a course project under Prof. Preeti Ranjan Panda.
• It simulates a carrom game on a triangular board.
• It is a single player game with a variable number of coins.
• OpenGL library is used to implement the graphics.
• The motions of the coins and the striker on the board are programmed in C++.
• The program takes care of friction and all possible collisions.

## Table Server

• This is a course project under Prof. Pulak Mohan Pandey.
• It is a trolley that can transport utensils from one table to another.
• The trolley and the wheels were made of wood. The glass holders were made of metal rods.