## Other projects

## CynosureEncapsulated by the sentence "Powerful Java application to simplify and enrich the teaching and learning of Graph theory", Cynosure was the product of the 2nd year undergraduate unit
Software Product Engineering. Completed in a group of 6, I fulfilled the role of Lead graphics developer, entailing the design, implementation, integration and maintenance of the GUI and front end.The application was designed to give context to a selection of Graph algorithms, providing step-by-step instructions applicable to any user-defined graph. The interface aims to be as intuitive as possible with a simple tool set consisting of a node and edge tool, providing sufficient functionality for any form of graph. The final Java application implemented step-by-step instructions for the following Graph algorithms/problems: - Prim's algorithm - Kruskal's algorithm - Dijkstra's algorithm - Chinese Postman - Eulerian Path - Maximum Flow - Minimum Cut - Maximum Clique Mark received: 1st (70%) |

## Sparse Matrix multiplicationDefined as "a matrix primarily populated with zeros", 2nd year unit
Data Structures & Algorithms required us to individually develop a C program for sparse single/chain matrix multiplication focused around performance and efficiency. Developped in Apple's Xcode, the final program was able to multiply two 32,770 x 32,770 sparse matrices in just 0.6 seconds using a list of lists data structure taking advantage of matrix transposition. I also implemented the recursive Strassen algorithm using parallelisation library OpenMP, however it was found that the performance was not sufficiently quick for sparse matrix multiplication.Mark received: 1st (98%) |

## Fast Fourier tansform2nd year unit
Data Structures & Algorithms, required us to individually develop a Java program to perform string matching with wildcard characters in O(nlogm) time where n, m denote the text length and pattern length respectively using the Fast Fourier transform. This was achieved by first converting the strings to an integer array of ASCII characters, padding the pattern to match the text length, computing the forward FFT of both integer arrays, multiplying them in the frequency domain, computing the inverse FFT and finally using those values to satisfy a summation that equates to 0 at a correctly matching string index (full documentation shown in report below).Mark received: 1st (80%) |