empty image

Daniel Morrison PhD, MComp

Software Engineer and Computer Scientist

Hello! I am a software engineer with a strong academic background. From 2007-2017, I was at the University of Leicester. I completed a 1st class with honours master's degree (MComp) in Computer Science. In March 2017 I completed my doctoral studies and achieved a PhD. During my time at the University of Leicester, I authored several publications. These can be found on the relevant page of this site.

After working in acadaemia for so many years, I decided to further my career via industry. Since May 2017, I have been working as a software engineer for Matrix Technology Solutions Ltd. in Halifax, West Yorkshire.

I have experience with several different programming paradigms. This includes imperative programming langauges (including Object-oriented in the form of Java, C++), functional programming and logic programming. I also have some experience with graphical APIs (more specifically OpenGL and Java3D).

This site was developed by myself using both client-side Javascript (with JQuery/AJAX functionality) and server-side Javascript (using Node.js), running on a self-hosted server. If you like this website, you can find it on Github and should easily be able to adapt it to your needs. Please follow the link on the top-right.

If you would like to contact me, then my email address can be found on the top-right. For security and privacy, other contact details (such as phone) are provided on request. You can also find a direct link to my LinkedIn profile on the top-right.

Software technologies encountered: [-]
Java (desktop applications using Swing, Java Applets and Servlets, Java RMI, Java2D and Java3D, Java Native Interface), C/C++, MFC, Python, x86 assembly, OpenGL and JOGL (Java bindings for OpenGL), LaTeX, Linux bash, Linux/Unix firewall management, Git, Mercurial (hg), USB debugging, Javascript (client and server-side), Node.js, HTML/CSS, XML, PHP, SQL, Prolog (logic programming), Haskell (functional programming), Matlab.

Theoretical knowledge: [-]
Computational theory, algorithm complexity, formal logic (predicate, propositional and temporal), Petri Nets, process calculi and other models of communication and concurrency, database theory, automata theory, cellular automata, asynchronous circuits and systems, operating system behaviour, low-level networking, logic circuits, compression, multimedia manipulation, distributed computing, software engineering practices and software project management.

Workplace skills: [-]
Integrating new technologies into existing systems, formal writing, presenting to large groups, development of marketing materials and documentation, delivering customer and staff training, adhering to coding standards and ensuring licensing conformity.