Master of Science in Computer Science, Distributed Systems Track
September 2016 to September 2019
York, United Kingdom
Master of Engineering (Hons) in Electronic Engineering, 1st class
October 2010 to June 2014
International Baccalaureate Diploma, score: 34
September 2005 to May 2010
September 2018 to present
Continuation of the internship work part-time alongside university studies. Tasks include further implementation of integration tests and merge of implemented features to upstream common codebase.
March 2018 to August 2018
Worked on a C++ simulator engine to support the development and testing of control software for medium voltage drives. Tasks included the implementation of a medium voltage converter topology model, graphicaluser interface for debugging and support for automated integration tests.
August 2015 to present
As a trainee in Syngenta's Project, Program and Portfolio Management Excellence team I worked primarily on administrating and further developing the team's SharePoint communication sites and teamspaces. I also provided support in several meetings and assisted with SmartChoice data input tasks.
My secondary role was to observe the processes and practices followed by the other team members and use my IT and engineering knowledge to optimise them where possible. With that in mind I developed several macros for automating routine data manipulation tasks and made suggestions for tool improvements. I also took the initiative to document the details and results of my work in detail so that it can be easily resumed in the future.
After the end of my 1-year traineeship I was contracted part-time to provide sporadic technical support to the team on a need-basis.
Freiburg im Breisgau, Germany
July to September 2010
During this summer internship I produced a literature survey of solar cell imaging methods, and then performed photoluminescence imaging and resistivity measurements in order to determine the characteristics of various experimental types of photovoltaic solar cells. As a scientific research institution, the ISE was a rather different environment than the one I was used to (school) and that gave me good insight into how research is done in the real world.
Designed and implemented a direct-mapped, write-back, parameterised data cache for a pipelined MIPS microarchitecture in Verilog. The implementation reduced the number of pipeline stalls due to memory accesses thereby improving performance.
Developed the Android version of a completely distributed, offline and cross-platform application for tracking IOUs. The application uses blockchains to ensure integrity and a two-way QR-code protocol for exchanging information between phones without an internet connection.
Distributed Systems Lab
Implemented an ONOS app in Java to interface with an experimental, differential dataflow routing algorithm written in Rust. Benchmarked the system relative to a baseline app to determine scalability and performance characteristics.
Advanced Computer Networks
Implemented a web server that speeds up HTTP requests by configuring the network adapter to access memory directly. Developed in Java using the DiSNI library, including a proxy client for testing.
Developed an agent-based model in Java to generate crime heatmaps for a given map based on lighting information and individual agent characteristics.
Advanced Operating Systems
Implemented core functionality around the Barrelfish exokernel including memory management, process spawning, inter-process communication and multi-core support. Developed on an ARM Cortex-A9 Pandaboard in C and ARM assembly.
Advanced Systems Lab
Developed a Java middleware application for load balancing requests across multiple memcached instances. Extensively analysed the performance and scalability of the system under varying loads, including automated experiments with multiple VMs and queueing theory models.
Developed JCGP, an extensible, object-oriented Java implementation of Julian Miller's Cartesian Genetic Programming library, including a graphical user interface in JavaFX. The final product underwent user acceptance tests and is thoroughly documented.
Systems Programming for ARM
Extended a base OS with preemptive scheduling, a multilevel feedback queue scheduler and other features such as mutexes and the sleep function, in C and ARM assembly.
Software Engineering Project
Designed and implemented a campus companion application in Java consisting of maps for navigating new students and informational slideshows. The project was carried out over 6 months and entailed software engineering practices and concepts such as design patterns, unit testing, version control and code reviews.
Design and Construction
Worked as part of a team to design and build a digital multimeter. Features included voltage, current and resistance measurements, as well as audio feedback for overvoltage and overcurrent protections and a frequency probe.
Further Digital Electronics
Developed a parameterisable matrix multiplier in VHDL, including testbenches for all subcomponents. The design was synthesised and implemented on a Xilinx Spartan-6 FPGA.
Genetic drift is an important aspect of Cartesian Genetic Programming, setting it apart from other genetic programming methods. As part of the biologically inspired computing course I attended in university, I investigated the neutral mutations which give rise to genetic drift by implementing variations of an explicitly neutral mutation operator. I produced a paper detailing the experiment and its results, which can be found here.