DEARS
DEARS_cover
JavaScript SQL SpringBoot Gradle
An Android chat pet app where users can feed, play, chat, and make their pets go to sleep.
GitHub Link
Dialogue-Based Country Prediction Using NLP and ML
research_cover
Python NLP ML Models
Built several Python scripts to analyze dialogue datasets and predict country-level cultural patterns using embedding-based features (OpenAI API) and machine learning models.
Tasky
CSCI201_cover
SQL JavaScript API SpringBoot Gradle React
A website where the user can manage their projects, tasks, and group members. Includes several features such as adding group members through a share code, adding/deleting tasks, transferring ownership of projects, and more.
GitHub Link
Froggy Slides
AH_cover
HTML CSS SQL JavaScript
A simple flash card website to help with studying!
GitHub Link
Lvl∞nity
ITP303_cover
HTML CSS SQL JavaScript PHP
Personalized website for organizing the games the user has played and their reviews. Additional feature where user can search for games by different categories.
GitHub Link

DEARS

DEARS_main

Summary

Creating the Dataset

                
CREATE DATABASE IF NOT EXISTS dears;
USE dears;

CREATE TABLE Users(
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(25) NOT NULL,
    password VARCHAR(25) NOT NULL,
    avatar VARCHAR(25) NOT NULL,
    birthday DATE NOT NULL
);

CREATE TABLE PetType(
    type_id INT AUTO_INCREMENT PRIMARY KEY,
    type_name VARCHAR(25) NOT NULL
);
INSERT INTO PetType(type_name) VALUES
    ('Deer'),
    ('Bear');

CREATE TABLE Food(
    food_id INT AUTO_INCREMENT PRIMARY KEY,
    type VARCHAR(25) NOT NULL,
    food_points INT NOT NULL
);
INSERT INTO Food(type, food_points) VALUES
    ('tree bark', 5),
    ('berries', 10),
    ('mushroom', 20),
    ('honey', 5),
    ('salmon', 20);

CREATE TABLE AgeStage(
    age_id INT AUTO_INCREMENT PRIMARY KEY,
    age_stage VARCHAR(25) NOT NULL,
    meter_max INT NOT NULL
);
INSERT INTO AgeStage(age_stage, meter_max) VALUES
    ('baby', 10),
    ('teen', 20),
    ('adult', 40);

CREATE TABLE Pet(
    pet_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    type VARCHAR(25) NOT NULL,
    name VARCHAR(25) NOT NULL,
    growth_points INT NOT NULL,
    age_id INT NOT NULL,
    FOREIGN KEY (user_id) REFERENCES Users(user_id),
    FOREIGN KEY (age_id) REFERENCES AgeStage(age_id)
);

CREATE TABLE Happiness(
    happiness_id INT AUTO_INCREMENT PRIMARY KEY,
    age_id INT NOT NULL,
    meter_max INT NOT NULL,
    FOREIGN KEY (age_id) REFERENCES AgeStage(age_id)
);
INSERT INTO Happiness(meter_max, age_id) VALUES
    (10, 1),
    (20, 2),
    (40, 3);

CREATE TABLE Energy(
    energy_id INT AUTO_INCREMENT PRIMARY KEY,
    age_id INT NOT NULL,
    meter_max INT NOT NULL,
    FOREIGN KEY (age_id) REFERENCES AgeStage(age_id)
);
INSERT INTO Energy(meter_max, age_id) VALUES
    (10, 1),
    (20, 2),
    (40, 3);

CREATE TABLE Hunger(
    hunger_id INT AUTO_INCREMENT PRIMARY KEY,
    age_id INT NOT NULL,
    meter_max INT NOT NULL,
    FOREIGN KEY (age_id) REFERENCES AgeStage(age_id)
);
INSERT INTO Hunger(meter_max, age_id) VALUES
    (10, 1),
    (20, 2),
    (40, 3);

CREATE TABLE Journal(
    journal_id INT AUTO_INCREMENT PRIMARY KEY,
    pet_id INT NOT NULL,
    name VARCHAR(25) NOT NULL,
    FOREIGN KEY (pet_id) REFERENCES Pet(pet_id)
);

CREATE TABLE Entry(
    entry_id INT AUTO_INCREMENT PRIMARY KEY,
    journal_id INT NOT NULL,
    date DATE NOT NULL,
    summary VARCHAR(150) NOT NULL,
    mood VARCHAR(150) NOT NULL,
    FOREIGN KEY (journal_id) REFERENCES Journal(journal_id)
);

CREATE TABLE ChatChoices(
    chat_id INT AUTO_INCREMENT PRIMARY KEY,
    choice VARCHAR(150) NOT NULL
);
INSERT INTO ChatChoices(choice) VALUE
    ('Hello'),
    ('How are you?'),
    ('Tell me a joke!');

CREATE TABLE History(
    history_id INT AUTO_INCREMENT PRIMARY KEY,
    chat_id INT NOT NULL,
    history VARCHAR(255) NOT NULL,
    FOREIGN KEY(chat_id) REFERENCES ChatChoices(chat_id)
);
                
            

UML Diagram for the App

DEARS_UML

Dialogue-Based Country Prediction Using NLP and ML

research_main

Summary

Using Embedded Classification

                
# Compute confusion matrix
cf_matrix = confusion_matrix(y_true, y_pred, labels=labels)

# Create flattened counts and percentages
group_counts = ["{0:0.0f}".format(value) for value in cf_matrix.flatten()]
group_percentages = ["{0:.1%}".format(value) for value in cf_matrix.flatten()/np.sum(cf_matrix)]
group_labels = [f"{v1}\n{v2}" for v1, v2 in zip(group_counts, group_percentages)]
group_labels = np.asarray(group_labels).reshape(len(labels), len(labels))

# Plot heatmap
plt.figure(figsize=(8, 6))
sns.heatmap(cf_matrix, annot=group_labels, fmt='', cmap='Blues', xticklabels=labels, yticklabels=labels)
plt.ylabel("True")
plt.xlabel("Predicted")
plt.title("Confusion Matrix")
plt.show()
                
            

Testing with Other Models

Tasky

CSCI201_main

Summary

Creating the Database

CSCI201_database

Backend for the User

                
@JsonIgnore
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL) 
private List availability = new ArrayList<>(); 

@JsonIgnore
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List memberships = new ArrayList<>(); 
	
public User(int userID, String username, String email, boolean isGuest) {
	this.userID = userID; 
	this.username = username; 
	this.email = email; 
	this.isGuest = isGuest; 
}
                
            

Transferring Ownership

CSCI201_ownership

Froggy Slides

AH_main

Summary

Creating the Deck

AH_image_1

Displaying the Deck

AH_image_2

Froggy Slides

ITP303_main

Summary

Features

Creating the Database

ITP303_image