Research and Projects

Research Projects

HARPO Programming Language Design

HARPO stands for HARdware Programming with Objects. HARPO/L is a programming language for hardware/software codesign. The language is based on the idea of a network of cooperating, multi- threaded objects. I have been designing the language and investigating methods of compiling it and similar languages to programmable hardware such as Coarse-Grained Reconfigurable Architectures. Currently we are looking at methods of proving concurrent programs free of certain classes of error and that they meet their specifications.
Poster

Project Logo
HARPO Data Flow

Formal Verification of HARPO

This paper reports an implementation of a verifier for HARPO, a concurrent programming language. The verifier translates annotated programs into the intermediate verification language Boogie; the translated program is then checked by the Boogie verifier. The translation of HARPO programs is achieved by parsing the source code into valid abstract syntax tree; each node of the syntax tree is then used for generating its equivalent Boogie code. By using our verifier, HARPO programmers can be assured that their designs are free of defects.
Read Full Text

Errors in the software are hazardous. Testing software, before its deployment, may catch some errors present in the software. However, testing does not guarantee their absence. Several formal verification tools have been built and used for formal verification to ensure the correctness of software in different programming languages. The Boogie language is a common intermediate representation for static verification of programs written in several high-level programming languages. In this paper, notable software verifiers such as Dafny, VCC, HAVOC, Verve, and Chalice are described and analyzed for similarities and dissimilarities with the HARPO verifier.
Read Full Text

HARPO (HARdware Parallel Objects) is a concurrent programming language designed to run on coarse-grained reconfigurable computing architectures, Field Programmable Gate Arrays (FPGAs), and Graphicaal Processing Units (GPUs). The HARPO compiler translates programs into Boogie for verification and into VHDL for implementation on FPGA. Writing specifications and annotations in HARPO language for a hardware design shortens the development time and bridges the gap between high-level programming languages and hardware description languages. In this paper, the design of an integer “Counter” is verified using HARPO Verifier by translating the program into Boogie. Various counting scenarios containing explicit transfer of permissions have been verified using HARPO verifier. The correctness of design must be verified before translating and implementing the design on FPGA.
Read Full Text

Dafny Interactive Theorem Prover

Formal program verification has been used as a technique to ensure program correctness for several years. In this paper, the backend of formal verification system, named Boogie IVL, is discussed using interactive verifier named the Dafny. In this paper, the Dafny language and verifier are reviewed in detail. Some important features which are unavailable in high level programming languages like Java, C, and, Python but the Dafny language has direct support for those features namely sets, sequences, and, termination matric etc. The Dafny IDE and its integration available with Visual Studio is being used as verifier of a complete software system. It supports modularity, generic classes, abstraction, and, reverification. The Dafny compiler can produce both .NET executable code and verification conditions for Boogie Verification Debugger. We have also analysed the verification results of algorithms named, bubble sort, nth fibonacci number, and, schorr waite with benefits of using Dafny IDE. When the Dafny language was designed some essential techniques in formal verification namely, verification-splitting and timeout had not received attention by its developers. These features are highlighted in this paper, and we found that as compared to other verifiers e.g VCC, Eiffel, and, Spec# the Dafny verifier IDE has more interactive program verification system.
Read Full Text

In-Memory Processing with Micron Automata Processors

Since IoT is an information technology buzzword today, and In-Memory Computation is a highly parallel processing architecture of comprehensive search and analysis. There is no standard architecture for IoT, exploring the architectural aspects of authentication of things connected to others via the Internet and small networks. This process is compulsory before joining the internet either it is Web of Things, Machine to Machine, or Human to Machine frame of communication. For connected moveable devices or objects when they switch from one network to another, their connectivity to the network must be ensured, and on the other side when intrusion encountered from outside the IoT environment it must be handled by the security policy implemented on servicing computing machine. This search is as simple to implement with hash tables, but hashing becomes inefficient when entries become more significant and not scalable. Devices profiles and firewalls for authentication and intrusion detection/prevention must be maintained after they are authenticated. When thousands of devices need to get connected with IoT environment then managing their authentication and intrusion blocking policies must be performed quickly and giving an impression of dedicated service response from the server machine. These high-performance servers are implemented with MIMD machines. Accelerating service of requests from IoT’s low-end devices using In-Memory Computation is will be a new approach for comprehensive search and analysis. The technique of Automata Processing used for search of device identity speed up the processes of authentication if implemented on Micron Automata Processor, an In-Memory Computing Architecture. In this report with amalgamation of IoT and Non-Von Neuman Architecture with a new approach of authentication with their background and viability study.
Read Full Text

Telemedicine Web Applications

Telemedicine services increase the quality and accessibility of healthcare services. In this project named “Web Based ECG Monitoring System” we develop ECG monitoring which has potential to address diverse diseases in human body and by increasing the quality of treatment. Monitor Patients in remote area where clinical services such as ECG are not available. Off the shelf Arduino based shields can be deployed to monitor patients ECG in a cheaper way at home, military camps, remote non clinical areas and small size hospitals, home and middle class communities comparatively to the conventional clinical system. Use of already existing Internet is a major breakthrough in our idea. More than 100 diseases and their abnormalities in human body can be detected by remote physician using this implementation. In data acquisition module, programming Arduino based shields to acquire data from electrical activities of heart or muscles sending data using USB interfacing which will be stored in PC and upload on website named “www. hostpkdesgins. com” where doctor can visually see this information and complete prescriptions can be given by doctor. Here doctor can also serve more patients than conventional ECG systems. Use of same technology implementation we can develop system based on electromyogram, electroencephalogram and many more but the problem is during implementation these Arduino based shield are highly effected by temperature and results also changed due to high temperature.
Thesis

Course Projects

Object Oriented Software and Specification: Schedule Management Application implemented using Software Design-by-Contract Approach

Create course schedule, view that schedule with section, room#, instructor and time interval. Manipulate weekly schedule, identify conflicts, enter constraints (hard & Soft), suggest schedule with minimized conflicts.
Read Full Text
Source Code

Java: Multithreaded Messanger Applications with Randezevous Synchronization

In this project, A Multithreaded Client-Server Architecture based application is implemented which works like a group chat room. Since Java has a most dominant impact on Network Programming timeline and this application problem inherently come up with network involvement plus concurrency and synchronization in parallel operations of clients. Java is also good in multithreading solutions. So, Java platform will be used in the development of this project and all the sources will be tested and build using JDK later JVM. The server will run continuously receiving requests from connecting clients and grant access to chat group using Java Socket Programming Primitives. Parallelism in Java is no doubt excellent we can take advantage of multithreaded parallelism but host machines may differ in different situations so the code must be optimized generally for all machines. One of the big challenges is using socket programming granularity of synchronization point will increases as compared to interface programming of Java but it is good to catch up those synchronization granularities for more optimized application development. The server has its backlog as a bottleneck to respond limited set of clients at a time. We are going to scale it to a larger number of users in future. Security is a big challenge for intrusion detection and prevention in chat room.
Read Full Text
Source Code

SAP ALU Design and implementation on Spartan 6 FPGA

The Simple-As-Possible (SAP)-1 computer is a very basic model of a microprocessor explained by Albert Paul Malvino1. The SAP-1 design contains the basic necessities for a functional Microprocessor. Its primary purpose is to develop a basic understanding of how a microprocessor works, interacts with memory and other parts of the system like input and output. The instruction set is very limited and is simple.
Project Presentation

Speach Processing GUI Application

Suppressing Noise in a Speach Signal using Butterworth Filter
Read Full Report
Source Code

A Case Study: Design of C++ Library To Investigate The Object Oriented Design of Automated Teller Machines

ATM (Automated Teller Machine) library developed for ready to be used for Object-Oriented designs
Project Presentation
Software Requirement Specification Document
Source Code

Self-Paced Projects

  1. “To Do” list GUI desktop application in Java – MVC
  2. “Todo List” Web/Mobile Application using ReactJS, CSS, HTML
  3. Trans-compiler design (Java to Verilog) – Recursive Decent Parsing
  4. Parallel Connected Component Labeling for determining the letters inside an image and Unsharp Mask & High Boost Filtering” algorithm on Spartan-6 FPGA
  5. SQL based Database design for car showroom – Relational Database.
  6. Sound direction indicator with 24 moves
  7. Traffic Control Signal design with all way stop synchronization using Ladder Logic, implemented by Siemens S7-200 PLC processor’s delay counters
  8. Median Filtering of Gray Scale Image using Spartan-6 FPGA Family
  9. PRAM Rank Sort algorithm implementation using MATLAB parallel computing toolbox
  10. Electronic voting machine using AT89C51- a password protected application Source Code

Research Phile

Explore interesting research groups: