About

I am Shaurya Shubham, an undergraduate student at UW–Madison studying Computer Engineering. My interests are software development and digital hardware design. My resume is available in PDF format.

Contact

You can email me at me@shauryashubham.com. I am also on LinkedIn.

Projects

Battleship Game

A two-player battleship game implemented on the PSoC6 microprocessor platform. It utilizes IO from a variety of peripheral devices such as IMU sensor, light sensor, LCD, LEDs, joystick, and buttons. Implemented according to a specification and successfully interoperated with another spec-following implementation. Made as an individual project in my ECE 353 class.

Youtube video of demo.

Knight’s Tour Robot

A robot programmed using RTL digital logic written in SystemVerilog to visit all the squares in a 5×5 chessboard using only knight chess moves. The robot is controlled using UART messages sent via Bluetooth using an Android app. Made as a part of a 5-person group in my ECE 551 class.

Youtube video of demo.

RISC-V Processor Design

A 5-stage pipelined RISC-V processor with the standard Fetch (F), Decode (D), Execute (X), Memory (M) and Writeback (W) stages written in Verilog. Implemented improved branch prediction with a 64-entry Branch History Table. Had an instruction cache and a data cache, both had a 1KiB capacity and were 4-way set associative with 16 byte block size. Made as a part of a 3-person group in my ECE 552 class.

Global Routing Project

A global routing solver that, given a netlist with pin assignments on a coarse grid graph, assigns edges to each net to connect all the pins in that net. The graph has edge capacities and the program tries to avoid making edges have capacity overflows. The main algorithm is a two step process: 1) create a Minimum Spanning Tree (MST) of the pins in each net based on Manhattan distance 2) Run many iterations of rip-up and reroute (RRR) where, in each iteration, each net was removed from the solution (rip-up) and then rerouted using overflow costs. The A* algorithm was used in RRR and Prim’s algorithm was used for MST generation. A 350% improvement in total overflow was obtained over a previous version of the program. Made as a part of a 2-person group in my ECE 556 class.

Chess Game

A chess game GUI desktop application that can be played with two human players. It was made in Python using the Qt GUI framework. It supports viewing game history stored in a SQLite database and reviewing old games. It also lets you save partial games to a file to play later.

Link to Git repository.

Coding Challenges

This section lists my solutions to a few programming challenges I’ve done, mainly Advent of Code.

Advent of Code 2025

Link to code repository.

Advent of Code 2024

Link to code repository.

Advent of Code 2023

Link to code repository.

Advent of Code 2019 Intcode

Link to code repository.

Writing

Advent of Code articles

I have written a lot of articles about Advent of Code. To prevent them from cluttering the main page and to focus on the rest of my writing, these articles are on a separate page.

Main articles