Skip to content

dsun980701/CS32_Project_4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

CS32_Project_4 : Unhinged

This was the final project from CS32 course in UCLA. The class-distributed project spec, provided codes, and raw data are in the folder "Unhinged_Provided". The folder "Project_4" cotains all of the submitted codes and report for the project, which were all written strictly by myself, David Sun.

The following project has scored 100/100; I've recieved an A+(top ~4%) as the final grade for the course CS32.

Further details can be found in the Project Spec, and the code; here is an overall high-level summary of the project:

Goal

-To design a text-only dating platform which matches couples based on their inputted attributes.

-Matches are made based on the highest number of "compatible attributes". 

-100k members are allowed to input dozens of attributes.

Restriction

1. Specific C++ Standard Template Library data sturctures, such as variants of map, are banned from usage. Specific STL limitations are found in the spec.

2. Big-O notation limits are placed on data insertion and retrieval time specific to each class; most are O(log2 N) or lower than O(N) for retrieval, and O(K) for insertion where K is the length of the string. Specific Big-O limitations are found in the spec.

3. Public functions cannot be added beyond the ones required in the spec.

Architecture Overview -There are five classes that were implemented in the project.

1. RadixTree Class 
  a. Template for map type data structure based on radixtree configuration, which is capable of mapping a key std::strings to any data type. Report document explains in great detail about the implementation logic, and the code consists of comments for the architecture.
  b. The implemented template for this data structure was widely used throughout this project, for efficient data allocation and retrieval.
  
2. PersonProfile Class
  a. Represents a member's profile, which includes name, email, and attribute-value pairs.
  
3. MemberDatabase Class
  a. Efficiently loads and retrieves all of the memebers' informations. All of the members' PersonProfiles are saved in RadixTree data structure.
  
4. AttributeTranslator Class
  a. Identifies and outputs compatible attribute-value pairs based on a specified input pair.
  
5. MatchMaker Class
  a. Based on an inputed email of a member, this class retrieves attribute-value pairs from the specified member's PersonProfile within the MemberDatabase, then determines compatibility through the AttributeTranslator, and ranks matched members based on a minimum compatibility threshold.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages