Past Projects

This page showcases past projects created throughout my college life, career and spare time.

Salu.pro

Salu is a contact manager designed for the professional. Salu the name stands for “salutations” and it means “cheers” in Spanish. I worked on the back-end specifically the database. we chose a NoSQL database because it is the most recent database and it had the lower learning curve compared to a SQL database.


Keyper

Keyper is a password manager designed for the professional. Keyper is pun on “a keeper of keys”. I work on the Android App specifically the front end. I built the Search toolbar, Login page and also designed the Home page.


Link below for Past Projects Source code

https://drive.google.com/drive/folders/1ThGwQS6BXVZKMQaKISNFMAqMuW9Y0HVy?usp=sharing

C – Programming HW1 – “Extracting Data from a CSV file”

This assignment is on extraction, transformation, and loading (ETL). The data I used and extracted was leading aviation industry data from a consulting firm, GCR. The data’s format are CSV files, where each element is separated from the previous and following elements by using a comma. First, I read a CSV file into a file pointer and load in the CSV file into a buffer string. Secondly, I allocate memory for the struct array called “airport”, its elements and temporary strings, “trash” and “tempCtrlTower”. Thirdly, I use strsep, to separate the buffer into the corresponding pointer apart of the airport struct array like “airport->city”. Lastly, I print airport’s contents in a loop then free all the memory for the temporary string, airport contents and then airport itself.


C – Programming HW3 – “Data extraction, conversion, filter, sort, and build a CSV file output”

This assignment is a continuation of ETL with two additional steps. Firstly, convert the input file’s latitude and longitude coordinates from sexagesimal (base 60) degrees to decimal degrees. Secondly, make the outputs in the form: sign, degrees, and decimal fractions to represent the same value. This assignment has two more additional requirements. Firstly, sort the air-ports alphabetically. Secondly, sort the airports from south to north, all the while flying over land to each airport.

First, extract the plain-text file with a file pointer and load into a buffer string. Secondly, parse the the every line in the buffer to a airPdata struct pointer called airport. Thirdly, I begin to make the path from south to north by making a copy of airport called airportcopy. With airportcopy, I re-load the buffer and parse each line from it to the airportcopy. Fourthly, it checks for the most south airport inside of airport copy declares it the head of the list, and then it continues to check for the next most south airport. Fifthly, It sorts by parameter from the command lines last entry by either latitude or LocID. Then after sorting by parameter, it prints the list of airports and frees all the contents in airportcopy, then airportcopy itself.


Java – TopoPath

In this assignment, for any random directed graph I had to check for a valid topopath – a valid path in the graph and a valid topological sort. Firstly, I read in a directed graph via a plain-text file into a 2D array. Secondly, I grab all the vertices in an array called “incoming” and I put all the vertices with an in-degree of zero in a queue called “vertices”. Thirdly, I do a topological sort on vertices. Fourthly, I add all the vertices in a queue called “queueXQueue”. Fifthly, I do a Breadth First Search (BFS) from the first node till the last node and if true, return true. Lastly, Using the incoming array check for more than 3 leaf nodes in the graph, if true then return false.


Java – ConstrainedTopoSort

In this assignment, for any random directed graph I had to check for a valid Topological sort in which a vertex, x, comes before a vertex,y. Firstly, I read in a directed graph via a plain-text file into a 2D array. Also, defined vertex X and vertex Y. Secondly, I grab all the vertices in an array called “incoming” and I put all the vertices with an in-degree of zero in a queue called “vertices”. Thirdly, I do a topological sort on vertices. Fourthly, I do a Breadth First Search (BFS) starting from X to see if Y is a child of X and if true, return true. Lastly, I do a BFS starting from Y to see if X is a child of Y and if true, return false. Otherwise, return true.


Java – RunLikeHell

In this assignment, there are blocks with values that are ordered from left to right and are represented as an array of positive integers. For example, this array is expected:

int [] blocks = {15, 3, 6, 17, 2, 1, 20}

The goal is to write a Dynamic Programming (DP) algorithm that will determine the maximum knowledge gain for any random chain of blocks.

Firstly, I created base cases that are: if the blocks array is empty or the length of blocks reaches zero; return zero to signify its empty. Also, a base case for one element in blocks, return the first element in blocks. Secondly, I declare an array called matrix and store the first two blocks in it. Thirdly, matrix catches the rest of the blocks and it compares the first two blocks to see which is bigger. all comparisons are of the two kinds of traversals which are, skipping one or two blocks. Lastly, it returns the maximum amount of knowledge of these two traversals.