This page documents the practical engineering skills I’ve developed through my university coursework, laboratory assignments, and personal projects.
Rather than simply listing the programming languages and software I know, I want to explain how I’ve actually applied them.
ETH Zürich
Electrical Engineering and Information Technology — Academic Exchange
September 2026 – Present
VLSI I — Digital Design and Hardware Implementation
Tools: SystemVerilog, AMD-Xilinx Vivado, FPGA development boards, simulation and waveform analysis
This course focuses on digital hardware design using hardware description languages.
What I’ve worked on:
- Writing synthesizable digital logic using SystemVerilog.
- Designing finite state machines (FSMs), including state transitions and output logic.
- Understanding and implementing Mealy and Moore machines.
- Developing counters, edge detectors, and control logic.
- Implementing RGB-to-grayscale conversion using fixed-point arithmetic and bit shifts.
- Working with pixel-stream interfaces, including valid/ready handshaking and horizontal/vertical synchronization.
- Integrating individual RTL modules into larger digital systems.
- Simulating hardware designs, analyzing waveforms, and debugging functional mismatches against reference outputs.
Practical skills developed:
Translating specifications into RTL, designing sequential and combinational logic, debugging hardware behavior, and understanding how timing and control signals affect a digital system.
VLSI III — Integrated Circuit Design
Tools: Cadence Virtuoso, schematic editor, circuit simulation, layout editor
This course introduces practical aspects of integrated circuit design using industry-standard electronic design automation tools.
My work involves understanding the implementation of integrated circuits beyond their theoretical circuit diagrams.
Areas of focus:
- Drawing transistor-level schematics using Cadence Virtuoso.
- Working with MOSFET-based circuit structures.
- Understanding how transistor dimensions affect circuit behavior.
- Learning physical layout concepts and the relationship between schematics and IC implementation.
- Exploring circuit-level design considerations such as device sizing and parasitic effects.
Practical skills being developed:
Transistor-level schematic entry, physical IC layout using Virtuoso, and connecting theoretical circuit designs with practical semiconductor implementation.
Analogue Integrated Circuits
Tools: Cadence Virtuoso, circuit simulation, operating-point analysis, AC and transient analysis
This course focuses on transistor-level analogue circuit design and the relationship between device parameters and circuit performance.
What I’ve worked on:
- Analysing MOSFET operating regions and small-signal characteristics.
- Investigating common-source and common-gate amplifier configurations.
- Deriving small-signal equivalent circuits.
- Evaluating transconductance (gm), output conductance (gds), and output resistance.
- Adjusting transistor width (W) and length (L) to achieve desired circuit characteristics.
- Performing DC operating-point and AC frequency-response simulations.
- Measuring amplifier gain and investigating circuit linearity.
- Comparing theoretical calculations against simulation results.
Practical example:
In one laboratory exercise, I adjusted MOSFET dimensions to tune an amplifier’s frequency response towards a target gain of approximately 13 dB.
This involved repeated simulations, inspecting transistor operating points, and observing how changes in transistor geometry affected the amplifier’s performance.
Practical skills developed:
Analogue circuit simulation, transistor sizing, small-signal analysis, gain optimization, and interpreting simulation data to guide circuit design decisions.
Embedded Systems
Tools: STM32 microcontrollers, C/C++, STM32 HAL, VS Code, CMake, debugging tools
This course focuses on programming microcontrollers and interfacing software with physical hardware.
What I’ve worked on:
- Configuring GPIO pins as digital inputs and outputs.
- Controlling LEDs using STM32 microcontrollers.
- Implementing timing-based output sequences.
- Configuring external interrupts using GPIO and EXTI.
- Writing interrupt callback functions using STM32 HAL.
- Understanding polling versus interrupt-driven operation.
- Using bitwise operations to manipulate hardware registers.
- Writing ARM inline assembly instructions within C programs.
- Working with memory-mapped peripheral registers.
- Building and debugging embedded projects using a CMake-based development environment.
Practical skills developed:
Low-level embedded programming, peripheral configuration, hardware register manipulation, interrupt handling, and debugging software running on microcontrollers.
Control Systems
Tools: Python, NumPy, Python Control Systems Library, mathematical modelling and simulation
This course focuses on the mathematical modelling, analysis, and control of dynamic systems.
Topics and practical exercises I’ve worked on:
- Representing dynamic systems using state-space models.
- Analysing controllability, reachability, observability, and stabilizability.
- Computing controllability matrices and evaluating their rank.
- Using eigenvalues to determine system stability.
- Applying the PBH controllability test.
- Transforming systems into controllability staircase forms.
- Investigating continuous-time and discrete-time system behavior.
- Applying Lyapunov functions to analyse nonlinear system stability.
- Linearising nonlinear systems around equilibrium points.
- Using Python to perform numerical analysis and validate theoretical results.
Quadcopter modelling:
I’ve also worked on control-system exercises involving quadcopter dynamics, including understanding position, orientation, heading, and the mathematical relationships used to describe the motion of a flying system.
Practical skills developed:
Mathematical modelling, state-space analysis, numerical simulation, stability evaluation, and connecting theoretical control concepts with physical engineering systems.
University of Edinburgh
MEng Electrical and Electronic Engineering
September 2025 – Present
My studies at Edinburgh have provided the foundations for my current work at ETH Zürich.
Digital Electronics and FPGA Design
Tools: Verilog, SystemVerilog, AMD-Xilinx Vivado, Basys 3 FPGA
- Designing combinational and sequential digital logic.
- Implementing counters, registers, shift registers, and finite state machines.
- Developing UART and PS/2 communication-related logic.
- Working with LFSRs, parity checking, and serial data processing.
- Testing digital designs using simulation and FPGA development tools.
Electronics and Circuit Design
Tools: LTspice, EasyEDA, oscilloscopes, laboratory equipment
- Analysing analogue and digital electronic circuits.
- Understanding transistor operation and amplifier characteristics.
- Performing circuit calculations and simulations.
- Building familiarity with laboratory measurement equipment.
- Comparing theoretical circuit behavior with practical results.
Programming and Engineering Software
Languages: C, C++, Python, MATLAB, JavaScript, TypeScript
I’ve used programming across embedded systems, mathematical modelling, digital design workflows, and software development.
I’m also familiar with Git for version control and React for web development.
Personal and Academic Projects
RGB Image Processing in RTL
SystemVerilog | Vivado
Implemented an RGB-to-grayscale image-processing module using fixed-point weighted sums and bit-shift operations.
The project involved handling 8-bit RGB channels and translating mathematical image-processing operations into digital logic suitable for hardware implementation.
Digital Logic Design Exercises
Verilog | SystemVerilog | FPGA
Completed a range of digital design exercises involving finite state machines, counters, communication interfaces, and sequential logic.
These exercises helped strengthen my understanding of RTL design and hardware debugging.
STM32 Microcontroller Exercises
C | STM32 HAL | ARM Assembly
Implemented GPIO control, interrupt-driven behavior, and low-level register operations on STM32 microcontrollers.
The exercises provided experience working directly with hardware peripherals and understanding how software interacts with a microcontroller.
Technical Skills Summary
Hardware Description Languages: Verilog, SystemVerilog
IC Design and Simulation: Cadence Virtuoso, LTspice, EasyEDA
FPGA Development: AMD-Xilinx Vivado, Basys 3
Embedded Systems: STM32, STM32 HAL, GPIO, interrupts, ARM inline assembly
Programming: C, C++, Python, MATLAB, JavaScript, TypeScript
Engineering and Analysis: NumPy, Python Control Systems Library, circuit simulation, waveform analysis
Development Tools: Git, VS Code, CMake
Continuing to Learn
I’m still developing my technical skills, and this page will evolve as I complete more laboratory assignments and projects.
My goal is not simply to become familiar with engineering tools, but to develop the ability to use them confidently to design, implement, troubleshoot, and improve real engineering systems.