Sarthak Agrawal

My image

About

I am Sarthak, a fourth year undergraduate (grad. 2022) pursuing my degree in Computer Science and Engineering from IIT Delhi. I am deeply passionate about computer systems. I am interested in designing and engineering impactful systems. I started off with game development in my school days, which was my first exposure to computer programming and since then I've been hooked into programming.

Disclaimer: This webpage may be updated abruptly from time to time

Tip: Tap on any item to know more about it!

Education

Indian Insitute of Technology, Delhi

B.Tech. in Computer Science and Engineering

2022

Completed/Ongoing Courses (till Holi (Spring) Semester 2021)

  • Computer Science. Data Structures and Algorithms, Analysis and Design of Algorithms, Operating Systems, Database Management Systems, Computer Networks, Parallel and Distributed Programming, Theory of Computation, Artificial Intelligence, Machine Learning, Programming Languages, Computer Architecture, Design Practices, Digital Logic and System Design, Discrete Mathematical Structures for Computer Science
  • Mathematics and Others Probability and Stochastic Processes, Signals and Systems, Algebra, Introduction to Linear Algebra and Differential Equations, Introduction to Calculus, Introduction to Electrical Engineering.

RassJB Public School, Datia

Class XII

2018

Rani Laxmibai Public School, Datia

Class X

2016

Work Experience

Nirvana Insurance, SF Bay Area

Software Engineer Intern

Dec 21 - Apr 22

  • Worked on multiple infrastructure pieces throughout the internship in close collaboration with founding engineers
  • Designed and implemented an in-house feature store for data interchange between engineering and data science teams
  • Designed and implemented data pipelines running through snowflake, dbt and postgres to ingest and process FMCSA data
  • Wrote an distributed OAuth token management layer that guaranteed consumers an unexpired OAuth token, automatically refreshing the tokens if required. The layer was safe and optimized for concurrent access

Samsung HQ, South Korea

Software Engineer Intern

May - July, 2021

  • Worked in System Devices R&D team with the objective to improve the quality of automated UI testing on android
  • Designed and implemented an application to efficiently specify and simulate touch patterns in automated manner
  • A DSL was designed to specify touch patterns, and a compiler which could translate it into raw input events of 1 kernel
  • A runner application injected the compiled events into the attached device. The project obtained excellent feedback

Samsung Research, Bangalore

Software Engineer Intern

May - July, 2020

  • Researched on emerging DAG-based DLTs and analyse different protocols in speed and security.
  • Implemented a software simulator framework in python for high performance simulation of DAG-based DLTs.
  • Fully implement Avalanche and Conflux protocols in the simulator framework and analyse performance and security of the protocols under various simulated scenarios to determine optimal security parameters.

Newzera, Indore

Software Engineer Intern

April - May, 2020

  • Deployed a backend architecture for a micro-service with near real-time and high performance algorithms.
  • Used Amazon Web Services (AWS) : Lambda, DynamoDB, Elasticache, SQS, Streams and Aurora RDS.
  • Wrote stress tests, unit tests, integration tests, end-to-end tests for complete testing coverage.

Projects

User-level thread library for Linux

Coursework Project

Feb, 2021

  • Developed a user level thread library (in C) with the API interface similar to the kernel-level pthreads library on 1 .
  • The functions setjmp and longjmp were used to implement and achieve extremely fast context switch times (≈50 ns).

COVID-19 Dashboard for India using RDBMS

Coursework Project

March, 2021

  • A web-based dashboard for COVID-19 India which allowed users to ask highly customizable and dynamic queries.
  • Relational design enabled efficient implementation of queries otherwise not seen in conventional COVID-19 dashboards
  • The front-end was written in vanilla HTML, JS and CSS and backend was in flask. REST API conventions were followed.

Pacman AI

Coursework Project

2020

Programmed an AI to play the pacman game and its various variants like CTF, Clear the board, etc. The AI could successfully avoid both enemies and focus on eating food pellets, and can also strategize in a team setting (the tournament variant). This project series was an application of various concepts taught in the course Artificial Intelligence such heuristic based A* search, Reflex agent dynamics, Q-learning, etc.

Fast Multi-threaded Resilient Downloader(TCP)

Computer Networks Coursework Project

2020

Developed a small tool in python to download multimedia files over a TCP connection given a list of servers (peers) that have a copy. The file was logically split into chunks, each chunk was fetched from a server dynamically based on speeds and latency of them. The download was spread over multiple threads for efficiency, the tool was resilient to disconnections and resumed on reconnection.

Malware Detection using Machine Learning (HCL Hack IITK Hackathon 2020)

Cybersecurity & Machine Learning

July, 2020

  • Task was to identify a malicious executable given its strings, PE and cuckoo sandbox report file using supervised learning.
  • Some of the features used were API call names and frequencies, network activity, API statistics, entropy, headers.
  • Three models were trained and then ensembled to obtain the final model. Over 99.9% accuracy was achieved with low FP, FN
The source code has been made public, check it out on GitHub

Gamification of Security Training - Firewall Game

HCI, Network Security and Game Development

July, 2019 - January, 2020

The game is designed to teach players about firewall concepts with each levels having basic networking concepts. The goal is to teach simple commands and syntax of iptables which includes basic commands of adding rules to a firewall and understanding the use of chains. The Player in an administrator’s role sets up the firewall rules. Defense against various types of attacks; such as DOS attack, DDOS attack, IP Spoofing attack, etc. is taught through game play.

Try Online

Toy Prolog Interpreter

Programming Languages

March - April, 2020

  • Implemented a lexer and parser to tokenize and parse input programs written in a subset of PROLOG language.
  • Implemented a REPL interpretor which takes the generated AST from parser (acting as database) and queries as interactive input to generate the solution space.
  • Backtracking and unification was used to discover the solution space. Implementation was done in Ocaml.

Basic MIPS Processor

Computer Architecture

February - March, 2020

  • Implemented a processor on a FPGA Board following a reduced subset of MIPS instruction set.
  • Implemented a assembler and a software simulator for the processor with pipeline support in C++.
  • Tools used : BASYS (FPGA Board), Vivado (lang. VHDL).

Plagiarism Detector in C

Text analysis

August - September, 2020

  • Implemented a program which could take 2 word documents and output percentage similarity between them efficiently
  • N-grams of words were extracted and used to build a trie. Modified jaccad similarity was used as a measure of similarity
  • Model was able to detect cut-paste and light-revision plagiarisms efficiently even when number of documents to check was large

Arbitrary Precision Arithmetic

Computations on arbirarily large numbers

January - February, 2020

  • Implemented a library in C programming language which allows exact computations on arbirarily large numbers.
  • Both integer and floating point numbers were supported with arbitrary precision (user defined). Complex numbers were also supported.
  • Efficient algorithms were used to support the following operations : Add, Sub, Multiply, Divide, Exponent, Sqrt.

Unix Shell

Systems Programming

January 2020

  • Implemented a basic version of shell for POSIX compliant systems.
  • The implemented shell supports piping and redirection.
  • Optimized for speed and usability. Colored fonts were also used.

Digital Music Synthesizer

System Design, Digital Logic

October - November, 2019

  • Designed a digital music synthesizer which could play upto 16 different musical notes.
  • Harmonic overtones of notes were also superimposed for natural sound quality.
  • Synthesized on FPGA board (BASYS). Tools used : Vivado, VHDL.