Experience

Experiences in the computer science field lecturing and in software development.

Full-Stack Software Engineer

September 2025 - Present · 1 Month

TreeTracker is an open-source environmental software platform built by an international engineering community at Greenstand to drive transparent, data-driven reforestation. The system tracks millions of trees through scalable Android, iOS, and web applications connected by a distributed microservices architecture.

Responsibilities include:

  • Developing and debugging cross-platform features across React, Android (Kotlin), and PostgreSQL-based services to improve data integrity and scalability.
  • Collaborating with an international team of engineers via GitHub code reviews, pull requests, and sprint discussions to maintain a clean, modular architecture.
  • Implementing UI and API improvements supporting real-time environmental data synchronization and geolocation accuracy.
  • Contributing to the evolution of Greenstand’s infrastructure, helping expand the platform’s capacity to handle over 5 million tree records and 10 000 users worldwide.

Android & iOS Tech Fellow

May 2025 - Present · 6 Months

Currently serve as a Mobile Development Teach Fellow for both Android & iOS at CodePath. I assist in mentoring 300+ developers for beginner and intermediate Android & iOS courses covering various Kotlin, Swift, Git, Android Studio, XCode and other Development topics. I focus on strengthening software engineering fundamentals through code review, debugging workflows, and scalable architecture practices. In my time as a Tech Fellow, I was able to contribute to the permanent adoption of a revision process for lab documents by assessing and correcting lecture and lab documents and programs pre-releass and notifying editors.

Responsibilities include:

  • Guiding 300+ developers per course in Android and iOS development courses through structured debugging sessions and code reviews, reinforcing clean architecture, UI design patterns, and API integration best practices.
  • Reviewing students' codebases one-on-one, identifying logic, syntax, and architectural issues in labs and projects while explaining root causes and recommending efficient fixes.
  • Implementing a pre-release review pipeline for lecture code and sample projects, which improved product stability and documentation accuracy—boosting student satisfaction by 30% in two weeks and lead to the permanent adoption of a revision process.
  • Reduced lab build failures and runtime bugs by leading weekly sessions on dependency management, UI rendering, and REST API error handling, improving code reliability and submission success rates.

Private Computer Science Tutor

Febuary 2024 - Present · 1 Year 9 Months

Currently tutoring college and high school students on various computer science courses. The courses of most focus include Advanced Placement Computer Science A (High School Course for College Credit), Introduction to Object Oriented Programming and Data Structures (CS101/CS201 for Colleges).

Client progression and focus areas are documented in folders and regularly updated each session. Weekly mock exams are conducted for AP CS A using any combination of past AP Exam questions (2024 - 2000) that I assessed the client should focus on as an area of opportunity. Weekly tutor sessions cover specific computer science topics of the clients choice. Tutor sessions are done using a mixture of the Demonstrator and Facilitator teaching styles.

Responsibilities include:

  • Instruct students through weekly coding sessions, emphasizing algorithmic thinking, design principles, and debugging strategies.
  • Design and administer mock AP CS A exams using curated questions (2000-2024) to target key growth areas.
  • Document and track individual progress after each session, adjusting lesson focus based on performance metrics.
  • Provide targeted code reviews and feedback to improve readability, logical flow, and software development best practices.
      • AP Computer Science A - High School (Grades 9-12)
            • 1.1 - Why Programming? Why Java?
            • 1.2 - Variables and Data Types
            • 1.3 - Expressions and Assignment Statements
            • 1.4 - Compound Assignment Operators
            • 1.5 - Casting and Ranges of Variables
            • 2.1 - Objects: Instances of Classes
            • 2.2 - Creating and Storing Objects (Instantiation)
            • 2.3 - Calling a Void Method
            • 2.4 - Calling a Void Method with Parameters
            • 2.5 - Calling a Non-void Method
            • 2.6 - String Objects: Concatenation, Literals, and More
            • 2.7 - String Methods
            • 2.8 - Wrapper Classes: Integer and Double
            • 2.9 - Using the Math Class
            • 3.1 - Boolean Expressions
            • 3.2 - if Statements and Control Flow
            • 3.3 - if-else Statements
            • 3.4 - else if Statements
            • 3.5 - Compound Boolean Expressions
            • 3.6 - Equivalent Boolean Expressions
            • 3.7 - Comparing Objects
            • 4.1 - while Loops
            • 4.2 - for Loops
            • 4.3 - Developing Algorithms Using Strings
            • 4.4 - Nested Iteration
            • 4.5 - Informal Code Analysis
            • 5.1 - Anatomy of a Class
            • 5.2 - Constructors
            • 5.3 - Documentation with Comments
            • 5.4 - Accessor Methods
            • 5.5 - Mutator Methods
            • 5.6 - Writing Methods
            • 5.7 - Static Variables and Methods
            • 5.8 - Scope and Access
            • 5.9 - this Keyword
            • 6.1 - Array Creation and Access
            • 6.2 - Traversing Arrays
            • 6.3 - Enhanced for Loop for Arrays
            • 6.4 - Developing Algorithms Using Arrays
            • 7.1 - Introduction to ArrayList
            • 7.2 - ArrayList Methods
            • 7.3 - Traversing ArrayLists
            • 7.4 - Developing Algorithms Using ArrayLists
            • 7.5 - Searching
            • 7.6 - Sorting
            • 8.1 - 2D Arrays
            • 8.2 - Traversing 2D Arrays
            • 9.1 - Creating Superclasses and Subclasses
            • 9.2 - Writing Constructors for Subclasses
            • 9.3 - Overriding Methods
            • 9.4 - super Keyword
            • 9.5 - Creating References Using Inheritance Hierarchies
            • 9.6 - Polymorphism
            • 9.7 - Object Superclass
            • 10.1 - Recursion
            • 10.2 - Recursive Searching and Sorting
          • Previous Exam FRQ Coverage
            • Years Covered: 2000 - 2023
            • Over 80 Official FRQ Questions and Answers Spoken of
            • Mock Exams (90 Minute FRQ Questions Based on Student Needs)
            • FRQ's Assigned Hand-Selected (Based On Students Needs, Performance and Understanding)
          • Live Coding
            • Execute a Very Hands-On Approach With Practice Questions (Visualization to Code)
            • Feedback Given as Needed Per Question
            • Explanations on Material Provided on Request or When Seemingly Necessary
          • Concept Visualization
            • Explanations Generally Accompanied With Visualization Examples
            • Emphasized when Dealing with Units 5, 6, 8 and 10
            • Searching and Sorting Always Accompanied with Visualization
      • Data Structures - College (Freshman/Sophomore)
          • Understanding Single and Multi-dimensional Arrays
          • Understanding Dynamic Arrays
          • Understanding Traversal, Insertion and Deletion of an Array
          • Understanding Memory Representation of an Array
          • Understanding Arrays for Implementing Program Functionality
          • Understanding Node Structure of a LinkedList
          • Understanding Traversal, Insertion and Deletion of a LinkedList
          • Understanding Memory Representation of a LinkedList
          • Understanding LinkedLists for Implementing Program Functionality
          • Understanding Stack Structure
          • Understanding Traversal, Insertion and Deletion of a Stack
          • Understanding Stack Implementation using Backing Array or LinkedList
          • Understanding Stacks for Implementing Program Functionality
          • Understanding Queue Structure
          • Understanding Traversal, Insertion and Deletion of a Queue
          • Understanding Queue Implementation using Backing Array or LinkedList
          • Understanding Queues for Implementing Program Functionality
          • Understanding Min Heap and Max Heap principles
          • Understanding Heapify with Arrays
          • Understanding Heaps for Implementing Program Functionality
          • Understanding Tree Structure
          • Understanding Tree Representation with Arrays
          • Understanding Binary Search Trees
          • Understanding Trees for Implementing Program Functionality
      • Object-Oriented Design and Programming: Java - College (Freshman/Sophomore) / High School (Grades 9-12)
          • Understanding Class Functionality Abstraction
          • Understanding Function Abstraction
          • Understanding Subclass Polymorphism
          • Understanding Method Overloading
          • Understanding Subclass Properties
          • Understanding Method Overriding
          • Understanding Class Properties Structure
          • Understanding Accessing & Modifying Private Class Properties
      • Web Programming - Conceptual
          • Understanding HTML, CSS and JavaScript Interaction to Create Static Web Pages
          • Understanding JavaScript Frameworks and DOM Manipulation
          • Understanding HTML tags
          • Understanding the DOM
          • Understanding index.html
          • Understanding Hosting Websites on GitHub
          • Understanding Domain Names and How to Register a Domain Name
      • Java
      • Python
      • JavaScript
      • HTML
      • C
      • C++

PoliTech SWE Research Assistant

August 2023 - August 2024 · 1 Year

In my time at Stony Brook University, I was a assisting full-time Professor Robert Kelly as a research assistant for his research group PoliTech. I was a member of the Ensemble Generation and Ensemble Cluster Analysis & Visualization sub project teams that performed the crucial jobs of generating ensembles necessary for PoliTech to move forward as well as analyzing and visualizing this data for others.

Responsibilities include:

  • Standardizing the code to run on the 'SeaWulf Cluster' to generate ensembles.
  • Implementing optimal transport algorithms for measuring district plan distances.
  • Implementing cluster analysis to create tree structures for ensembles.
  • Designing cluster display visualization techniques.
  • Evaluate ensemble approaches (optimal transport, entropy, and population similarity) to reduce clusters in an ensemble.
    • Showcasing - SeaWulf Cluster

      SeaWulf Cluster - Presentation

      Brief Explanation

      The SeaWulf cluster is the supercomputer provided by Stony Brook University. It is crucial for calculations done at Politech in the creation of ensembles and was also an integral part in a web application project I was a part of where I took on the role of the front-end developer. The necessity came from the cluster's high computational power for generating an unbiased political plan from the averaging of 10,000 random plan variations. This project is listed as the Political Gerrymandering State Analyzer.

  • Running the ensemble generating code to create ensembles in varying sizes of 500, 5,000, and 10,000 for all multi-member states.
  • Continuously build a repository to make ensembles available to Stony Brook University researchers.

Undergraduate Teaching Assistant - CSE216

August 2023 - January 2024 · 5 Months

Previously I was a teaching assistant at Stony Brook University, assisting Research Assistant Professor Ritwik Banerjee for CSE216: Programming Abstractions, a crucial course for determining computer science major eligibility.

Responsibilities included:

  • Conducting weekly recitation lectures on various computer science topics. Recitations lectures are done using a mixture of the Demonstrator and Facilitator teaching styles while office hours using primarily the Facilitator teaching style.
      • Programming Language Paridigms
        • Main focus on the functional and object-oriented programming paradigms
      • Functional problem-solving using a high-level functional language (OCaml)
      • Object-oriented design and programming
      • Cross-cutting programming language concepts
      • Java
      • Python
      • OCaml
  • Hold regular weekly office hours Tuesday from 5:00pm - 6:30pm and Thursday from 6:00pm - 7:30pm to elaborate on topics discussed. I use primarily the facilitator style of teaching when 5 students or lower attend and prioritize the demonstrator style if more than 10 students arrive at a time.
  • Assist in grading student assignments including recitation work and exams and in proctoring exams.
  • Lead reviews before exams to cover material covered in both lecture and recitation. Encouraging student engagement has proved to be a positive impact in reviews.