Jack Ward

Hi, I'm Jack

I'm Jack Ward, a second-year MEng Electrical and Electronic Engineering with Management student at Imperial College London.

I'm interested in electronics, particularly analogue circuit design, and I enjoy hands-on hardware work. My experience covers circuit analysis and simulation in LTspice, prototyping and soldering, PCB assembly, and debugging on the bench with an oscilloscope.

Outside my degree I build my own electronics projects, such as a hand-tracking pan-tilt turret with ultrasonic 3D scanning. I also enjoy working in teams, most recently on a six-person lunar rover, where I was responsible for the RF sensing.

I'm familiar with C++, Python, Verilog, LTspice and Microsoft Office, and I'm looking for a summer 2027 internship in electronics and hardware.

London, United Kingdom GitHub LinkedIn

Selected work

Projects

EEE Lunar Rover

Jun – Jul 2026

LTspice · Arduino · C++ · Oscilloscope

A Wi-Fi-controlled rover, built in a team of six, that surveys an artificial lunar surface and classifies rocks by age and type using RF, ultrasonic, infrared and magnetic sensing. I was responsible for the RF sensing, which decodes each rock's age.

  • Designed and simulated the RF receiver in LTspice: a tuned coil antenna, amplifier, envelope detector and comparator for an 89 kHz ASK signal carrying 600 baud UART data
  • Built and debugged the receiver chain on hardware with an oscilloscope, retuning the comparator threshold where measurements differed from simulation
  • Wrote the age-decoding firmware in C++ on the Adafruit Metro M0: reading the comparator output on a hardware UART at 600 baud, buffering 20 characters and extracting the age that follows each '#' marker
  • Integrated the RF receiver onto a shared board with the infrared circuit, decoding each rock's age correctly, confirmed against the oscilloscope's own UART decode
  • Met every requirement of the brief as a team, within a 750 g weight limit
  • Co-wrote the technical report and presented the design and results to assessors

LTspice · Analogue design

A three-stage operational amplifier designed entirely from discrete BJTs in LTspice, achieving 118 dB open-loop gain on a ±5 V supply.

  • Designed a long-tailed pair differential input stage, biased by a Wilson current mirror for a high-impedance tail and loaded by a current mirror active load, giving high differential gain, low common-mode gain and improved CMRR
  • Implemented a common-emitter gain stage with a current mirror active load to boost voltage gain
  • Developed a class AB push-pull output stage to increase output current and reduce crossover distortion
  • Diagnosed high-frequency instability from a negative phase margin in AC analysis, then stabilised it with a compensation capacitor across the common-emitter stage
  • Achieved 118 dB open-loop gain, and verified the design as an inverting amplifier with a closed-loop gain of 10.1 against a theoretical 10

Robot Hand Turret

Aug – Sep 2026

Python · OpenCV · MediaPipe · Arduino · C++

A pan-tilt turret steered by hand gestures that maps its surroundings on a live ultrasonic radar.

  • Assembled a two-axis pan-tilt servo rig that follows a user's hand in real time: pan rotates the head horizontally across 145° and tilt moves it vertically across 75°, rate-limited to about 200° per second for smooth tracking
  • Protected the servos from stalling and current spikes by clamping every command inside the mechanical end stops (30–175° pan, 0–75° tilt), limiting each move to 4° per update and staggering the pan and tilt writes by 8 ms
  • Tracked the wrist with MediaPipe so moving the hand sideways pans the turret and up or down tilts it, with angles sent to an Arduino over serial
  • Wrote the Arduino firmware in C++ to parse newline-terminated pan and tilt commands over serial at 115,200 baud, ping the ultrasonic sensor every 100 ms and stream back pan, tilt and distance readings
  • Mounted an HC-SR04 ultrasonic sensor on the head, plotting each pan angle and distance reading as a dot on a live top-down radar display in OpenCV, shown alongside the webcam view as the turret moved

Issie · Verilog · Icarus Verilog

The datapath of a 16-bit RISC CPU, the part that stores, moves and calculates data, rebuilt in Verilog from my lab design.

  • Built the datapath of EEP1, a 16-bit single-cycle RISC CPU based on Arm design principles, as a schematic in Issie during my Computer Architecture lab, then reimplemented it in Verilog across 8 modules
  • Designed an 8-operation ALU (MOV, ADD, SUB, ADC, SBC, AND, CMP and shift) sharing one adder/subtractor for all arithmetic and setting the NZCV flags, with a 4-stage barrel shifter for shifts of 0 to 15 bits in one step
  • Implemented an 8×16-bit register file with two read ports, write enable and reset, and an instruction decoder that splits each 16-bit instruction into its registers, operation and immediate value
  • Verified the design with self-checking testbenches: 100,000 randomised ALU tests against an independent reference model with zero mismatches, and 7 register file checks covering reset, read-back and write enable
  • Ran 4 EEP1 machine-code programs through the full datapath in Icarus Verilog, including 32-bit addition using the carry flag, passing all 14 checks

Python · DuckDB · PuLP · Streamlit

AI-assistedBuilt with AI coding tools: I came up with the idea and features, directed the build and tested the result.

An expected-points model, player index and squad optimiser for Fantasy Premier League, built by modelling each scoring rule the way it actually works.

  • Modelled each player's expected points from eight scoring components, including minutes, goals, assists, clean sheets, defensive contributions and bonus
  • Built an index of every player in the game, ranked by model rating, expected points, price and ownership, searchable and filterable by position, with a confidence marker for players with little data
  • Selected the best 15-player squad within budget using integer linear programming, optimising for league rank rather than total points

Python · GDAL · MapLibre GL JS

AI-assistedBuilt with AI coding tools: I came up with the idea and features, directed the build and tested the result.

A Google Earth-style 3D map of Tolkien's Middle-earth that you can fly through in the browser.

  • Processed a 50 m elevation model of 1.6 billion pixels into 3.75 GB of streamed terrain tiles with GDAL and Python
  • Converted 26 map layers, including rivers, roads, realms and Frodo's route, into vector tiles with ranked town labels
  • Rendered the map in MapLibre with 3D terrain, hillshading, elevation colouring and layer toggles

Map data: Rose, R. A. (2020), GIS & Middle Earth, William & Mary Center for Geospatial Analysis, CC BY-NC-SA 4.0.

React Native · Expo · TypeScript

AI-assistedBuilt with AI coding tools: I came up with the idea and features, directed the build and tested the result.

A travel-journal app for iPhone and Android that turns the photos from a trip into albums, a map of where you went and storyboards to look back on.

  • Albums: import photos from your camera roll into trip albums, shown as polaroid-style cards you can caption
  • World map: reads each photo's GPS location and time, groups photos taken within 5 km of each other into stops, and plots every trip's stops on a world map in the order you visited them
  • Storyboards: choose photos and write a caption for each page to build a flip-through story of a trip, saved on your phone to replay later
  • Built in Expo (React Native) and TypeScript, using native maps and the phone's photo library