1st Year
2nd Year
3rd Year
4th Year
5th Year

Skills

Some of the skills I've gained throughout my degree (and throughout my personal projects).

  • API Experience
  • Linux (Ubuntu) Experience
  • Group & Pair Programming Experience
  • Object-Oriented Design Patterns
  • Unified Modelling Language (UML)
Communication ⬤ ⬤ ⬤ ⬤ 〇 Attention to detail ⬤ ⬤ ⬤ ⬤ Creativity ⬤ ⬤ ⬤ 〇 〇 Time management ⬤ ⬤ ⬤ ⬤ ⬤ Organisation ⬤ ⬤ ⬤ ⬤ 〇 Problem solving ⬤ ⬤ ⬤ ⬤ 〇

Awards

The following are a list of my awards which I have received throughout my studies at Strathclyde University.

Programming Languages

Java
HTML & CSS
Bootstrap
PHP
Javascript
Python
Haskell
C

Projects

Atomas is a mobile game developed by Sirnic Games and is available on both iOS and Android platforms.

More information on how Atomas is played along with associated rules of the game can be found on the Atomas Wiki.

Language(s): Java

Personal project aimed at deploying a web application to provide online marketplace sellers a quick and effective means to calculate fees and profits when selling online. Developed using Git version control and docker container. This project has been published using the CloudFlare network.

Language(s): HTML, CSS, JavaScript

Ongoing project, working with a local engineering organisation to provde their clients with an online portal to access and download their technical documentations. Due to limitations of current processes, the new system must provide a safe and secure means to allow their clients access to sensitive documentation.

Project involved capturing requirements through limitation of current processes. Further prototyping and developing a web application.

As well as learning new web technologies, I learned vital skills surrounding group management, leading a team, delegating tasks, and working to key deadlines.

This project involves Angular (frontend) and ExpressJS (backend).

Language(s): HTML, CSS, Angular, ExpressJS

Module Classes

Introduction into computation and computational systems, through computable functions, formal languages, recursion, logic and computability, and abstract machines.

  • Computable & Non-Computable Functions
  • Recursion & Languages
  • Logic & Computability
  • Abstract Machines

Information systems and how information (data) can be created, used, and transmitted.

  • What is information?
  • Information Systems
  • Techniques and issues in information creation
  • Information Security
  • Underlying technologies used by popular search engines

Programming module which is primarily based upon introducing the foundations of a high level programming language. Focused on designing, building, and testing small scale systems in Java.

  • Object-Oriented Programming
  • Use of Integrated Development Environments (IDE's) e.g. Eclipse/IntelliJ
  • Working on small scale projects
  • GUI Applications

Introducing the underlying components of a computer system, from both perspectives - software and hardware, also how computer systems interact and manipulate data.

  • Data representation
  • Compression - Huffman coding
  • Function of computer components (logic gates)
  • Working on small scale projects
  • Information Security
  • Underlying technologies used by popular search engines

Intoduction into Abstract Data Types - lists, stacks, queues, hash tables, and trees.

  • Common search algorithms
  • Building small systems as part of a team
  • Implementing Unit Testing
  • UML Diagrams

Building on CS103 to further develop understanding of mathematical foundations of computation

  • Propositional Logic
  • Predicate Logic
  • Relations - using simple logic programming (Prolog)
  • Algorithms and Time Complexity

Understanding Human Computer Interaction (HCI)

  • Designing for human tasks
  • Evaluation of design
  • Modelling User Requirements

Exploring typical computer architecture

  • Exploring role and use of compilers
  • Instruction Sets (MIPS)

Uncovering legal, social, ethical and professional issues in Computing Science

  • Impact of Cybercrime
  • Laws governing computer use

Introduction into combinatorics of discrete objects in theoretical computer science

  • Graph Theory - definitions and concepts - walks, paths, cycles, types of graphs
  • Graph Theory Algorithms - Kruskal's Algorithm

This module involves substantial group work, designing and implementing non-trivial systems given a list of requriements.

  • Planning & managing group workload
  • Java based software implementation
  • Employing Git version control system to track versions and issues

Foundations of Artifical Intelligence, uncovering common problems faced in the AI field and common approaches to overcome these problems.

  • Intelligent agents
  • Search Algorithms
  • AI within stochastic games (2048)

Understanding and implementing internet-applications.

  • Client-side technologies
  • Server-side technologies
  • Integration with databases

Understanding highly concurrent hardware and software systems.

  • concepts of software and hardware design for multiprocessing, OS process and thread models, process and thread scheduling, and inter-process communication
  • Designing and implementing multi-processor systems
  • Understand the issues and problems with synchronisation

Developing skills of using functional programming

  • High-level programming languages
  • Using mathematical structure to structure programming
  • Commly used functional programming design

Discover issues surrounding mobile app development, further exploring and developing a mobile application.

  • Programming using web APIs
  • Understanding web based mobile application programming
  • Discover 2D and 3D graphics appropriate for mobile use

Introduction into computer security

  • Secure communication solutions
  • Evaluating existing systems for vulnerabilities
  • Key vulnerabilities

Uncovering challenges of advanced sofwtare design and issues associated with large-scale software architectures

  • Challenges of designing systems
  • Using object-oriented language to uncover commonly used design techniques (strategy, factory method, ... )
  • Design Patterns

Information access and information mining.

  • Information mining - detecting patterns within data
  • Machine Learning programming

Understanding the impact of cybercrime and methods used to detect cybercrime

  • Varieties of cybercrime
  • Use of digital evidence
  • Nature of anti-forensics impact on digital evidence gathering

Key aspects of current software engineering research.

  • Using research papers to aid in implementing a variety of algorithms
  • Utilising Genetic Algorithms for Test Data Generation problems

Develop an understanding of the design and evaluation process within software engineering.

  • Going from concept to a polished prototype
  • Uncovering barries for accessibility for users
  • Producing low-fidelity and high-fidelity prototypes using the User Centered Design (UCD) process