// portfolio, updated 2026
> Computer Science Graduate
>
fig. 01 / tom.jpg
I graduated with a Computer Science degree in 2026, and I am joining Amazon Web Services as a Graduate Systems Analyst in July 2026. I'm passionate about cloud infrastructure, software, and building things that work reliably at scale.
Prior to joining AWS, I was a Cloud Solution Architect Intern at Microsoft, and I also previously worked as an IT Support Technician throughout my time at university. I have strong grounding in both enterprise-level architecture and hands-on technical support.
Experience at
Cloud & Infrastructure
Hands-on experience with Azure through a professional role at Microsoft, with an incoming role at Amazon working with AWS. Underpinned by academic study of operating systems, concurrency, and computer architecture, giving me a strong foundation across the full stack, from silicon to service.
Software Development
Comfortable across multiple languages and paradigms, including Java, C, C++, Python, Haskell and more. Projects range from building a compiler from scratch to maintaining production-quality codebases, with a consistent focus on clean, readable and well-documented code.
AI & Machine Learning
Built an NLP chatbot using TF-IDF vectors and cosine similarity for intent detection, and developed an evolutionary simulation modelling population dynamics under environmental stress. Grounded in both the theory and practical application of intelligent systems.
Security & Cryptography
Implemented a block cipher from scratch using XTS mode of operation, supporting full encryption and decryption of arbitrary input. Broader security knowledge spans firewalls, malware analysis, authentication, and secure system design.
Data & Visualisation
Created interactive data visualisations using R, JavaScript, and Observable Plot. Experienced with SQL and relational database design. Able to translate complex datasets into clear, meaningful visual narratives for both technical and non-technical audiences.
Human-Centred Design
Studied how people interact with technology and the broader role software plays in society. Used Figma to prototype collaborative systems, and applied conversational design principles in building a natural language interface, with attention to balancing technical function with genuine usability.
Education
BSc Computer Science
with Year in Industry
University of Nottingham
2022 to 2026
2:1 Classification View the course at Nottingham ↗Modules
Explored the theory and practice of communicating data visually. Built interactive visualisations using R, JavaScript, and Observable Plot. The module covered principles of good visual design, perception, and narrative clarity.
Studied the mathematical foundations of modern cryptography, including symmetric and asymmetric encryption, block ciphers, and modes of operation. Implemented the Zodiac block cipher from scratch using XTS mode. XTS is the same standard used in full-disk encryption.
Investigated how humans interact with AI systems, covering NLP, NLU, and conversational design. Built a chatbot using TF-IDF vectors and cosine similarity for intent detection, with a focus on making dialogue feel natural and coherent.
Examined the ethical responsibilities of computing professionals. Produced a report assessing a fictitious company against ethical frameworks, covering issues such as data privacy, bias, and professional conduct.
A broader, critical module exploring how software shapes society. Topics covered included its influence on politics, workplaces, culture, and power. Developed the ability to think beyond technical function and consider the wider human context of the systems we build.
Built a compiler from the ground up. Grammars were defined using ANTLR, an Abstract Syntax Tree and intermediate representation in Two Address Code (TAC) were constructed in Java, and the output was compiled down to executable binary. Covered lexical analysis, parsing, semantic analysis, and code generation.
Explored how technology can facilitate collaboration and communication in organisations. Used Figma to prototype a system for a museum, emphasising exploration, interaction, and experience, with a focus on how design choices affect human behaviour.
Covered core concepts in computer security including firewalls, malware, authentication, password security, network attacks, and secure system design. Developed a grounded understanding of how systems are attacked and how they are defended.
Designed and implemented an evolutionary simulation in which hundreds of agents forage for food, each carrying heritable traits: vision, speed, and efficiency. The simulation was run to stability before a food-scarcity shock event was introduced, and the resulting population-level changes in trait distribution were observed and recorded.
Year in Industry placement. A full year in industry between second and final year, assessed pass/fail through monthly check-ins and progress reports, plus video presentations on what I learned. Passing it confers the with Year in Industry title and the right to graduate with it.
Led a team as project lead to build Broken Puppet, a webcam-based game using MediaPipe to track body keypoints. Players matched on-screen poses, with movements progressively distorting over time, much like a broken puppet. Responsible for coordinating the team, managing scope, and ensuring delivery.
Focused on developing a substantial project in C++. Built a 2D platformer game called Ice Slice, covering object-oriented design, memory management, game loops, and collision detection.
Introduced the principles of HCI: how users interact with systems, usability heuristics, interface evaluation methods, and user-centred design. Developed an understanding of how to design software that serves the people using it.
Explored how operating systems manage processes, memory, and resources. Implemented a round-robin process scheduler in C, gaining practical experience with concurrency, synchronisation, and the challenges of managing shared resources.
Covered the discipline of requirements engineering, including how to elicit, document, and manage software requirements. Introduced to the skills needed to work as a requirements engineer in professional software projects.
A theoretical module covering formal languages, finite automata, regular expressions, context-free grammars, and the limits of computation. Provided the mathematical foundations underpinning compiler design and programming language theory.
Given an existing Java codebase and tasked with maintaining and extending it. Assessment criteria covered code quality, clarity, Git practices, and documentation, with an emphasis on writing software that others can understand and build upon.
Covered foundational algorithms and data structures including sorting, searching, trees, graphs, and hashing. Time and space complexity analysis was also a core part of the module. Developed the ability to choose the right structure and algorithm for a given problem.
Introduced formal logic and its applications in computer science, covering propositional and predicate logic, proof techniques, and the use of formal reasoning to verify software correctness.
Foundational mathematics for computing: logic, sets, functions, relations, and discrete mathematics. Provided the rigorous mathematical grounding needed for algorithm analysis and formal reasoning work later in the degree.
Introduced core software engineering practices: version control with Git, project management, agile methodologies, and collaborative development workflows.
Covered relational database design, SQL, and building web interfaces with JavaScript and HTML. Introduced the full stack of data storage and retrieval through to front-end presentation.
An introduction to programming through C, covering variables, control flow, functions, arrays, and pointers. Introduced fundamental algorithmic thinking and problem decomposition.
Introduced computer architecture: how processors work, instruction sets, memory hierarchies, and the relationship between hardware and software. Gave a foundational understanding of what happens below the operating system.
A broad introduction to computing concepts: binary representation, logic gates, number systems, basic networking, and an overview of how computers work at a fundamental level.
Introduced core AI concepts and techniques including search algorithms, knowledge representation, and machine learning basics. Included a practical project in Python using AI libraries.
Explored different approaches to programming through functional programming in Haskell and object-oriented programming in Java, developing flexibility in thinking about how programs can be structured.
Advanced mathematics building on year one: linear algebra, matrix calculations, probability, and calculus. Provides the mathematical toolkit for machine learning, graphics, and computational modelling.
Classification is weighted from year 2 (33%) and year 4 (67%); year 1 and the industrial placement year do not count toward the final mark.
Experience
Work
Graduate Systems Analyst
Joining AWS as a Graduate Systems Analyst, where I'll be contributing to cloud infrastructure projects and internal systems, focused on scalable, reliable solutions across distributed environments.
Cloud Solution Architect Intern
Completed an internship within Microsoft's Security Cloud Solutions team, gaining hands-on experience designing and proposing cloud architecture solutions for enterprise clients on the Azure platform.
IT Support Technician
Provided part-time IT support throughout my undergraduate studies, troubleshooting hardware and software issues, supporting staff and students, and maintaining university systems.
Certifications & Achievements