profile picture

Karan S

- Research Program Mentor

MS at University of Virginia

Expertise

Computer Science, Software Development, Data Structures & Algorithms, Computer Architecture, Operating Systems, Embedded Systems, Computer Networking

Bio

Hey there, I'm Karan! I love all of computer science, but I am specifically passionate about the intricacies and applications of low-level programming whether it be in computer networking, computer architecture, operating systems, or embedded systems. I am especially intrigued by how software interacts with hardware, and how to write optimized code that can fully take advantage of the hardware it is running on! I originally began as a mathematician/statistician, but then realized that I am able to combine all of my passions by working in computer science. I received both my Bachelor's in Computer Science and my Master of Computer Science degrees from the University of Virginia, where I completed a variety of research projects ranging from Hardware Simulation to FPGA Synthesis. I hope to impart on students the importance and breadth of computer science. While AI/ML have recently become hot topics, there are a lot of different areas of computer science that are just as important. Aside from Computer Science, I love music. I have been picking up the Bass Guitar recently, but I also play the Dhol, Tumbi, and Tabla (traditional Indian instruments). I also game a little, and am currently finishing up an RL1 run on Elden Ring. I love eating all kinds of food and exploring nature! I have a self-diagnosed caffeine addiction.

Project ideas

Project ideas are meant to help inspire student thinking about their own project. Students are in the driver seat of their research and are free to use any or none of the ideas shared by their mentors.

CPU Emulator in Software

Have you ever wondered how processors work on a fundamental level? In this project, we will learn about a specific processor architecture and create a simulator from scratch that can emulate how that processor works. These are widely used and very important, as they allow developers to test machine-specific code without having to obtain the physical machine. Outcome: Your own Github Repo containing Simulator/Emulator, Deep understanding of computer architecture, Software Design and Evaluation.

GPU Programming Project

Have you ever been curious about how developers like Quants and Game Designers create high performance code? In this project, we will use GPU programming (ex. CUDA) to create efficient and optimized code for a wide variety of scenarios. Start from scratch or upgrade an existing codebase to allow for parallel programming on GPUs. Outcome: Your own Github Repo containing the code. Learn about parallel processing, GPU programming, CUDA, High performance computing.

Software Engineering Fundamental Portfolio

Have you ever wondered what it takes to land a Software Engineer/Developer job? In this project, we will be using resources like ProjectEuler, LeetCode, and HackerRank for you to (1) get hands on experience with algorithms and data structures, (2) learn and understand when to use design patterns, and (3) create a portfolio that showcase your understanding in these programming fundamentals. Based on your programming level, we can dive into more advanced and complicated data structures and algorithms. Outcome: Your own Github Repo containing the portfolio. Learn about algorithms and data structures.

Create your own Unix-like Shell

Ever wondered how Shells like Terminal, PowerShell, and Bash work? In this project, you will create a Unix-like shell from scratch that supports running executables, supporting input/output redirection, as well as pipelines of multiple commands. Outcome: Your own Github Repo containing the code for the shell, Deeper understanding of operating system fundamentals, Software design and development.

Cellular Automata Modelling for Dynamical Systems

Ever wondered how researchers model and predict dynamical complex systems like virus spread, gas/fluid dynamics, and human movement? In this project, we will create a cellular automata model that can be used to simulate a complicated system, such as COVID-19 spread. Outcome: Your own Github Repo containing the code for model, Understanding of mathematical modeling in software, Graphical presentation of information, Software design and development.

Coding skills

C, C++, SIMD, Assembly, Python, CUDA, Java, Verilog, R

Languages I know

Hindi, intermediate

Teaching experience

I have been a tutor and TA for undergraduate computer science courses (Computer Architecture, Operating Systems). There, I hosted office hours to help students understand content, tackle homework, and develop overall CS skills.

Credentials

Work experience

NASA (2023 - 2023)
Software Engineer

Education

University of Virginia
BA Bachelor of Arts
Computer Science
University of Virginia
MS Master of Science
Computer Science

Interested in working with expert mentors like Karan?

Apply now