Projects

 

 

Relevant Academic Projects

  1. Course assignments for "Introduction to Parallel and Distributed Systems," ECE-5610, Dr. Guy Edjlali

    1. Designed and implemented "Unification Algorithm," to determine possible unification between two functions up to any depth in Java 1.2. Basis for the Prolog Language using top down approach.
    2. Implemented a fairness algorithm in C for "Multiple Readers/Multiple Writers," using Pthreads, Mutex Locking, Semaphores, and Shared Memory in UNIX.
    3. Designed and implemented a parallel algorithm to solve a common iteration in "Computational Fluid Dyanmic (CFD) application," on a cluster of workstations using MPI.
  2. Course assignments for "Design: Computer Languages," ECE-5600, Dr. Loren Schwiebert

    1. Developed applications using "Double Linked Lists, Hash Tables, and Queues," in C++.
    2. Implemented a "threaded Binary Tree," using C++.
  3. Course assignments in "Networking, P2P, Web," Dr. Xu, Dr. Zeadally, Dr. Schwiebert,

    1. Implemented a "Reliable FTP Application," in Java using UDP transport protocol.
    2. Designed and implemented a "CBT based Multicast QoS protocol for mobile ad hoc networks," using SimJava 1.2 discrete event simulator.
    3. Designed a single process discrete event "P2P simulator in Java 1.3 for simulating Gnutella (version 0.4) protocol," using various traffic scenarios with random file sizes, file types, and dynamic network topologies. The code is available under GNU public license. Here are the details.
  4. Course assignments in "Advanced Operating Systems," ECE-5640, Dr. Loren Schwiebert,

    1. Implemented a version of "FairShare scheduling for MINIX process scheduler." Also implemented a modified version of the nice command that alters process priority by allocating user specified % CPU time. Finally, pstats command was also implemented that prints the total CPU time used by each process, the UID of each process, and other relevant information. All this required modification and addition of appropriate fields to the MINIX kernel data structures.
    2. Implemented "Shared Memory Segments for User Processes," with certain simplifications by modifying the MINIX memory manager. Commands associated with shared memory implementations were shmget, shmat, shmdt, and shmctl.
    3. Implemented a "/proc filesystem in MINIX," with limited functionality for maintaining process information.
  5. Course assignments in "Parallel Architecture," ECE-7660, Dr. Vipin Chaudhary,

    1. Implemented and studied the performance of a "Parallelized LU Decomposition algorithm on Cradle’s Universal Microsystems (UMS)," a multiprocessor oriented single chip platform. We conducted both block and cyclic matrix decomposition scenarios to calculate the LU. System performance was evaluated against various parameters such as active clock cycles, delay cycles, read/write cycles, instruction/data cache hits and misses, percentage local bus utilization, and total simulation cycles under varying matrix sizes, SDRAM sizes, number of processing elements (PEs), and memory transfer engines (MTEs). The programming was done in C and UMS assembly language (CLASM), and other related system libraries.
    2. Group Project (Imran Khalid and M. Sohaib). "Port µC/OS-II, the Real Time Kernel to Cradle’s UMS (Universal Microsystems) architecture." Due to time constraints and the complexity of the project, we were not able to perform a complete port of µC/OS-II on Cradle. Here are some details.
  6. Course assignment in "Software Engineering Environments," CSC-7110, Dr. Vaclav Rajlich,

    1. Extended JBuilder 6 and implemented several "tools for tracking code change propagation for software projects," written in Java.
Home Research Resume Projects Courses Teaching Schedule Photos Friends Family India Indian Cuisine Vegetarianism Jainism Contact Me  
 
Return to the NeWS home page.`
Last updated by Manish Kochhal Email: on Oct-14-2004