A priority based Cooperative Scheduler
The scheduler provides an interface to the user to schedule threads in a program in cooperative manner. It provides different levels of priority that can be assigned to a thread. Threads in ready state are scheduled on the basis of their priority and based on flexible policies(like consumed virtual time ) within the same priority level.[ a min-heap is used per priority level] A version with a wighted fair queing policy is being used in my Script Space research..I have used some part of Netscape Portable Runtime [prthread,prlock].You may need to download NSPR source to build the scheduler.
Implementing Google.s Page Ranking Algorithm
Google Page ranking algorithm is used for assigning ranks to a web-page based on how many pages have a link to it. The algorithm is also referred as a random surfer model to understand the behavior of someone who keeps clicking on successive links at random. The current implementation calculates the Page Rank by calculating the right dominant eigenvector of Google Matrix within an error of 1% by Power Method. The code base is used for a recommendation system for related citation from a citation graph and an initial set of user selected citations. The implementation uses JAMA for matrix operations.
Reliability in UDP
UDP by itself doesnot support reliability. This is a class project that we did to ensure reliability on top of UDP by writing a layer implementing the Go-Back-N protocol to detect packet losses and re-transmitting them. The simulation was done through a router which can be tuned to drop packets with different probability.
Implementing Link State Routing
Another project I did as part of my Networking class.The routing algorithm supports link failure recovery and dynamic change in link cost.The link cost change and link failure is monitored periodically after we construct the initial link-state table.
A simple IDL compiler
The compiler generates the client and server stub from an IDL meant for Remote Procedure Call. It was written using boost::regex.It also generates the server dispatch loop parsing the idl.
A table-driven lexical analyzer for Pascal Junior
It is built as the lexical analyzer of the Pascal Junior compiler. This is table driven to support constant time lookup of tokens. It runs linear with the size of the input pascal junior program.
An HTTP server that supports Java Servlet specification.
The server is a partial implementation of the HTTP Servlet Specification as well as HTTP1.1. It is multithreaded and uses a thread pool to handle new client connect requests.It complies with HTTP1.1 persistent connection ,implements HTTP Cookie specification, serves both static and dynamic content. It has an HTTPSecurityManager component to handle file access permissions It is able to send error messages to client [400/403].It works against the standard web browsers. It has been developed on top of QDServletServer code by Dr. Eli Tilevich