Edmonton, AB — 2025

Adharsh
Shokkalingam

Open to internships

CS student at the University of Alberta. I build things at every layer of the stack — kernels, 3D renderers, binary translators. Currently working on systems programming, Embedded/Firmware programming and where it meets AI.


Adharsh Shokkalingam
BSc Computer Science
Minor — Mathematics
University of Alberta
Expected May 2027

825-440-2394
Adharsh2022@icloud.com

I like knowing how
things actually work.

Most of my projects start with a question I can't find a satisfying answer to, so I build it myself. That's how Im currently writing an OS kernel. My previous projects are a software 3D renderer, then a binary translator that converts RISC-V machine code to WebAssembly bytecode.

I'm studying CS at the University of Alberta with a minor in mathematics. The coursework is good, but the interesting stuff mostly happens outside of it. I tend to work at the bottom of the stack — memory, hardware interfaces, instruction sets and I find that understanding those layers makes everything above them make more sense.

Right now I'm thinking a lot about the overlap between systems engineering and machine learning. I want to work somewhere that cares about both.


Selected work

2023 – 2025
01
3D CPU Rasterizer
2025

No GPU, no graphics API just C, SDL2, and math. Perspective projection, backface culling, near-plane clipping, Phong shading, free look camera with 6 degrees of freedom. Multiple render modes switchable at runtime. The whole thing is architected into isolated modules: lighting, geometry, mesh loader, culling, camera. I wanted to understand what the GPU is actually doing before trusting it.

C SDL2 Linear algebra Rasterization OBJ loading
02
RISC-V → WASM Translator
2025

Binary-level translation — not source Unfortuanatly I cannot show this code as this was a CMPUT 229 Lab, for any questions feel free to email me at any time. Takes RV32I machine instructions and emits WebAssembly bytecode. R-type, I-type, branches. Built a signed LEB128 encoder from scratch because you have to. Register translation table handles the architectural differences including the zero register. This project taught me more about how both ISAs actually work than anything else. (Course work)

RISC-V (RV32I) WebAssembly LEB128 Binary formats
03
Sulfur — Events App
2025

Full stack Android app, built with 5 other people over a semester. Event management with a capacity based lottery system, QR code generation with embedded geolocation, Firebase Firestore for multi user data. We ran proper Agile sprints, did code reviews, designed UML diagrams before writing a line. Different kind of challenge making decisions with a team is harder than making them alone.

Java Android Studio Firebase QR / Geolocation Agile
04
FeOS MK1
2026

Currently building a bare metal x86_64 kernel in Rust. Boots on QEMU. VGA buffer driver, UART serial output, a full Interrupt Descriptor Table with breakpoint and exception handling. The entire thing runs without the standard library — no_std, no_main, none of the safety nets. I started this to understand what actually happens between power on and your terminal prompt.

Rust x86_64 no_std QEMU IDT / VGA / UART
04
Distributed System Monitor
2026

Built a distributed monitoring system across two programs distpsnotify and remoteagent, coordinating real time data collection over TCP/IP sockets from multiple remote machines simultaneously. Designed and implemented a custom client server command protocol (EXECUTE/QUIT, START/STOP delimiters) for structured, ordered data exchange across persistent socket connections. Engineered dynamic memory management for an arbitrary number of remote agents using heap allocation, verified zero memory leaks across all code paths using Clang's leaks tool on macOS. (Course work)

Rust x86_64 no_std QEMU IDT / VGA / UART

What I
work
with
and know

Languages
C and C++ for most systems work. Rust when I want the compiler to catch my mistakes. Python for anything involving data or quick scripts. Java for Android. RISC-V assembly when the course demands it, though I've started to enjoy it. C/C++.
Tools & Platforms
Git, VS Code, Android Studio, QEMU, SDL2, Firebase, MongoDB, SQL, Figma, SPSS. UML when the team needs it — sequence diagrams, class diagrams, data models.
Coursework
Algorithms, Software Engineering, Computer Architecture, Operating Systems, Machine Learning, Databases.
Interests
Compilers and ISAs. Real-time graphics. The gap between ML research and production systems. How language runtimes work. Anything that requires reading a spec.

Background

Expected May 2027
University of Alberta
BSc Computer Science - AI Major
Minor — Mathematics

Solid fundamentals program. The mathematics minor adds useful rigor — linear algebra and discrete math show up everywhere in the kind of work I care about. The gap between what I learn in class and what I want to build is where most of my side projects come from.

  • CMPUT 229 lab produced the RISC-V → WASM translator — most technically demanding coursework so far.
  • Group project environment in CMPUT 301 taught me how to ship software with other people on a deadline.
June 2023 – Present
Edmonton Scottish Soccer Dome
Sports Facility Attendant

Part time work . Facility setup, enforcing safety rules, keeping things running smoothly when something goes sideways mid event. I've gotten good at staying calm when things don't go to plan.

Let's
talk.

If you're working on something interesting in systems, AI infrastructure, or low level software or if you're just looking for a capable intern who won't need their hand held send me a message.