For my CSCI 401 Capstone course this semester, I am teaming up with 4 other peers to create a machine
learning video data pipeline for USC Viterbi's Interaction Lab. The goal of the pipeline is to process
video data of children interacting with Socially Assistive Robotics (SAR) which are intended to improve
the user's health and wellness, communication, learning, and autonomy. Using the open-source libraries
OpenFace and OpenPose, the pipeline analyzes videos and generates CSVs containing timestamped computer
vision data. The pipeline then utilizes the Pandas library to reduce the CSV data to its two most
principal components, and visualizes these components on the front end GUI. Our team plans to implement
TensorFlow to learn characteristics of the video subject by tracking the subject's engagement levels and
the duration of his or her eye contact (gaze) with the robot.
FoodHunter is a mobile application I am currently developing in React Native. Utilizing the
Yelp Fusion API to query restaurants in the user's area, FoodHunter generates a stack of cards,
each with a local restaurant's information. Similar to the way Tinder users swipe right or left
on dating profiles, FoodHunter users swipe right on restaurants that seem appealing to them, or
swipe left if they are not interested.
Updates: (10/8/18): Completed implementing the GPS utilization to grab restaurant's
from the user's local area. Also implemented the search bar so users can search for specific types
of foods/restaurants. Need to work on UI so the app is more visually appealing.
Goals for this project: My next goal is to create a profile page for each restaurant
so users can tap on the swipeable cards and learn more about the restaurant in question. The profile page
should include several of the restaurant's images, a couple customer reviews of the restaurant, and possibly
a link to the restaurant's menu. In addition, I'd like to add a "saved restaurants" page so that
users can view their "right-swiped" restaurants conveniently for future reference. Lastly, although a
very complex and effort-demanding task, I think a social network functionality for the app would be
really cool to implement. Users would be able to compare their saved restaurants with those of their
friends, and could message each other to go and try their mutually saved restaurants together.
Using SpriteKit to access the iPhone's accelerometer and gyroscope, we created an iOS game that
emulates the classic experience of arcade air hockey. Users control their onscreen paddles by
sliding and shifting their phones along a flat surface, similar to the way paddles would be moved
in a game of real air hockey. Users hit a puck back and forth between each other until scoring by
hitting the puck into the opposite player's goal.
Working with another teammate, I manipulated the physics of the Sprite objects in our game using
SpriteKit to accurately simulate the behavior of objects in a game of real air hockey. In addition,
I created the front-end design for the app and the objects used in the app, such as the puck,
paddles, and logo.
Going forward, I would like to work out all persistence errors we experienced using the socket. In
addition, a good addition to the game would be a mini view that shows the entire table, so that
both players constantly see the puck's location; currently, players can only see their respective
halves of the table.
Languages: Swift 4, Node.js Tools: SpriteKit, Xcode 8, Socket.io
Reassuron is a Google Chrome extension that protects users from distressing or offensive online
content, and offers to contact the user's loved ones when it senses the user is in a state of
mental distress. It also offers calming exercises and random inspirational quotes that can help
ease the user's state of mind in times of stress.
Reassuron works by utilizing Google Cloud Natural Language to analyze the sentiment of the content
the user is viewing. Reaching out to loved ones while in a state of depression or poor mental
health can be incredibly hard. When Reassuron notices patterns of poor mental health in the user's
viewed web content, it offers to contact one of the user's loved ones with an automated message,
sensitively warning the contact of the user's possible poor mental health and reminding the friend
to contact the user.
Going forward, an important addition to Reassuron would be to send a more urgent message to a user's
contact if the sentiment score of the user falls below a certain threshold. The contact should be
messaged automatically, due to the tendency of users to deny help at times of severe mental health.
SCollage utilizes the Google Custom Search API to obtain images related to a user-entered topic
and uses those images to create a collage. SCollage was created as a part of my Software Engineering
course, to practice agile and scrum development methods.
SCollage was modified in a later project to accept a "shape string"--a string into which the
generated collage will be shaped. It was also modified to allow users to create accounts and
log in to the web platform. Logged in users are able to save collages into a database hosted
by Firebase, and can see previously saved collages in a collage history gallery.
Marvel Super Languages is a web app that teaches languages to users by making visual associations with
Marvel comic illustrations. Users can take language-specific quizzes to learn key phrases and words and
check their progress for each language learned.
In addition, MSL utilizes DialogFlow to create an AI chatbot experience in which users can conversate
with their favorite Marvel Superheroes. Users can translate these conversations to the language of their
choice to reinforce their language learning. This was executed with the Google Cloud Translate API.
SCheduler is a tool USC students can use to streamline the ever-difficult class registration process.
Taking the major and completed courses of a student as input, SCheduler utilizes an algorithm we
designed to generate five different course plans, each mapping out a unique arrangement of the
courses the student must take that will fulfill their specific graduation requirements.
The student can save their favorite course plans to reaccess it in future visits to the webpage or
regenerate five more schedules if they are unhappy with the first five. We utilized MySQL to save the
selected course plans to the database, as well as to store course information and major requirements.
BlackJack! is a standalone Java application I developed that allows 1-3 users connected on the same
server to play a modified version of the classic card game, BlackJack. It was a great chance to gain
experience in implementing server sockets to allow different clients on the same network to partake
in the same game. Currently, BlackJack! does not have a user-friendly GUI and is displayed in the