List of Projects
- Peer to Peer File sharing - Fall 2010
Developed a Peer-to-Peer distributed file sharing system. The completed system provided means for a user to store, retrieve, delete and search for a file on the distributed system. Was a team project consisting of 2 members.
- Client Server - Fall 2010
Developed a Robust Client/Server inter process TCP communication model capable of handling malicious behavior and UNIX signals.
- Multi Threading - Fall 2010
Emulated a time driven M/M/2 queuing system using POSIX threads, locks and CVs to achieve thread synchronization.
- Sudoko - Spring 2010
This Project involved solving the popular Sudoko puzzle using greedy best-first search and steepest-ascept hill climbing algorithms. An analysis of both algorithms were done and a complete state formulation was created. The expected output was a sequence of steps giving the solution path, the number of expanded states and depth of the tree.
- Spatial Database - Spring 2010
Created an application for a given set of data(Map and co-ordinates of entities within the map) that created and populated a spatial database using the co-ordinates and then queried the spatial database. A GUI was implemented using Java Swing, which enables the user to query the database with one of many choices by simply selcting a combination of radio buttons and checkboxes. The possible type of queries were Whole region, Point and Range queries among others. The results of the queries were displayed on the map. The entire project was developed using Java and Oracle 10g with the help of Oracle Spatial features.
- Database - Spring 2010
Mapped an ER diagram onto Oracle OR data model and then implemented the resulting database schema In Oracle and Queried the Database
- Computer networks - Spring 2010
The Goal of the project was to simulate the making and forwarding of a packet and frame in the Network and data link layers . The project was simulated using c/c++.
- Phase 1 - This phase involved creating a Mesh network topology. The Mesh topology was reconfigurable such that each link could have a different speed of transmission and the size of packets for each node could be different as well. Given any node number in the mesh, one could retrieve the router ID, length of the packet and speed of all its links.
- Phase 2 - The second phase implemented the Mesh such that each node could route different packets to different destinations in the Mesh. Given a set of IP address as destination nodes, packet generation and routing was simulated as follows. A Packet was created using the source and ultimate final destination. It was encapsulated within a frame, which had the mac address of the current node and next destination. As the frame was routed from one node to the other through the nearest neighbour, the mac address in the frame was appropriately changed until the packet reached its final destination.
- Propositional resolution theorem prover - Spring 2010
Project involved in coding a propositional resolution theorem prover. A set of CNF statements are given as input to the prover along with a goal. The negated goal and CNF statements are added to the knowledge base. Resolution is applied and if a pair of clauses contained complementary literals they were resolved to produce a new clause, which was added to the set of Support if it is was not already present. The process was repeated until a contradiction was derived or if no more resolution steps were possible. The project was coded entirely in LISP with the help of unit preference and set of support strategies.
- Socket Programming - Spring 2010
Developed a simple client-server design over TCP sockets such that the client could use the server to check the time and date. Created multiple clients and a time-checking server. The responsibility of the server included being able to accept clients concurrently, to retrieve client's IP address and port number, respond with the current time or date accordingly and to terminate after serving the clients. The responsibility of the client included being able to connect and send messages to the server, to retrieve its dynamic port number, be able to terminate after sending the its request and recieving the response.
Operating System simulation using NACHOS - Fall 2009
This project was done as a part of the csci 402 Operating Systems graduate course work. The Goal of the project was to build an Operating System and improved its functionality and performance. The entire project was done on the Nachos (an instructional Operating System) environment. The project was coded in c/c++. It was divided into 4 phases as shown below
- Phase 1 - Developed a Hospital Management System in which synchronization techniques were implemented. Locks, Condition Variables and Semaphores were designed and the various techniques were modeled on the System.
- Phase 2 - The Operating system was enhanced by adding Multi-Threading and Multi-Programming features. Designed and developed Systems Calls for the user. The main Systems Calls designed were Fork, Exec and Exit. Also designed and developed a Process Table to keep track of all the threads in a process, and in general the various processes. A stack space had to be created for each threads of a process.
- Phase 3 - The Operating System was further enhanced in this phase by implementing a Virtual Memory System. This involved designing and developing the functionalities of the Translation Look-aside Buffer, Page Table, Inverted Page Table and a Swap File. The Virtual Memory worked on the concept of Demand Paging. For page replacement two algorithms, namely First In First Out and Random Page Replacement were implemented.
- Phase 4 - The Hospital Management System developed had to be converted and made into a Distributed Hospital Management. This was achieved, by introducing basic networking capability so that the system could work in a fully distributed manner. Several new system calls were added and the various instances of the hospital running on different machines (Simulated on a single system) communicated using Remote Procedure Calls.
- Flickr and Facebook Mashup - Fall 2009
- Web Scrapper Using Perl Scripting - Fall 2009
Implemented a Search on YouTube which performed server side manipulation of the result using Perl Scripts. The application developed, accepted a search string from the user. This string was then sent to youtube and from the obtained results, it retrieved Channel Results, Playlists Results and Promoted Videos, and displayed them on the browser. It primarily focused on the use of regular expressions and the power of pattern matching in the Perl scripting language. All the processing was done on the server side using an apache server.
- Programming Competition Portal 'Code BREAKER' - May 2009
Code BREAKER was an innovative web platform for hosting Programming competitions and Live projects. In short it was a web portal that integrated an online judge to test programs in programming contests and make use the Open source approach to distribution of software, offering practical accessibility to a software's source code, into a single software with which the users can be greatly benefitted. Code breaker provides a platform with which participants located anywhere on the globe can compete against each otherin coding competitions. The portal also features ongoing projects where participants can work in design and development to produce useful software. Participants are also able to log bugs that they find in the software developed and try to fix them using Reveision Control Systems. The outcome that was expected of Code BREAKER is that Students can use this to improve their coding skills while companies looking to hire professionals can do so by noting their performance.
- Student Database Application using the concept of Indexing - June 2007
The project involved developing a student database application and implemented the storage of data using the concept of indexing. It had provisions to retrieve data using multiple keys and inverted lists and dealt with the addition, retrieval, deletion and modification of data. Front end graphics features were created using C++ using a Turbo C++ environment where the user could interact using the keyboard.
- FuzzyLogic - An approach to control problems - May 2009
The seminar gave a breif description of how embedded fuzzy controllers automate human control activities. It highlighted the differences that Fuzzy Logic had over conventional control methods. A case study of the classic 'Inverted Pendulum' was made and its underlying mechanics for control behaviour were discussed. The seminar showed how we could expoilt our tolerance for imprecision by using Fuzzy Logic in dynamic systems.