Nauman Shahid quaesitor scientiae

Projects

A listing of some of the projects I completed during the course of my professional career, graduate and undergraduate studies, and high school


CS-6515 Graduate Algoithms
Dr. Eric Vigoda (Ph.D. UC Berkeley), Dr. Gerandy Brito (Ph.D. UW)
Summer 2023
Dynamic Programming for Optimal Substructure Problems
  • Objective: To develop efficient algorithms using dynamic programming to solve problems with overlapping subproblems and optimal substructure.
  • Implementation: Designed and implemented algorithms for classic problems like the Longest Increasing Subsequence (LIS), Knapsack Problem, and Matrix Chain Multiplication. Each solution was optimized to reduce time complexity, demonstrating significant performance improvements over naive approaches.
  • Outcome: Gained expertise in identifying and applying dynamic programming techniques to real-world problems, enhancing algorithm efficiency and effectiveness.
Graph Algorithms for Network Optimization
  • Objective: To explore and implement algorithms for network flow and shortest path problems in weighted and unweighted graphs.
  • Implementation: Implemented Dijkstra’s and Bellman-Ford algorithms for single-source shortest paths, and the Ford-Fulkerson method for computing maximum flow in a network. Tested these algorithms on various graph datasets to ensure robustness and scalability.
  • Outcome: Strengthened my understanding of graph theory and its practical applications in network design and optimization, particularly in scenarios involving complex routing and resource allocation.
Approximation Algorithms for NP-Hard Problems
  • Objective: To devise approximation algorithms for NP-hard problems where exact solutions are computationally infeasible.
  • Implementation: Focused on problems such as the Traveling Salesman Problem (TSP) and Vertex Cover. Developed and analyzed approximation algorithms that provide near-optimal solutions within a guaranteed factor of the optimal solution.
  • Outcome: Enhanced problem-solving skills by exploring the trade-offs between computational efficiency and solution accuracy, and learned how to apply these principles to large-scale, real-world problems.
Randomized Algorithms and Probabilistic Analysis
  • Objective: To understand and implement randomized algorithms and perform probabilistic analysis for problems where deterministic approaches are either too slow or complicated.
  • Implementation: Worked on algorithms like the Randomized QuickSort and Monte Carlo algorithms for primality testing. Evaluated their performance through rigorous statistical analysis and compared it with deterministic counterparts.
  • Outcome: Gained insight into the power of randomness in algorithms, particularly in scenarios where performance can be significantly improved by incorporating probabilistic methods.

CS-7641 Machine Learning
Dr. Charles Isbell (Ph.D. MIT), Dr. Michael Littman (Ph.D. Brown)
Spring 2023 (Expected)
Supervised Learning
  • Implemented of Decision Trees (pruned), Neural Networks, Boosting, Support Vector Machines, and K-nearest neighbours
  • Training the aforementioned algorithms on two large datasets in order to analyse how they perform in testing and validation phases
  • Performed hyperparamter tuning to achieve optimal accuracy
  • Learning curves generated in order to compare their performance
Randomized Optimization
  • The aim of this assignment is to get acquainted with localized random search algorithms, namely, Randomized Hill Climbing (RHC), Simulated Annealing (SA), Genetic Algorithms (GA), and Mutual Information Maximizing Input Clustering (MIMIC). I solved fives problems of mathematical and discrete nature (that can be solved using randomized optimization techniques) with the aforementioned algorithms (randomized optimization techniques for choice of a better phrase) in order to find the maximum fitness function
  • Problems solved and analysed:
    • Four-Peaks
    • N-Queens
    • Knapsack
    • One-Max
    • Max-K-Color
Unsupervised Learning and Dimensionality Reduction
  • The aim of this assignment is to acquaint oneself with a couple of unsupervised learning and dimensionality reduction techniques on two large datasets of our choice (with multiple features so that we have enough features to select/reduce)
  • Implemented K-Means Clustering and Expectation Maximization as clustering algorithms for unsupervised learning
  • Implemented PCA (Principal Component Analysis), ICA (Independent Component Analysis), Randomized Projects, and Feature Variance Thresholding as dimensionality reducation algorithms
  • Analysed the performance of combinations of the aforementioned clustering and dimensionality techniques on the chosen datasets and performed hyperparameter tuning in order to yield accurate modeling results
Markov Decision Processes
  • Explored various reinforcement learning techniques an agent can use to make decisions.
  • An analysis of two interesting Markov Decision Processes (MDPs) is conducted using two planning algorithms, namely, value iteration and policy iteration, along with one reinforcement learning algorithm, namely, Q-Learning.
  • The MDPs are selected carefully to be able to draw conclusions as to which algorithm suits what type of problem best (non-grid world, grid world, number of states, etc.).
  • Chosen MDPs:
    • Frozen Lake 4x4
    • Frozen Lake 16x16
    • Taxi
  • Experiments conducted using Gymnasium (a maintained fork of OpenAI's Gym library)



CS-6210 Advanced Operating Systems
Dr. Umakishore Ramachandran (Ph.D. University of Wisconsin, Madison)
Fall 2021
Virtual Machine Scheduling in KVM
  • Implemented a vCPU scheduler and a memory coordinator to dynamically manage resources assigned to each guest virtual machine
  • Memory ballooning driver implementation
Barrier Synchronization
  • Implementation of barrier synchronization algorithms from the paper titled "Algorithms for Scalable Synchronization on Shared-Memory Multiprocessors, by John M. Mellor-Crummey (Rice University) and Michael L. Scott (University of Rochester), ACM Transactions on Computer Systems Vol. 9, No. 1, February, 1991"
  • Barriers implemented using OpenMP: Sense-Reversing Centralized Barrier and the MCS Tree Barrier
  • Barriers implemented using Open MPI: MCS Tree Barrier and Dissemination Barrier
  • Barriers benchmarked on Georgia Tech's Supercomputing cluster, PACE (Partnership for an Advanced Computing Environment)
  • Simulations carried out on 1-12 CPUs with each CPU capable of executing upto 12 simultaneous threads
A multi-threaded e-Commerce Store in a distributed service
  • Distributed service implementation using gRPC (Google RPC) for RPC services and Protocol Buffers as the IDL (Interface Definition Language
  • Asynchronous RPC communication model: Clients <---> Store Service <---> Vendors
Implementation of the MapReduce programming model in a distributed service
  • Distributed service implementation using gRPC (Google RPC) for RPC services and Protocol Buffers as the IDL (Interface Definition Language
  • In line with the specifications as per the paper titled "MapReduce: Simplified Data Processing on Large Clusters, J. Dean, S. Ghemawat, Google Inc. OSDI 2004"
  • Creation of file shards/partitions for mapping
  • Implementation of a Mapper and a Reducer service






Enterprise Network Messaging System
(circa 2017)

An FPGA based approach to deep packet inspection for the purpose of application aware routing in content delivery networks
(circa 2014)

Multi-threaded client-server communication protocol
(circa 2012)

Compiler Design
(circa 2013)

Speaker Recognition
(circa 2013)

Feature Recognition and Tracking in real-time video feed
(circa 2013)

Search Algorithms
(circa 2012)

Remote Circuit Control and Actuation
(circa 2013)

Stock Exchange Trend Logging and Analysis
(circa 2013)

Assembler
(circa 2013)

DC Motor Position Control using PID Algorithm
(circa 2014)

2D Drawing Application
(circa 2012)

Power Supply
(circa 2012)

Frequency Meter
(circa 2013)

Text Editor with Encryption
(circa 2009)

Some other projects I undertook during the course of my undergraduate studies
(circa 2010 - 2014)