Will.
Home

Hi, I’m Will.

Final-year CS @ Southampton · London

Some things I’ve been up to:

  • A neural network written in NumPy alone that reads handwriting at 99% on MNIST.
  • A fantasy rugby prediction engine running gradient-boosted forecasts off a point-in-time data pipeline.
  • A 5×5 chess engine built on bitboards and Zobrist hashing that plays you in the browser.
  • First place in the university Cyber Security Society CTF, with the most flags captured.

Open to graduate roles from 2027.

Draw a digit

I built this network from scratch in sixth form, using only NumPy for the matrix operations. It reaches 99% accuracy on the MNIST handwritten digits. Draw one in the box and the original trained weights will classify it.

draw a digit

MNIST preprocessing: crop to 20 px and centre by mass.

·
    Fig. 1: live forward pass through the original trained weights (784 → 20 → 10 → 10). Source on GitHub

    Play the engine

    I built this engine in Python for my AI coursework, then ported it to JavaScript for this site. It plays Chess Fragments, a 5×5 variant with one new piece: the Right †, which moves like a rook or a knight. You play White.

    Your move.

    depth
    –
    nodes
    –
    time
    –
    eval
    –
    line
    –
    Fig. 2: iterative-deepening alpha-beta search with quiescence, null-move pruning and killer and history move ordering, over magic bitboards with a Zobrist-hashed transposition table. Pawns keep their double push and en passant. Source on GitHub Build notes

    Race the searches

    In my penultimate year of school I led a team that built a maze solver for a STEM fair. It read mazes from a webcam with OpenCV and solved them with graph search. Here its three searches, breadth-first, A* and depth-first, race on the same maze.

    visited
    –
    path
    –
    frontier peak
    –
    Fig. 3: recursive-backtracker generation with a few extra openings so routes compete. All three searches run on the same grid graph. Source on GitHub

    Projects

    1. 2026
      ongoing

      6n

      A fantasy rugby prediction engine, now covering competitions beyond the Six Nations. A point-in-time data pipeline gathers player form, team play-shape metrics, world rankings, past results and weather for gradient-boosted forecasts.

    2. 2026

      chessweb

      A two-player chess game in the browser, built with Flask and WebSockets. The backend handles user accounts and validates moves with an object-oriented model of the pieces.

    3. 2026

      bible-memorisation-app

      A React app for memorising Bible verses, scheduled with SM-2 spaced repetition.

    Experience

    1. Jun–Aug 2026
      Southampton

      University of Southampton Undergraduate Research Intern

      Researched how memristive devices can act as artificial synapses, supervised by Dr Liudi Jiang and Dr Ruomeng Huang. Simulated new devices and connected the synapse models to a published neuron model.

      Also built the interactive animations and a graphing platform for comparing results.

    2. Oct 2022
      London

      Ibex.ai Software & Data Engineering Intern

      Extracted and cleaned a customer dataset from production databases with Pandas, then trained regression and classification models on Azure Databricks to relate marketing strategy to client response rates.

    3. Jul 2022
      South Africa

      IoT.nxt Data Analysis Intern

      Analysed match statistics for provincial rugby players and wrote a report on the findings.

    4. Jul 2022
      South Africa

      Codehesion Software Development Intern

      Supported a team building a supply-chain management system for a large high-street retailer, and worked on a customer-loyalty system for an online gaming company.

    Background

    I’m in the final year of a BSc in Computer Science at the University of Southampton, where my top mark is 86% in Artificial Intelligence. My dissertation develops adversarial defences for evidence-based stance detection with LLMs.

    Before that, I took A levels at Hampton School: A* in Mathematics and A in Further Mathematics, Computer Science and Physics.

    In May 2025 I won the university Cyber Security Society CTF, with challenges across cryptography, web security, reverse engineering, binary exploitation, RFID hacking and protocol engineering.

    Artificial synapse research

    These four interactive animations come from my summer research internship. They show how biological synapses work, how a memristor’s short-term memory behaves, and how the artificial-synapse models compare.

    Contact

    You made it to Neptune; say hello.

    mail@williamgreenfield.com
    How the orrery is scaled and sourced

    Scale

    • Orbital angles and positions are calculated from JPL Keplerian elements.
    • Planet and Sun sizes are scaled to the square root of their true radii.
    • Orbital distances use a logarithmic display scale to keep the inner orbits clear of the Sun.
    • Zoom changes every body through the same perspective projection. Zoom-out ends at the complete system view. Every planet retains its surface texture.
    • For example, Jupiter’s true radius is about 11 times Earth’s, but it is drawn about √11 ≈ 3.3 times larger.

    Imagery

    The default Sun maps Matteo’s surface detail onto a red-orange photosphere with limb darkening. Colour comparisons: golden highlights, white, amber, orange and red-orange. All use Matteo’s surface detail at the same exposure. The warmer colours are artistic options, not measured emission colours.

    Custom Sun preview: a 3D sphere using NASA/SDO AIA observations from a full solar rotation. Credit NASA/SDO and the AIA science team. The surface combines observations from different dates. The orange colour and photographic prominence layers are illustrative. The layers approximate depth; they are not a measured 3D corona. No AI imagery is used.

    Pedro’s complete model comparison uses High Resolution Solar system by Pedro B. Goulart (Pebegou), under CC BY 4.0. The preview adapts his meshes and materials to this orrery’s scale, lighting and rotation. The colours are artistic interpretations.

    The Sun uses Matteo Pascale’s Realistic Sun scene, under the Blendkit Royalty Free licence. Its baked procedural detail is recoloured in the browser with reduced exposure. Custom animated plasma loops surround the Sun. They are illustrative, not a measured plasma simulation. His Earth scene remains an optional Earth preview, with adapted lighting and atmosphere. View original materials.

    Earth: NASA/GSFC Blue Marble, with satellite cloud and polar imagery. Mars: NASA via NOAA Science On a Sphere. These are global image composites.

    Original Sun comparison: an artist-prepared Solar System Scope global texture (CC BY 4.0), recoloured with the darker orange palette of the original SDO image. This is an illustrative reconstruction. The separate NASA/SDO prominence photograph rotates on a fixed plane. It does not represent a measured 3D corona. NASA imagery follows its media usage guidelines.

    Uranus and Neptune: atmospheric reconstructions credited to NASA by ESO Supernova (Uranus, Neptune; CC BY 4.0). These are not direct global photographs.

    Other textures and Saturn’s rings: Solar System Scope (CC BY 4.0). Milky Way backdrop: ESO / S. Brunier. Each body turns at its measured rotation rate from its IAU orientation, and planets are lit from the Sun’s direction; at fast time scales the spin is shown slowed so it stays readable. Asset sources and processing details.

    Click a planet to revisit a section.

    –
    Orbit controls

    Privacy and analytics controls