Hi, I'm Shyam!
Tinkerer, engineer, lifelong learner
I am currently a senior at the University of Pennsylvania pursuing a BSE and an accelerated master's in Computer Science, with minors in mathematics, statistics, and data science. I enjoy working across all layers of the computing stack from OSes and compilers all the way up to distributed systems development and machine learning. Thinking about ways to apply "abstract" concepts to real-world problems excites me, from using linear programming and optimization theory to solve intricate scheduling problems, to leveraging graph coloring to optimize register allocation algorithms in compilers. Outside of CS, I like to immerse myself in the mathematically inspired rhythms of the tabla (an Indian percussion instrument), hike, travel, and play basketball.
I am especially passionate about teaching and being able to explain seemingly difficult concepts in a straightforward and illustrative manner. I have been a teaching assistant for a few courses (both graduate and undergraduate) at the University of Pennsylvania over the past few semesters, namely:
Developed a massively scalable service (supporting 8,000+ TPS) to manage data involved in the Entity Resolution (ER) pipeline, resulting in a 30% reduction in cost.
Focused on OpenRewrite recipe development and expanding OpenRewrite's language support to beyond Java
Contributed to the OpenRewrite project, a format-preserving AST transformer for scalable code refactoring. This work and its application in automating the remediation of security vulnerabilities across open source alongside Github's CodeQL was presented at Black Hat and DEF CON in August 2023.
Built a transpiler from Tidal Cycles (a DSL to create musical compositions) to LilyPond (a DSL for writing musical score). Developed an interactive environment for real-time score generation, which accepts Tidal patterns among other commands; upon the termination of an interactive session, the Tidal composition provided is exported as a Lilypond file. Utilized monadic QuickCheck for round-trip testing to verify correctness of the transpiler.
Haskell, Stack, QuickCheckDesigned and implemented a scalable, fault-tolerant distributed system hosting a platform akin to Google Apps (with storage and SMTP-driven email services), backed by a simplified, BigTable-type data store using primary-based replication. Employed a frontend load balancer and backend master node to redirect requests, manage nodes, and track node statuses. Utilized gRPC for inter-server communication and multithreading to handle multiple simultaneous requests
C, C++, gRPC, TypeScript, React, HTML/CSS, Make, BashDesigned and implemented a 2-way superscalar processor with a 5-stage pipeline with optimized bypass and stall logic for a simple RISC instruction set architecture; leveraged the carry-lookahead adder for efficiency in the ALU. Optimized the implementation of the processor to achieve a time closure frequency of 15.625 MHz.
Vivado Verilog HDL, Zedboard Implemented a Unix-like, single-process OS with a round-robin priority scheduler using the ucontext library.
Upon boot and mounting of PennFAT file system, a shell is executed, supporting foreground/background processes,
synchronous child waiting, redirection, and built-ins (including cat, sleep,
touch, etc.)
Developed a fully functional compiler for Oat, a type-safe language (similar to C) featuring structs, function pointers, arrays, and subtyping, using the LLVM compiler infrastructure (with ocamllex and menhir used for lexing and parsing). Implemented optimizations at the LLVM level using several dataflow analyses, including liveness, alias, and constant propagation analysis, to allow for constant folding and dead code elimination. Utilized Kempe’s graph coloring algorithm within the compiler backend for register allocation.
OCaml, ocamllex, menhir, LLVM, x86 Assembly, CModelled patient admittance to the ICU (i.e., the severity of a patient’s condition) using a voting ensemble of classifiers with optimized hyperparameters, including linear SVM, KNN, logistic regression, feedforward neural networks, and random forests, achieving an average of 90% accuracy on test data.
Python, Scikit-learn, MXNet, Spark, Pandas, NumPy, Seaborn, MatplotlibDeveloped the popular board game Blokus with single- and multi-player support, leveraging sockets to enable online gameplay.
Java, Java Swing, JUnit, Gradle