Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Sunday, 2 November 2025

MSc Information Technology at the University of Liverpool (2001–2003)

My Academic Journey in MSc Information Technology at the University of Liverpool (2001–2003)

From scientific structure to digital transformation - a journey of connecting how nature organises matter to how humanity organises information.

The University of Liverpool crest: featuring three liver birds
and the motto “Fiat Lux,” symbolising knowledge, discovery, and illumination.
  

Introduction

This is the second part of my Academic Journey series, tracing the evolution of my studies from Molecular Biophysics to my later postgraduate work in Information Technology and academic leadership. Each stage represents a different dimension of lifelong learning and intellectual curiosity - a continual dialogue between structure, energy, and information.

From 2001 and 2003, I studied for an MSc in Information Technology at the University of Liverpool - a transformative experience that marked my transition from the world of scientific analysis to the world of digital systems, networks, and innovation.

Where Molecular Biophysics explored the structure of matter, the MSc in Information Technology explored the structure of systems. Both demanded analytical precision, problem-solving, and curiosity - qualities that continue to define my professional outlook today.


Course Structure

Year 1 - Foundations of Computer Systems Architecture

Computer Structures (11 Oct 2001 to 6 Dec 2001)
Database Management (21 Mar 2002 to 16 May 2002)
Object Oriented Programming Using C++ (30 May 2002 - 25 Jul 2002)
Programming the Internet (9 Jan 2003 - 6 Mar 2003)

Year 2 - Software Development, Networking and Security

Software Engineering (20 Mar 2003 to 15 May 2003)
Security Engineering (29 May 2003 to 24 Jul 2003)
Ecommerce (7 Aug 2003 to 1 Oct 2003)
Operating System Concepts (Oct to Dec 2003)

Year 1 – Foundations of Computing and Systems Architecture

The first year established the essential building blocks of modern computing.

Computer Structures introduced the architecture of digital systems — processor organisation, instruction sets, memory hierarchy, and peripheral management. Working in both Windows and UNIX environments, I gained insight into how hardware and software interact to achieve performance and stability (Stroud, 2001; Kernighan and Ritchie, 1988).

In Database Management, I explored relational theory, normalisation, and query optimisation using SQL. Through entity–relationship modelling and relational algebra, I developed a conceptual understanding of data integrity and structure (Codd, 1970).

Object-Oriented Programming in C++ introduced the principles of encapsulation, inheritance, and polymorphism through practical, real-world simulations. Using Borland C++ Builder and Visual Studio, I developed modular programs such as a lift control system, which demonstrated object interactions and state transitions, and a basic chess engine, which modelled logic, strategy, and rule-based decision-making. These projects strengthened my understanding of design patterns, algorithmic thinking, and abstraction — skills that remain fundamental in data analytics, software engineering, and the architecture of intelligent systems (Booch, 1994).

Year 2 – Software Development, Networking, and Security

The second year expanded from foundations to integration — connecting software development, networking, and information security.

Programming the Internet combined HTML, CSS, JavaScript, and PHP, alongside protocols such as HTTP and TCP/IP. Projects focused on dynamic web systems and database connectivity, illustrating the early principles of today’s full-stack development (Tanenbaum, 2003).

Software Engineering introduced structured and iterative development methodologies — from Waterfall and Spiral to emerging Agile approaches. Using UML modelling and design documentation, I learned systematic approaches to requirements specification, validation, and maintenance (Pressman, 2001).

Security Engineering explored the foundations of secure information systems, including cryptographic algorithms (RSA, DES), firewalls, and intrusion detection systems (IDS). The course aligned with the ISO/IEC 17799 (2000) framework, introducing risk management and policy formation (Schneier, 1996; ISO/IEC, 2000).

In E-Commerce Applications, I investigated how online systems could support digital transactions through SSL, XML, and database integration - examining the technical, ethical, and commercial implications of the emerging digital economy.

Finally, Operating System Concepts tied these strands together, exploring process scheduling, memory management, file systems, and security architectures across Windows, Linux, and Mac OS environments (Silberschatz et al., 2001).

Final Dissertation – Developing a Quality Assurance System

The degree culminated in a researched work-based dissertation titled “Developing a Quality Assurance System within a Social Care Department Using an IT Solution.”

This project integrated system analysis, software development, and organisational insight. Following the Software Development Life Cycle (SDLC), I designed and implemented a prototype information system that streamlined workflow, reporting, and compliance monitoring in a public-sector (local government) setting.

It demonstrated how technology, when thoughtfully applied, could enhance transparency, collaboration, and decision-making - principles that continue to guide my educational and professional philosophy.

Integration and Academic Continuity

The MSc in Information Technology represented more than a shift in discipline - it was a continuation of the same curiosity that guided my scientific studies at Leeds.

Both undergraduate and postgraduate degrees explored systems - one molecular, the other digital.  Both required clarity, structure, and an understanding of how small components form complex wholes.

Together, they form two halves of one intellectual journey: from understanding how nature organises information to designing how humans process it.

Reflections and Continuing Influence

The MSc in Information Technology deepened my technical expertise and shaped my professional identity as an educator, technologist, and leader.
It reinforced the idea that technology achieves its highest purpose when it supports learning, ethical innovation, and human development.

Today, as an academic leader, I continue to apply those lessons — integrating data-driven thinking, responsible innovation, and cross-disciplinary collaboration into every programme or module I help design or teach.

“Information Technology is not just about what we build, it is about how it helps us understand and improve the world around us.”


Graduation Day - 28th January 2005
 


Glossary of Key Terms

Abstraction – A fundamental concept in computer science and software engineering that involves simplifying complex systems by focusing on essential features while hiding unnecessary details. In programming, abstraction allows developers to manage complexity by creating models, classes, or interfaces that represent real-world entities without exposing internal implementation details.

Agile Development – A flexible software development methodology emphasising iterative progress, collaboration, and customer feedback.

Algorithm – A sequence of logical steps or instructions used to solve a problem or perform a computation.

API (Application Programming Interface) – A set of rules that allows one software program to communicate with another.

C++ – A high-level programming language that supports object-oriented programming concepts such as encapsulation, inheritance, and polymorphism.

Database Management System (DBMS) – Software used to store, organise, and manage structured data efficiently (e.g., MySQL, Microsoft Access). see also RDBMS.

Encapsulation – In object-oriented programming, the practice of bundling data and methods that operate on that data into a single unit or class.

Encryption – The process of converting data into a coded format to prevent unauthorised access, ensuring confidentiality and security.

ERD (Entity–Relationship Diagram) – A graphical representation of data and their relationships within a database system. ERDs use entities (tables), attributes (fields), and relationships (links) to visualise database structure, aiding in the design and normalisation of relational databases.

Firewall – A network security system that monitors and controls incoming and outgoing traffic based on predefined security rules.

Four Pillars of Object-Oriented Programming (OOP) – The four foundational principles that underpin object-oriented design and development:

  1. Encapsulation – Bundling data and the methods that operate on that data within a single unit (class).

  2. Abstraction – Hiding complex implementation details while exposing only essential functionality.

  3. Inheritance – Allowing new classes to derive properties and behaviours from existing ones.

  4. Polymorphism – Enabling objects to take on multiple forms through a shared interface, promoting flexibility and code reuse.

HTML (HyperText Markup Language) – The standard language for creating and structuring web pages.

Inheritance – A core concept in object-oriented programming where one class derives attributes and behaviours from another.

ISO/IEC 17799 – A 2000 international standard providing best practices for information security management.

Operating System (OS) – Software that manages computer hardware and software resources and provides common services for programs (e.g., Windows, UNIX, Linux).

Polymorphism – The ability of different classes to be treated as instances of the same class through a common interface, allowing flexibility in code design.

Private Key – In cryptography, a secret key used in asymmetric encryption algorithms that must be kept confidential by its owner. It is mathematically linked to a corresponding public key and is used to decrypt data or generate digital signatures, ensuring authenticity and confidentiality.

Programming the Internet – The use of web-based languages and technologies (HTML, CSS, JavaScript, PHP) to build interactive and dynamic websites.

Public Key – The openly shared component of a cryptographic key pair used in asymmetric encryption. It allows others to encrypt data or verify digital signatures created with the corresponding private key. Together, public and private keys enable secure communication and authentication over untrusted networks.

RDBMS (Relational Database Management System) – A type of database management system based on E. F. Codd’s relational model. It organises data into tables with rows and columns, enforces relationships using primary and foreign keys, and allows for efficient querying and manipulation using SQL (Structured Query Language).

SQL (Structured Query Language) – A domain-specific language used to manage and query data held in a relational database.

Software Development Life Cycle (SDLC) – A structured process for planning, creating, testing, and deploying software systems.

TCP/IP (Transmission Control Protocol/Internet Protocol) – The suite of communication protocols that define how data is transmitted across the internet and networks.

UML (Unified Modeling Language) – A visual modelling language used in software engineering to design, analyse, and document system architectures.

UNIX – A powerful multiuser, multitasking operating system widely used in academic, scientific, and enterprise computing environments.

Waterfall Model – A traditional software development model that progresses sequentially through stages such as requirements, design, implementation, testing, and maintenance.

References

Booch, G. (1994) Object-Oriented Analysis and Design with Applications. 2nd edn. Reading, MA: Addison-Wesley.

Codd, E. F. (1970) ‘A relational model of data for large shared data banks’, Communications of the ACM, 13(6), pp. 377–387.

Date, C. J. (2000) An Introduction to Database Systems. 7th edn. Reading, MA: Addison-Wesley.

ISO/IEC (2000) ISO/IEC 17799:2000 — Information technology — Code of practice for information security management. Geneva: International Organization for Standardization.

Kernighan, B. W. and Ritchie, D. M. (1988) The C Programming Language. 2nd edn. Englewood Cliffs, NJ: Prentice-Hall.

Pressman, R. S. (2001) Software Engineering: A Practitioner’s Approach. 5th edn. Boston, MA: McGraw-Hill.

Russell, S. J. and Norvig, P. (1995) Artificial Intelligence: A Modern Approach. Englewood Cliffs, NJ: Prentice-Hall.

Schneier, B. (1996) Applied Cryptography: Protocols, Algorithms, and Source Code in C. 2nd edn. New York, NY: John Wiley & Sons.

Silberschatz, A., Galvin, P. B. and Gagne, G. (2001) Operating System Concepts. 6th edn. New York, NY: John Wiley & Sons.

Stallings, W. (2000) Network Security Essentials: Applications and Standards. Upper Saddle River, NJ: Prentice Hall.

Stroud, K. A. (2001) Engineering Mathematics. 5th edn. Basingstoke: Palgrave.

Tanenbaum, A. S. (2003) Computer Networks. 4th edn. Upper Saddle River, NJ: Prentice Hall.

Tanenbaum, A. S. (2001) Modern Operating Systems. 2nd edn. Upper Saddle River, NJ: Prentice Hall.

University of Liverpool (2023) About us – School of Computer Science and Informatics. Available at: https://www.liverpool.ac.uk/computer-science-and-informatics/about-us/ (Accessed: 2 November 2025).

W3C (2002) HTML 4.01 Specification. Available at: https://www.w3.org/TR/html401/ (Accessed: 2 November 2025).


Disclaimer

This article reflects my personal academic journey at the University of Liverpool and is shared solely for professional and educational reflection purposes.

Monday, 16 October 2023

Python Programming for Data Analysts: A Brief Introduction

 

Image created by Author (A.Kariyawasam) using Canva AI platform

Python Programming for Data Analysts: A Brief Introduction


This short article is intentionally pitched at a relatively a high level for anyone that is interested in understanding the importance and relevance of Python Programming and Data Analysis, particularly in a business context. It is the first in a series of articles intended to encourage further independent research. Incidentally, Data Analytics and Data Modelling are subjects that I teach at postgraduate level for BPP University Business School Faculty as part of the MSc Management Programme with Data Analytics.

Background context

Python is a relatively modern programming language that has evolved over the years and made very important contributions to today's data-driven world. It was created by Guido van Rossum, a Dutch computer scientist and released on 20th February 1991 (as Python 0.90). Here is an interesting YouTube clip detailing the Python development process from his point of view.

Interview with Guido van Rossum, creator of Python

It was designed with a philosophy of emphasising readability, simplicity and explicitness and has grown in popularity in part due to a feature-rich, well supported library and range of modules and packages that perform a wide variety of functions. These libraries are free (a.k.a. open source) and maintained by an active and dedicated community of developers and enthusiasts. For this reason, it is well suited for the fields of Data Science, Numerical analysis, Statistics and Machine Learning. As such it is considered a very powerful tool for data analysts and has also had an influence on the development of other open-source languages such as RubySwift, and Julia*.

*If you are interested in a comparison of these languages for application development, see this video on YouTube.

And Now for Something Completely Different!

Python's curious name is in fact derived from the popular (and somewhat surreal) British BBC comedy television series "Monty Python's Flying Circus" of which Guido van Rossum, the creator of Python language, was - according to Python folklore - a fan.

A poster for BBC TV's comedy series "Monty Python's Flying Circus"
https://best-tv-shows.fandom.com/wiki/Monty_Python%27s_Flying_Circus


He wanted a name that was distinctive, unique, short, and somewhat mysterious so "Python" not only fit the criteria but also added a sense of humour!

Why choose Python in Data Analytics?

There are several advantages to using Python including its versatility, rich ecosystem, and ease of learning:

Versatility: Python is versatile and can be applied in a scalable fashion to various data analytics tasks.

Ecosystem: Python has an extensive set of libraries (see next section) and frameworks that can be used for data analysis, data processing, data modelling and visualisation, and statistical analysis.

Ease of Learning: Python is considered high-level, highly readable and this makes it ideal for beginners and advanced analysts.

Python is very much valued among blue-chip companies like Dropbox, Google, Instagram, Netflix, Pinterest, Quora, Spotify, Uber and YouTube.

Blue-chip companies that utilise Python
Source: https://www.topdevelopers.co/blog/10-reasons-to-choose-python-web-development-project/

In fact, Data Scientists refer to "Python as the language of choice" when it comes to complex data analysis.

Python Libraries

Python libraries are modular and like Lego bricks are easily incorporated (imported) into a python program's structure and referenced throughout a program. Here are some of the most common libraries available for data analysis:

Pandas: Abbreviation of Panel Data AnalysiS library which is used to simplify data manipulation, cleaning, and pre-processing tasks through use of structures called data frames [DF].

NumPy: Short for Numerical Python and used for numerical operations and array processing.

Matplotlib and Seaborn: These libraries are used in data visualization.

SciPy: Used in scientific computing and advanced statistical analysis.

Scikit-learn: Scikit-learn is for machine learning tasks within data analysis.

In fact, here are the Top 10 libraries:

The Top Ten Python libraries
https://datarundown.com/python-top10-libraries/

Data Cleaning and Pre-processing

Data cleaning also known as data wrangling, is the process of cleaning, transforming, and preparing raw data into a format that is suitable for further detail analysis. Data pre-processing involves a series of steps that aim to make the data more understandable and valuable for analysis or machine learning tasks and aims to address the following (not an exhaustive list by any means):

Handling Missing (or null) Values:

Unrefined or 'raw' data may contain missing (or null) values, which can pose challenges during analysis. Data wrangling involves implementing strategies for dealing with any missing data, and this can include imputation (estimation) or removal.

Dealing with Outliers:

Non-standard values or outliers are extreme and can potentially distort analysis or models. An important step in data pre-processing involves not only identifying but also handling outliers to ensure they don't unduly influence or negatively bias the results.

Data Transformation and Standardisation:

As raw data may come in a multitude of formats, data pre-processing is the necessary step that involves converting data into a standardised format e.g., normalising, scaling, encoding variables, converting text strings to numbers, to make it easier to compare and analyse.

Dealing with Noisy Data:

Noise in data can arise from various sources, like errors in data collection or transmission. Data pre-processing aims to reduce or eliminate this noise to improve the quality (signal-to-noise ratio) of the data.

Reducing Computational Overhead:

Through cleaning and preparing the data appropriately, unnecessary computational overheads are avoided, thus making the analysis more efficient.

The process of data-cleaning is in fact iterative and nicely summarised in the following diagram:

The Data Cleaning Cycle
https://www.iteratorshq.com/blog/data-cleaning-in-5-easy-steps/

In terms of Data quality, data should be accurate, complete, consistent, reliable, relevant, valid, timely and uniform.


EDA (Exploratory Data Analysis)

EDA is a critical step in the data analysis process, and it involves examining and visualising data to understand its characteristics, uncover patterns, and identify relationships between variables or features in the data set.

Statistical Analysis and Hypothesis Testing

We use statistical techniques in data analysis to fundamentally determine the accuracy and reliability of data and the models used to process the data. These are presented as metrics to compare different algorithms and models.

Accuracy is the closeness of a measured value to the true value or the target value. It indicates how well a measurement, or a very often an estimate, reflects the actual quantity being measured. This will be discussed in more detail in a future post.

Reliability is the consistency, stability, and repeatability of measurements or data over time and across different conditions. It assesses the degree to which a measurement or data point can be trusted to be consistent and dependable. This will be discussed in more detail in a future post.

Achieving both accuracy and reliability is vital for obtaining trustworthy and meaningful results in statistical analysis and scientific research.

Exploratory Data Analysis as an important step in data science
https://blog.camelot-group.com/2019/03/exploratory-data-analysis-an-important-step-in-data-science/

Machine Learning for Data Analysis

Machine Learning, often abbreviated to ML is a branch of artificial intelligence [AI] that focuses on enabling computers (via ML Algorithms) to learn and make decisions or predictions from data without being explicitly procedurally programmed. Its origins data back to the 1950s and 60s through the development of AI-powered chess-playing programs. This marked a significant milestone in the history of both AI and computer science.

In data analysis, machine learning programs written in Python play a crucial role in extracting insights, making predictions, and automating complex tasks.

There are three main forms of machine learning:

Supervised Learning:

Here the algorithm is trained on a labelled dataset (e.g., predicting house prices based on features like number of bedrooms, proximity to public transport network, schools etc.). Each data point is associated with a target or outcome variable. The goal is to learn a mapping from input features to target values. The algorithm makes predictions based on the input features. It is a bit like teaching a child to read though constant guidance and correction of their favourite book.

Unsupervised Learning:

This involves training algorithms on unlabelled data (e.g., customer segmentation based on shopping behaviour). There is no predefined target variable; instead, the algorithm discovers patterns, structures, or relationships within the data. This is a bit like teaching a child to read a brand new book using their knowledge from previous guidance.

Reinforcement Learning:

Reinforcement learning (e.g., in Game Playing and Robotics) involves an agent interacting with an environment and learning to make a sequence of decisions to maximize a reward signal. The ML agent receives feedback in the form of rewards or penalties for each action it takes. This is akin to giving praise to a child when they read a new book well.

The three types of machine learning are nicely illustrated with examples in this diagram:


Digital Disruption in the business context

Without doubt machine learning and Artificial Intelligence (AI) have had a profound impact on many businesses across various industries by revolutionising operations through leveraging data, automating, and augmenting the decision-making process, facilitating greater customer interactions (through NLP or natural language processing) to name but a few. It is considered a form of digital disruption.

Here are some typical examples of digital disruption in the business world:

Question: Do you think this level of digital disruption has been positive or negative and why?

Here are some things to consider:

Automation and Efficiency:

AI-powered automation can streamline repetitive and time-consuming tasks, increasing efficiency and allowing employees to focus on higher-value activities. This includes the automation and validation of data entry (perhaps through IoT devices), recognising and authenticating customer service interactions, and creating trigger points for routine administrative tasks.

Predictive Analytics:

AI leverages the power of advanced algorithms to analyse historical data to look for patterns and use these patterns to make informed predictions about future trends on e.g., sales, customer behaviour, demand, and supply patterns, and shifts in the market. This information can potentially help make better informed decisions and develop strategic plans.

Personalised Customer Experiences:

AI-enabled systems can scrutinise customer data to create personalised experiences. This could include tailored product recommendations, content suggestions based on shopping habits as well as targeted marketing campaigns. Personalisation is said to enhance customer satisfaction, value, and loyalty.

Sentiment Analysis:

AI can analyse the results of surveys, social media posts, customer reviews, and product feedback to determine public sentiment towards a particular product, brand, or service. This information can be invaluable for brand management and understanding customer sentiment and can determine and guide focus on future product development.

Concluding remarks

I hope you enjoyed this very brief introduction and that it has whetted your appetite and inspired you to do some further research. I always welcome comments, feedback and suggestions for future posts which will provide more detailed explorations of this fascinating subject.

As mentioned earlier in this post, Programming for Data Analytics is a cutting-edge technology subject that I teach at BPP University as part of the MSc Management Programme with Data Analytics Programme of study*.

*Please click here if you'd like to find out more.

 

And finally...

Some common abbreviations

Here are a few common abbreviations you may come across when conducting further research into researching AI, ML, and Python programming and Statistics:

AI - Artificial Intelligence

ANN - Artificial Neural Network

API - Application Programming Interface

ANOVA - Analysis of Variance

CNN - Convolutional Neural Network

CDF - Cumulative Distribution Function

CRISP-DM - The Cross-Industry Standard Process for Data Mining

CSV - Comma-Separated Values

CV - Computer Vision

CI - Confidence Interval

DF - Degrees of Freedom

DL - Deep Learning

DF - Data frame

GAN - Generative Adversarial Network

GUI - Graphical User Interface

HTML - Hypertext Markup Language

IoT - Internet of Things

JSON - JavaScript Object Notation

KNN - K-Nearest Neighbours

MLE - Maximum Likelihood Estimation

ML - Machine Learning

MLaaS - Machine Learning as a Service

NLP - Natural Language Processing

OLS - Ordinary Least Squares

OS - Operating System

PCA - Principal Component Analysis

PDF - Probability Density Function

P-value - Probability Value - a measure of reliability.

R-squared value - A measurement of accuracy or goodness-of-fit Value of a regression model

RL - Reinforcement Learning

RNN - Recurrent Neural Network

SD - Standard Deviation

SDLC - Software Development Life Cycle

SE - Standard Error

SQL - Structured Query Language

SVM - Support Vector Machine

T-test - Student's t-test

URL - Uniform Resource Locator

Z-score - Z-score