Graduate Student @ University of Southern California

Thank you for visiting my Website.
My name is ‘ Shallin Partap Singh ’ . I am a Graduate Student pursuing Masters in Computer Science at University of Southern California - Los Angeles. I have a Bachelors degree in Information Technology from Lovely Professional University - Punjab, India. Currently I am working as a Student Programmer from the last 1 year at USC School of Cinematic Arts. I also have a 6 months experience as a Software Development Intern at SLR Infotech Pvt Ltd, India. We developed Enterprice Resource Planning Software for a Law Firm using .NET Framework and SQL Server.

Since I am very close to completing my Masters Degree I am seeking a challenging work opportunity in the giant software industry. If you are an employer, kindly visit my Education and Projects webpages to get a deeper insight into my capabilities and fit in your organisation. And if you are a student or a seeker just like me you are most welcome to go through my career journey and it will be my immense pleasure if even a bit of my story helps you in your career path.

“ The purest and most thoughtful minds are those, who love   C O L O R  the most. ”  — John Ruskin


I have always been into Technology, drew every chance that I could. Late 2007 was when I started to get interested In doing Bachelors in Information Technology. I thought it would be a pretty cool thing to learn 'Coding', instead of just wasting my days sitting in front of a TV.

I used to sit in front of the laptop for hours on end, trying to understand the logic behind Programming Languages; How They Work, and Why they work the way they do. This area of work soon became my passion, and I've loved doing it since the very start. Everything I know (apart from a few little bits) about Computer Languages and development are self taught and with the help of my best buddy - G o o g l e . lol !

From Fall 2011, I am pursuing Master in Computer Science at University of Southern California in Los Angeles, to try and get a further knowledge, and most importantly a Master's Degree to backup my skills. Throughout this time, I have remained successful by making well thought, calculated decisions based on needs. I possess a unique approach to solving problems through good old fashioned common sense. I love to involve several people in decision making process. This style of collaboration has made me a very effective Problem Solver.

I also have a hands on experience working as a Software Development Intern at SLR Infotech Pvt. Ltd, where I learned the importance of time, Efficient planning and most important is being Humble and Respectful. Presently I am working as a Student Developer, developing a website named www.interactingwithautism.com. Working here in USC school of Cinematic Arts has polished my programming approach, analytical and interpersonal skills.

By day I spend my time doing 'Graduate Projects' with the amazing folks at Local Wisdom. The rest of my blood, sweat and tears are spent in learning new developments in the field of computers. When I'm not glued to Computer, I can be found working out in Gym, enjoying time with my friends, listening to music or sipping a Gold Standard French Vanilla protein Shake, without which, I might perish.

I am interested in taking up a challenging position in a highly application development based environment. My strong academic commitment along with a perpetual yearning for knowledge and experience in my field makes me an excellent candidate in my field.

Well said: "Ability is nothing without opportunity." - Napoleon Bonaparte    Looking for the best oppurtunity....


USC SCHOOL OF CINEMATIC ARTS  ( Aug, 2011 - Present )

Presently I am working as a Student Programmer at USC Shool of Cinematic Arts. We are Developing Video Content Based Website called www.interactingwithautism.com currently in progress. Following are the breif summary of my responsibities:

√ Developed the front end using HTML 5, CSS using Javascript, jQuery, Ajax for client side validation and Interactivity. √ Planning and conducting cross-browser usability testing against W3C. √ Designed and developed the database, Database administration DBA , database enhancements and Back end development, maintenance of websites using PHP and MySQL. √ Developed the Commenting system for the viewers of the video to comment using PHP script. √ Documenting features, technical specifications & infrastructure requirements.

SLR INFOTECH PVT LTD  ( July, 2010 - Dec, 2010 )

In July 2010, I got an oppurtunity to work in SLR Infortech Pvt Ltd, India a Software Development Company as Software Development Intern. Our team was assigned a project called " Enterprise Resource Planning Software " which was to be developed in .NET Platform using c# and SQL Server at the Backhand. Following were the breif summary of my responsibities:

√ Involved in complete Life Cycle including Analysis, Design, Development and Testing. √ Developed modules of the application in ASP.NET, Silverlight and involved in writing C# classes. √ Used Web services to communicate with the business layer objects. √ Responsible for creating SQL queries and stored procedures using SQL server 2005. √ Programmed Data Access Layer using ADO.NET which involved in accessing data from the Database using Connected Architecture which requires the strong OOPS concepts. √ Utilized ADO.NET technology extensively for data retrieving, querying, storage and manipulation. √ Implementing 'Role Based' functionality for accessing the data of the Company.

   About Me
Graduate Academia:
I am pursuing Masters in Computer Science from University of Southern California - Los Angeles. Till now my GPA is 3.55 on scale of 4.0. I started my Masters degree at USC in Fall 2011 and I am going to be graduated in December 2012. So far I have completed 7 courses realted to Computer Science which are mention below:

  … OPERATING SYSTEMS Under Professor Michael Crowley - Summer 2012

Processes, Threads, Address Spaces, Semaphores, Monitor Variables, Condition Variables, CPU Scheduling, Multiprogramming and System Calls, Deadlock, Memory Management, Virtual Memory, RPCs, Distributed Nachos, Election Algorithms.

  … ARTIFICIAL INTELLIGENCE Under Professor Laurent Itti - Spring 2012

Intelligent Agents, Problem Solving & Search - Uninformed Search - DFS, BFS, Uniform-cost, Depth-limited, Iterative deepening, Informed search ? Best-first, A* search, Heuristics, Hill climbing, Simulated annealing, Game Playing - Minimax algorithm, Alpha-beta pruning, Propositional (boolean) logic, Inference in propositional logic, First-order logic, Situation calculus, Planning, Fuzzy logic, Genetic Algorithms.

  … WEB TECHNOLOGIES Under Professor Ellis Horowitz - Spring 2012

HTML5, CSS, XML, JavaScript, DOM, Forms & CGI Mechanism, Web Servers- Apache HTTP Server, Jakarta Tomcat, Server Side Scripts in Perl and Php, Web Performance, Cookies, Java Servlets, Ajax, JSON, APIs and Web Services.

  … MULTIMEDIA SYSTEMS Under Professor Parag Havaldar - Spring 2012

All aspects of different media types like images, video, audio, graphics, Content creation - media capture and representation, methods to assemble media types to create multimedia content, Compression/Storage algorithms & protocols architectures, Wired and Wireless network distribution, QoS, Watermarking & Encryption, ISO and ITU standards like JPEG, MPEG1, MPEG2, MPEG4, mp3 etc.

  … ANALYSIS OF ALGORITHMS Under Professor William Cheng - Fall 2011

Greedy Algorithms, Divide & Conquer Algorithms, Dynamic Programming, Neural Networks, NP Completeness and Linear Programming.

  … DATABASE SYSTEMS Under Professor Shahriar Shamsian - Fall 2011

ER Data Modelling, Relational data Modelling, Extended ER Modelling, SQL, OO & OR DBMS, DB Connectivity, Spatial DBs, XML, Distributed DBs- Design, Query Optmization, Multi-Dimensional DBs(OLAP), Data Mining & Data Warehousing.

  … COMPUTER NETWORKS under Professor Ali Zahid - Fall 2011

Data Communications and Networking, Networking protocols like TCP & UDP, WANs, LANs, Internetworking, Transport Layer Protocols, Network Applications and Network security.

Undergraduate Academia:
I have completed a Bachelors in Information Technology from Lovely Professional University, Punjab, India. It was four years degree starting August 2007 to June 2011. I secured an overall GPA of 3.47 on scale of 4.0. I completed courses like C programming, OOP concepts, Computer Networks, Software Engineering, Databases, Data Warehousing & Mining, Priciples of Operating Systems, Artificial Intelligence and Java programming.
  • Skills  Required  ?

    Check  out  my  work  ?

    Welcome Again Guys ! Thanks for bearing me uptill here. Now you can look at my work individually by navigating the Menu above or if you want to go directly to a specific project under any course, check out the Index below, which will guide you to specific project without enjoying the interactivity of this website. lol.

      … Index :

    Operating Systems:  Multithreaded simulation of a Supermarket

    Phase 1: Converted a Uni-Processor, single threaded operating system NACHOS(C/C++ based, UNIX platform) into a Multi-Threaded, Multi-Programmed networked OS.

    Phase 2 & Phase 3: Implemented Multithreading, Thread Synchronization using Locks, MVs & CVs, System Calls, Virtual memory (Page table, IPT, TLB, Page replacement algorithms).

    Phase 4: Implemented 'Fully Distributed Systems' for the simulation to work with multiple servers, RPCs for clients, simplified Election Algorithm to detect critical failure node, algorithm for Mutually Exclusive Create RPCs.

    Multimedia Systems:

    Project 1: Audio/Video Player & Video indexing in Java: Metrics to scan the video/audio & extract quantitative descriptors based on color, motion vectors & audio frequency thus showing Related Video Segments.

    Project 2: DCT compression of Image in Java

    Project 3: Re-Sizable Image/Video Jigsaw puzzle in Java

    Artificial Intelligence:

    Project 1: Genetic Algorithm: Estimated decryption of PCM format Image in Java

    Project 2: Logical Agents and Expert Systems: 'Bulls and Cows' Game(for 3/4 Digits) in JESS

    Project 3: Adversarial Search: 'Fruit Rage' Game in Java - Implemented modified alpha-beta algorithm

    Project 4: Search and Path Planning: Parallel BFS for path planning & A* Search for finding optimal path, in C++

    Web Technologies:

    Project 1: Android Facebook Application in Java: GetTravelInfo! - HTML, CSS, DOM, XMLHttpRequest, Java Servlets, AJAX, REST, JSON, Perl & XML used altogether to extract hotel search results from tripadvisor.com and display in application's GUI.

    Computer Networks:   UNIX Socket Programming ( Instant Messaging System )

    Phase 1: Client-server Architecture, Communications over TCP and UDP Sockets, Coded in C.

    Phase 2: OPNET Simulations ? WLAN, RIP, OSPF

    Analysis of Algorithms:

    Project 1: Maze and Sudoku Generation and Solution

    Project 2: Doubly-Linked Circular List


    Project 1: Spatial DB Application: Oracle 11g Spatial features, Swings based GUI, JDBC Connectivity, SQL Queries to implement Nearest Neighbor, Range, finding Assigning DC-points & Relevant Users queries.

    Project 2: Movies DB in XML - Designed XML Schema and XML Stylesheet, and used XQuery to query on XML data.

  •   PROJECT : Multithreaded simulation of a Supermarket

    Programming Language :  C, System Programming

    Platform :  NACHOS installed on Aludra (Unix Based Server of USC)

    Group Size :  3

    My Role :  Research related to the topic, Designing Data Structures & Algorithms, Coding for approximately 40% of each part, Debugging & Editing parts of the code

    This project was basically to build an operating system from scratch. To help get started, a very simple, but functional, operating system called Nachos (Not Another Completely Heuristic Operating System) is given. Over the course of the semester, our job was to improve the functionality and performance of Nachos.
    The project has four phases, corresponding to four major pieces of a modern operating system: Thread Management, Multiprogramming, Virtual Memory and Networking.

    Phase 1 :  Thread Management

    Implemented Locks and Condition Variables, addressing issues like a thread trying to release a lock that it does not hold and other possibilities that violate the rules of mutual exclusion. Developed Synchronization features to avoid deadlocks and race conditions. Then implemented simulation of a Super Market which had the following types of people and resources, each simulated through the use of individual threads:

    • Cashiers who scan the items Customers purchase

    • Customers who buy (and return) items from the store

    • Goods Loaders will load items in the Department when they are out of stocks

    • Managers who tell the Department Salesman to start/stop working and look at total sales

    • Department Salesman will guide and interact with Customers before and after their purchase from a particular Department

    Phase 2 :  Multiprogramming

    • Implemented following System Calls - Creation, Deletion, Acquire, Release of Locks; Create, Delete, Wait, Signal and Broadcast for CVs, Fork a thread, Exec a process, Exit a thread, Print on console, Generate a random number and Scan a user input

    • Implemented multiprogramming - a way of allocating physical memory frames so that multiple programs can be loaded into memory at once i.e Paging, a way of copying data to/from the kernel from/to the user's virtual address space

    • Modify the super market simulation so that it works fine with the new system calls in a multiprogramming environment

    Phase 3 :  Virtual Memory

    • Implemented software-management of Translation Lookaside Buffer, Inverted Page Table, Demand Paging and Virtual memory. Physical memory was limited to 32 pages which were allocated to each user program on demand. Page-replacement algorithm (FIFO, Random) was implemented to handle Page-faults

    • Super Market stimulation was modified and executed in this environment with each entity as a different user program

    • Implemented Remote Procedure Calls for the Locks, Condition Variables and Monitor Variables system calls, to prepare the system for Distributed environement

    Phase 4 :  Distributed Supermarket

    • Implemented a distributed system for allowing user programs i.e the entities of the SuperMarket Simulation across multiple Nachos clients to participate in a single Supermarket Simulation, without having to know whether any other user program is executing. A Server was implemented whose responsibility was to connect the various entities together. All User programs used RPCs. All client messages are to go to a Nachos server

    • Distributed Servers, up to 5 servers work together in a group. Each server can receive a request from any client. In fact, the client Nachos kernels are to randomly generate a server machine ID for each request message they send. Each of your servers will have their own lock, CV, and monitor variable table. Servers are to only store the locks/CVs/MVs that they create. This means that all the servers together will contain the entire loc/CV/MV state for the simulation. No server will have the complete state of the simulation

    • Extra Credit - Implemented an algorithm to determine which user program should receive ownership of a lock when the user program that had the lock has failed (terminated with a Control-C, or Exit system call, from the command line). Once the determination has been made, the server is to give the lock to the first waiting thread, or make the lock available if no thread is waiting

    What I learnt from this project :

    • Difference between processes and threads.
    • Issues and use of locks, semaphores and monitors for synchronizing multithreaded systems and implement them in multithreaded programs
    • Scheduling of user-level processes/threads
    • Design and implement multiprocessing in Nachos
    • Concepts of deadlock in operating systems and how they can be managed/avoided
    • Virtual memory management
    • Design and implementation of virtual memory management in Nachos
    • Design and implement improvements to the Nachos network system
    • Types of security problems faced by operating systems and how to minimize these problems
    • The organization and synchronization of distributed operating systems
    • Differences between multiprocessor and multicomputer configurations
    • Communication in distributed systems and how it can be used in remote procedure calls, remote objects and message-oriented communication
    • Organizing principles for distributed systems through election algorithms

  •   PROJECT 1 : Audio/Video Player & Video indexing

    Programming Language :  JAVA

    Group Size : 2

    My Role : Research about the possible metrics for indexing, Design Data Structures and Algorithms, Coding the extraction of Color and Sound metrics, Coding the search of relevant videos part, Debugging

      PROJECT 2 : DCT compression of Image

    Programming Language :  JAVA

    Group Size : 1

    Implemented a DCT based coder-decoder for compressing an image and simulated decoding using the baseline mode as well as progressive modes of data delivery. The program takes as input 4 parameters - InputImage, quantizationLevel (a factor that will decrease/increase compression), DeliveryMode(baseline delivery, progressive delivery using spectral selection, progressive delivery using successive bit approximation), Latency(a suggestive sleep time between data blocks during decoding to simulate decoding as data arrives across low and high band width communication networks).

      PROJECT 3 : Re-Sizable Image/Video Jigsaw puzzle in Java

    Programming Language :  JAVA

    Group Size : 1

    This project is to create a re-sizable image/video jigsaw puzzle. The program takes 3 arguments - xTiles(the number of tiles horizontally), yTiles(the number of tiles vertically), scale factor(size of the image scaled as per the original given image, defaults to 1.0 and is generally < 1.0). The following are the sub parts implemented to set up this puzzle:

    • Split Image in a set of tiles ? based on a user action of pressing a button
    • Initialize Puzzle ? based on a user action of pressing a button
    • Implement Reset functionality - based on a user action of pressing a button
    • Implement Interactivity to move tiles
    • Start playing!
    • Extend the puzzle to work with video
  •   Project 1  : Genetic Algorithm :  Estimated decryption of PCM format Image

    Programming Language :  Java

    Platform :  Nunki (SunOS machine at USC)

    Group Size : 1

    Genetic Algorithms are a way of solving problems by mimicking the process of natural evolution. In this project our aim is to use the GA concepts to produce a decrypted image from its encrypted image in an evolutionary fashion without knowing anything about the original image. There is no direct access to what is in that image however a piece of code is provided that accepts a proposed image from user and outputs a number which quantifies pixelwise similarity of the proposed image to the original image. Following the steps of evolution by GA, this program proceeds by doing following steps in order:

    • Create a random pool of population. A set of 2700 random images is created by randomly putting geometrical shapes like circle, triangle, rectangle and square on the 128 X 128 pixel grid.

    • Select the best candidates from this pool, called the elite class. Best is in terms of an image's fitness value which tells how far is this proposed solution from the actual decrypted image.

    • Perform crossovers to make generations of this best population. In every crossover of two random parents from the elite pool, two new children are produced each of which have some traits from one parent and others from the other parent.

    • On the newly produced child, some mutations are done, so as to make it different and probably better than parents, as per a fixed mutation rate (~0.2).

    • This new generation is added to the population pool and again Step 2 starts over. The fittest member is sent as proposed image and then this new population is iterated through the complete process again to find a better proposed image having better fitness than the old one, until either we reach perfect fitness which is the exact original image or some value of fitness (called Threshold) which makes the image clear enough to be perceptibly understandable. The former case is difficult to reach by a GA in admissible time periods but for the latter case a threshold fitness value can be decided which gives an enough clear image to understand what the content is. For this GA program threshold value is set to 180,000 (atmost 200,000 was expected) and this worked well for all the test images given

    Time and complexity analysis :

    The overall time complexity of this program in terms of size of original population pool, length and breadth of original image, and an approximated max number of iterations (which should not be more than the population size itself in this case) can be approximated as O(n2*l*h), and this is a clear indication that the program takes a lot of time to reach near to threshold (for this instance it took 9 hours to reach close to 180,000).

      Project 2  : Logical Agents & Expert Systems : 'Bulls & Cows' Logical Code-Breaking Game

    Programming Language :  CLIPS

    Platform :  Jess rule engine embedded in Eclipse Galileo

    Group Size : 1

    The purpose of this project is to learn about logical agents and expert systems by developing a software agent that can play a logical game against a human or another program using a rule engine, named Jess. Jess is a rule engine completely written in Java that implements the Rete algorithm for identifying the facts in the working memory (current valid facts) that match against user-defined patterns in the rules. In order to use Jess engine for the system, this application is written in the CLIPS language, a LISP- like scripting language.

    In this game, a code breaker plays against a code holder. The code holder keeps in mind a non-repeating string of characters, from a given alphabet (such as the digits 0-9), that is originally unknown to the code breaker. The code breaker knows the length of the string in advance. The code breaker and the code holder communicate according to this protocol: each time the code breaker proposes a string of characters to the code holder, the code holder provides two numbers as feedback, the green number and the blue number. The green number is the number of characters that are in their right place in the string and the blue number is the number of characters that belong in the string but do not appear in their right places. And the code breaker's job is to determine the secret code from the given clues in as few steps as possible.

    My assignment was to write a code-breaker program in the Jess language that can play against either a human, through the command line, or against a Java program that was provided as binary file in the prohect description and should be able to break codes of decimal digits of length 3 or 4. To attain this a numner of Directive rules, Drawing rules and Inference rules, Queries, Templates and Functions were written both for 3-digit and 4-digit codes in CLIPS.

    One metric for measuring the performance of this algorithm is the point at which the performance graph touches the 100% line for a given code length. The baseline for solutions of 3-digit and 4-digit secret codes was expected to be 40 and 80 steps, respectively. And my algorithm attained baseline of 18 and 34 respectively for 3-digit and 4-digit codes.

      Project 3 : Adversarial Search : 'Fruit Rage' Game - Modified alpha-beta algorithm

    Programming Language :  JAVA

    Group Size : 1

    The Fruit Rage is a two player game in which each player tries to maximize her/his share from a batch of fruits randomly placed in a box. The box is divided into cells and each cell is either empty or filled with a fruit of a specific type. In the beginning of each game, all cells are filled with fruits. Players play their turn consecutively. Players pick a cell of the box in their own turn and claim all fruit of the same type in all cells that are connected to selected cell through horizontal and vertical paths. For each selection or move the agent is rewarded a numeric value which is the squared value of the number of fruits claimed in that move. The total gain during the course of game playing is simply the sum of movement gains. Once an agent picks the fruits from the cells, their empty place will be filled with other fruits on top of them. Another big constraint of this game is that every agent has a strict limitation on their total CPU time used during the course of the game playing. Using a total CPU time beyond the limit will be punished harshly. My task was writing a software agent in Java , that is able to play smarter than a greedy agent. In addition to a game engine we were provided with the implementation of two agents : GreedyPlayer and RandomPlayer. 10 seconds of CPU time was given for each round of the game. My player achieved over 99% of success rate over the greedy player. My player works on the following algorithm:

    • My Player finds the best possible move it can make in current state and stores it in a variable but doesn't return it yet.
    • Then it calculates the changed state of the game board.
    • In the changed state it finds the best move that Greedy will play (we can find that very easily by calculating the move that yields the maximum no. of fruits).
    • Then it calculates the gain of its score over greedy's score considering its current move and greedy's move after its current move.
    • If that gain is positive, returns that move.
    • Else, it again calculates the changed state of the game board and finds what best move it can make.
    • Again it changes the state of game board and finds the best move that Greedy will play now.
    • Then finds the sum of its score in these two successive moves and that of the greedy.
    • If it is cumulative score is more than that of greedy, returns that first move it started from.
    • Else that node is removed from the scoreMap (the Hash List of all the possible moves my player can make), and goes to Step 1. But this is done only till 4 top best moves. And after that the first best move is returned.

    •   Project 4 : Search & Path Planning : Parallel BFS for path planning & A* Search for finding optimal path

      Programming Language :  C++

      Group Size : 1

      This project aims at finding solution to Path Planning Problem. It won't be an overstatement to say that this project is part of a more sophisticated project, Mars exploration mission. The goal of this mission is sending a sophisticated mobile lab to the Mars to study the surface of the planet more closely. And here we are solving two problems related to the navigation of the rover on surface of the planet: a.) develop algorithm for finding landing site, b.) then finding the optimal path for the navigation of the rover based on a particular objective. For simplicity, the mission site is taken as input in form of a topographical map with information about intended target locations. And it's a 3-D space using a mesh-grid with a Z value assigned to each cell identifying the elevation of the planet at the location of the cell. There is a bunch of Target sites, identified by the field experts in advance, which include those locations that look promising for gaining knowledge about the history of the planet.

      Phase 1 : Search for the optimal landing site - Parallel BFS Angorithm

      The mission starts with finding the best site to land our Rover. Measure for the optimal solution is: it's a location which has the shortest equal operational distance from all target locations on the surface of the planet. I implemented Parallel BFS Algorithm here using a single Priority Queue to store all the children of different nodes expanded simultaneously one by one. By doing this the Algorithm is making sure that search around one of targets is not expanding faster than others and in fact everything is expanding with the same pace away from target locations. The Algorithm terminates when it finds a node which has been expanded by all the targets at some point of time. This node is the Optimal Landing site because every target got the equal opportunity to expand that node and thus the operational distance of that node from all the targets is nearly equal.

      Phase 2 : Finding Optimal Path between target and the optimal landing site - A* Algorithm

      Cost Function - The best estimate of cost is the distance travelled so far and the maximum slope covered. Since, in our mission we are very much concerned about the slope of the path taken, the weigh factor for change in maximum slope should be as high such that the longest path with a lower slope has less cost than that tiny change in max slope. That means, taking a step which is even slightly steeper than what is previously seen should add a huge value to the cost. Then it is safe to assume that a minimum change in the max slope should cost at least as much as the length of the longest path. And the length of the longest path can be determined by the longest straight line distance between upper most left cell to the bottom most right cell which will be Rows * Columns.
      Heuristic Function - For a Node N, the best heuristic will be the distance left between it and the Goal node. So, its h value is just the Euclidian distance left between it and the Goal.
      By choosing such a heuristic function and cost function, the program is making sure that when the lowest cost node, with lowest F(N) = g(N) + h(N) is popped out it has high chances of being a potential cell on the optimal path between START and the GOAL.

  •   Project 1 : Android Facebook Application : GetTravelInfo!

    Programming Language : HTML, XML, DOM, CSS

    Platform :  Android SDK

    Group Size : 1

    HTML, CSS, DOM, XMLHttpRequest, Java Servlets, AJAX, REST, JSON, Perl & XML used altogether in an Android Application to extract hotel search results from tripadvisor.com and display in application's GUI. The results from server are passed in JSON format at the client. The results are displayed in a list form and the user can make a post about a selected hotel on his facebook wall.

      Project 2 : XML-DOM Parser to parse an XML document

    Programming Language : HTML, XML, DOM, CSS

    Group Size : 1

    This as an HTML/JavaScript program, which takes the URL of an XML document containing two types of information, parses the XML file as a DOM structure, and displays the data as two separate tables in an HTML web page. The XML file will contain data on: 1. teams from the National Basketball Association (NBA), and 2. teams from the English Premier League.

  •   PROJECT 1 : Maze and Sudoku Generation and Solution

    Programming Language :  C++

    Platform :  Nunki (SunOS machine at USC)

    Group Size : 1

    • Implemented Union and find algorithm to create a Maze and applied BFS and Dijkstra's Algorithm to solve TYPE-1 and Type-2 Maze.

    • Implemented Random number generator with Double circular linked list to create Sudoku and applied Brute force algorithm to solve it.

    •   PROJECT 2 : Doubly-Linked Circular List

      Programming Language :  C++

      Platform :  Nunki (SunOS machine at USC)

      Group Size : 1

      • Done Sorting with the help of Double Circular Linked List for list of bank transactions.

      • Displaying a directory tree in a text-based tree list.
  •   PROJECT : UNIX Socket Programming ( Instant Messaging System )

    Programming Language :  C

    Platform :  Nunki (SunOS machine at USC)

    Group Size : 1

    This project deals with simulating an instant messaging system. After authentication with a LogIn server, the users can exchange instant text messages through a SuperNode. All communications take place over TCP and UDP sockets in client-server architecture.
    The project has 3 major phases: User authentication, activation of SuperNode, instant messaging between users.

    Phase 1 :  User authentication

    In this phase, the LogIn server and the users will open their password files. The LogIn server will load the matching usernames and passwords and the users will load their respective username and password. Now the LogIn server will open a static TCP socket where each user will try to establish a TCP connection to the server and try to login. For the login process each user will send its username password through a dynamic TCP port. The server will check to see if this username/password combination is a valid match and will reply Accepted or Rejected accordingly. Upon acceptance the server will save the IP address of the accepted user and will bind it to its username for future reference. It will also send a reply packet to the user containing the IP address and the port number of the SuperNode. If the user is rejected then it will remain idle and disregarded from that point onwards. After the exchange of messages is completed the server will close the TCP connection to each user.

    Phase 2 :  Activation of SuperNode

    In this phase, the LogIn server will send the usernames and their corresponding IP addresses of logged-in users through a dynamic TCP port to the SuperNode which is listening on a static TCP port.

    Phase 3 :  Instant Messaging between users

    In this phase, the users communicate with each other through UDP with the SuperNode acting as a relay. The SuperNode will parse the message from User1 to figure out which user this message is destined to and sends out a UDP packet containing the chat message to its static UDP port number. Each user will send all its chat messages to the single UDP port on which the SuperNode is listening.

    What I learnt from this project:

    • Communication over UNIX TCP Sockets
    • Communication over UNIX UDP Sockets
    • Client-Server architecture principles

  •   PROJECT 1 : Spatial DB Application

    Programming Language :  JAVA

    Platform : Oracle 11g Spatial features, Java Swings, JDBC Connectivity, SQL Queries

    Group Size : 1

    The goal of this project is to leverage the mobile users to collect and share data (temperature, pressure etc) from a set of particular locations (we call these DC-points). GUI shows map of Los Angeles with DC-Points and Users marked with different colors and geometric figures. There are options to extract and show resultd for three different spatial queries:

    For Nearest Neighbor query:

    At a given location, this query finds the closest DC-points and the closest users to that location. There's an input text field that takes the input k (number of nearest objects we want to retrieve). Clicking on each object displays its info in the left side of the GUI.

    For Range query:

    To find all the DC-points/users in a range. By selecting a rectangular region, and one or both of the features, this query returns all objects that are inside (or intersect with) the selected box. Clicking on each object displays its info in the left side of the GUI.

    Find Assigning DC-points

    Click on any user u, this query finds all the DC-points that are closer to u than to any other users. The query uses the DC-point?s required sensor data to find all the matching DC-points and only retrieve those that are closer to this user than to any other matching users. Clicking on the DC-point icon shows its information on the left text box.

    Find Relevant Users

    Click on any DC-point icon, this query finds the closest users to the DC-point which have the required matching sensors. The number of required users is entered as the number k in the input text field. The resulting users appear on the map ranked based on their (Euclidean) distance to the DC-point?s location, all drawn with a different color on the map. Also, a ranking number assigned to each user, and displayed next to the icon. Clicking on each displays the info on the left side.

      PROJECT 2 : Movies DB in XML

    Programming Language :  XML, HTML

    Platform : XMLSpy, XQuery

    Group Size : 1

    The goal of this assignment is to design an XML Schema, XML Stylesheet and use Xquery to query on XML data. Input is a Movies Database with attributes like Movie ID, Title, Director, Writer, Genre, Release Date, Runtime and a Reviews Database with attributes like Review Number, Movie Title, Rating, Reviewer, Review date, Review Description. XML Schema is designed for this data, then a valid XML data file is created, then an XSL style file is created to display the data in a tabular format on browsers. Finally, XQuery is used to answer queries like:
    1. Display reviewer names who reviewed a movie which has more than 90min runtime and released after Aug. Results sorted by the reviewer name in a descending order.
    2. Display the title of movies for each director.
    3. Display the total number of reviews for each director. (Ascending order)
    4. Display the movie ID of the movies which reviewed in Sep.
    5. Display the average review rating for each movie.
    Sort the result by the average review rating in a descending order. (i.e. movie title with highest average review rating first.)
    6. Display the movie title and director which has ratings > 3.

   Contact Me

Say Hello To    Shallin

Social Presence:



Phone:    +1 (213) 880 5036
Email:     shallins@usc.edu , shallin.partap@gmail.com
Address:  2353 Portland Street Apt# 20
              Los Angeles, CA - 90007

Road Map: