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)
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