cucapra / undergrad-research

file issues here if you're interested in doing research with us!
https://capra.cs.cornell.edu/ugresearch.html
0 stars 0 forks source link

Kabir Anirudh Samsi #129

Closed KabirSamsi closed 7 months ago

KabirSamsi commented 10 months ago

Personal Details

Name: Kabir Samsi

Undergrad or MEng? Undergraduate (Computer Science & Mathematics)

Year in Cornell: Sophomore (2nd year)

Relevant classes: CS2112, CS3110, CS3410, CS4820, CS4110, MATH2940 I also plan to take CS4120, CS6117 and CS4160 in upcoming semesters.

Expertise (languages/frameworks/etc.): OCaml, C, C++, Haskell, Java, Python (Pandas, TensorFlow, Numpy, PyTorch), JavaScript (Node, Express, React, Angular), Assembly (RISC-V, x86), Go, Ruby, SQL, MongoDB

I am also currently self-learning Rust!

My professional expertise is primarily in Full-Stack Development and Machine Learning. I have worked with the MEAN (Mongo, Express, Angular, Node) Stack on a number of different projects, including a data-based bird ID system and a community organization platform. With Python and Machine Learning, I have worked at the Cornell Lab of Ornithology to improve machine learning classifiers for bird identification. Recently, I have begun to work more with OCaml, C++ and Haskell more as I attempt to delve deeper into understanding and designing programming languages. I have built multiple interpreters in OCaml, C and C++ both for Cornell classes and independent projects.

Research

When do you want to do research?

I’m open to whichever opportunities present themselves. I would love the opportunity to get involved this summer, and continue into the 2024 Fall Semester. I would also be happy to start in the 2024 Fall. If I could get some early experience this Spring to prepare me for taking on a larger rule in the future, that would be fantastic

What is exciting to you about research? I have always had a love for learning, and a love for trying to delve deeper into concepts I study. In particular, something I've discovered about myself is although I love applying concepts to solve real-world applications, sometimes I just want to experiment with new ideas I have that I feel can further understanding in a certain field.

In high school, I worked as a student researcher for a machine learning team. Here, my team worked on developing and analyzing the performance of a series of multi-layered supervised learning models, analyzing how different feature vector dimensions and intermediary models improved the performance. At the end of our work, we presented our findings to a community and journal.

What I loved in particular was the idea that we were really making a small difference in a highly applicable area, while getting to experiment by ourselves in something we were really passionate about. That is what draws me to research here – as someone who has recently found a love for working with programming languages, I would love to further my knowledge by. going really deep into a topic, and discovering and designing something that makes a huge difference.

Within programming languages, I think what I especially love is the idea that I can effectively design not just an application for myself, but a tool with which I can use to build other applications. I also love intersecting PL with my other interests. For example, I am an amateur musician and composer, and recently started developing Franz, a functional language with which I can effectively compose music using my own notation. My goal here is to resolve many of the gripes I have with standard musical notation, while advancing my own ability to design an interpreter and elegant language.

What kind of research do you want to do? I'm really excited at the prospect of working on implementing languages that can a) be used to solve targeted real-world problems and b) be used to optimize hardware and compilers. In particular, I was drawn to the ideas of two of the major papers which stood out to me (which I descibe in the below section) which discuss creating a language to simplify typing errors in linear algebra graphics, and one which describes using an intermediary programming language and compilers to assist with Hardware Acceleration.

I would be thrilled if I could get an opportunity to work on implementing programming languages that resolve issues with modern software (such as Capra's Gator project), or developing a language that could assist with hardware optimizations (such as Calyx.). I have described my fascination with both of these projects in more detail below.

Background

Was there a paper that particularly excited you?

I have read a few of Capra’s publications, and there were a few I found really interesting. The first that stood out to me was Geometry Types for Graphics Programming (2020), which discusses the Gator language. I was fascinated to read more about how Gator targets these issues, along with different coordinate systems, polar and spherical coordinates and transformations, through the three-layered geometry type.

From the start, I was intrigued to read more about how the language aims to resolve issues by compactly expressing geometric structures as a triple of a reference frame, object and coordinate scheme. Transforming between coordinate systems, in particular, has always struck me as being difficult in many other linear algebra frameworks used in graphics, but the clean syntax and rules defined throughout section 5 of the paper seem to resolve much of this.

The paper initially stood out to me as I identified a similar interest – I’m currently working on my own amateur programming language which aims to facilitate the way that programmers can represent and work with vectors and matrices, and solve linear algebra problems. Reading more about how types are enforced in Gator has helped me improve my own perspective on my project.

Which of the [current research projects] (https://capra.cs.cornell.edu/) would you be interested in working on and why?

As I mentioned when discussing papers that excited me, the work on Gator is something I’d be extremely excited to get involved in. I am not totally sure if it is still active, but I found it initially by looking at the list of projects on Capra’s homepage. As I discussed in my initial bio, I have always loved working at the intersections of different fields, or finding applications of concepts that excite. I love working with linear algebra, and so designing a language to optimize it greatly appeals to me. I think that it presents a fantastic approach to a significant mathematical problem that extends to a much larger issue in graphics. I've discussed some of the points of its research which really stand out to me under the papers of interest section.

As I mentioned earlier, it interested me intellectually as well, as I’m also trying to figure out ways to develop languages that facilitate linear algebra operations. Gator's type system was really inspiring to read about, as was the description of how the language unifies coordinate systems. If Gator is not active any longer, I would love to learn more about any of Capra’s current work using PL in Graphics, or in any applied areas.

Another project that excited me was Calyx, which I believe is still active. I’m not totally familiar with Hardware Acceleration, but I was quite fascinated reading through Capra’s recent publication, A Compiler Infrastructure for Accelerator Generators. In particular, the section on the “Calyx Intermediate Language” and understanding its attribute encoding system was fascinating to read through. Working with a multi-layered compilation system is also something that really excites me – while I haven't done so with compiler-based projects, I've previously worked on research involving analyzing the performance of intermediary machine learning models. I would love to have the opportunity to help work on the Calyx compiler system, and learn more about designing compilers for intermediary languages.

However, I am keen to get involved in any way possible. These are just a few projects whose papers really drew me in.

Anything else you want to tell us about yourself?

I began to develop a passion for working with and designing programming languages over the 2023 summer, and started working on independent PL projects in the last 2-3 months. I’m currently designing an interpreter for a language aimed to facilitate linear algebra operations, and working through an idea of a language that can compactly represent music through functional programs (I mention these both in my resume and research statement).

While I love designing semantics, creating evaluators and interpreters for languages is what I have primarily worked with so far (both in CS3110 and CS4110, as well as in my personal projects). I feel that I would be at my best, and be able to offer the best help, at the current moment as Capra is currently oriented more towards an application standpoint. I’m keen to get any experience possible, and learn as much as I can about working with programming languages and compilers.

Please view my research statement and resume below for more details about me.

Attach a CV/Resumé: Samsi_Kabir.pdf Kabir Samsi Resume.pdf

Thank you so much and I look forward to hearing from you!

KabirSamsi commented 7 months ago

Closing this issue as I have accepted at position in the Capra Lab.