Martin Estrin Programming Projects

AI Spotify Playlists: Text to Playlist

Languages & Technologies Used: Python, Flask, OpenAI API, Spotify API, JavaScript, HTML, CSS

This web application enables users to create a Spotify playlist by entering a playlist name and description. The description can include details such as artists, genres, or music moods (e.g., workout, studying, etc.). The description is sent to the OpenAI API, which generates a list of songs based on the input. This song list is then sent to the Spotify API, which creates a playlist that matches the provided description.

Stock Trading Site

Languages & Technologies Used: Java, MySQL, JavaScript, Java Servlets, Apache Tomcat, HTML, CSS

This web application pulls live stock data via the Finnhub API. Users can look up the share price (and other relevant information) of any stock listed on the NYSE or Nasdaq. After making an account on the site, users can buy and sell shares. User portfolios are stored in a MySQL database, enabling users to view all the stocks in their portfolio, check their current balance, and see the return on each of their investments.

Doublet Game Solver

Languages & Technologies Used: Python, Django, JavaScript, C++, HTML, CSS

This web application uses the A* Search Algorithm to solve the Doublet Game (also known as Word Ladder). Users define a "starting word", "ending word" and "word bank." Using only words from the word bank, the program transforms the starting word into the ending word — only changing one letter at a time — with the fewest possible amount of transformations.

GoHiking! Android Application

Languages & Technologies Used: Android Studio, Firebase, Java, Kotlin, Google Maps API, XML

The GoHiking! app is designed to help hikers discover hiking trails, keep track of their favorite trails, and connect with fellow hikers. This was a group project with two fellow engineers for CSCI 360: Software Engineering at USC Viterbi School of Engineering. This android application allows users to view hiking trails in their area, rate and review hiking trails, add friends, and organize group hiking activities.

Live On-Demand Tutoring Service

Languages & Technologies Used: Node.js, NoSQL (MongoDB), HTML, CSS

This project is a live, on-demand peer tutoring system. It is designed to allow students to be tutored by qualified individuals in various classes. There are two sites: the tutor dashboard allows tutors to sign up for the platform, and the customer dashboard allows students to get tutored in a particular subject. The data surrounding tutors and customers is stored in a MongoDB NoSQL database. Using Node.js, I implemented an algorithm that pairs students with a qualified tutor who is online and available.

Other Projects:

AVL Tree

I implemented an AVL Tree in C++, enabling logarithmic worst-case runtimes for key operations such as add, remove and update. The implementation also uses C++ templates, enabling support for all types.

RSA Encryption System

I implemented a public key encryption system in C++, following the RSA algorithm.

BASIC Interpreter

This C++ program takes in a plain text file containing code in the BASIC programming language, interprets it, and prints the output in a new plain text file.