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
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.