Assignment 1 : Web Application Mimicking Google Sheets
Objective:
Develop a web application that closely mimics the user interface and core functionalities
of Google Sheets, with a focus on mathematical and data quality functions, data entry,
and key UI interactions.
Features:
Spreadsheet Interface:
○ Mimic Google Sheets UI: Strive for a visual design and layout that
closely resembles Google Sheets, including the toolbar, formula bar, and
cell structure.
○ Drag Functions: Implement drag functionality for cell content, formulas,
and selections to mirror Google Sheets' behavior.
○ Cell Dependencies: Ensure that formulas and functions accurately reflect
cell dependencies and update accordingly when changes are made to
related cells.
○ Support for basic cell formatting (bold, italics, font size, color).
○ Ability to add, delete, and resize rows and columns.
Mathematical Functions:
○ Implement the following mathematical functions:
SUM: Calculates the sum of a range of cells.
AVERAGE: Calculates the average of a range of cells.
MAX: Returns the maximum value from a range of cells.
MIN: Returns the minimum value from a range of cells.
COUNT: Counts the number of cells containing numerical values in a
range.
Data Quality Functions:
○ Implement the following data quality functions:
TRIM: Removes leading and trailing whitespace from a cell.
UPPER: Converts the text in a cell to uppercase.
LOWER: Converts the text in a cell to lowercase.
REMOVE_DUPLICATES: Removes duplicate rows from a selected
range.
FIND_AND_REPLACE: Allows users to find and replace specific text
within a range of cells.
Data Entry and Validation:
○ Allow users to input various data types (numbers, text, dates).
○ Implement basic data validation checks (e.g., ensuring numeric cells only
contain numbers).
Testing:
○ Provide a means for users to test the implemented functions with their
own data.
○ Display the results of function execution clearly.
Bonus Features:
● Implement additional mathematical and data quality functions.
● Add support for more complex formulas and cell referencing (e.g., relative and
absolute references).
● Allow users to save and load their spreadsheets.
● Incorporate data visualization capabilities (e.g., charts, graphs).
Evaluation Criteria:
● Fidelity to Google Sheets UI: How closely the application's look and feel
matches Google Sheets, including drag functions and cell dependency handling.
● Functionality and completeness of the implemented features.
● Accuracy of the mathematical and data quality functions.
● Usability and intuitiveness of the user interface.
● Code quality and maintainability.
● Implementation of bonus features.
● Readme should give a clear explanation of Datastructures and tech stack used
and why so.
Assignment 2: Building a Support Agent Chatbot for CDP
"How-to" Questions
Objective:
Develop a chatbot that can answer "how-to" questions related to four Customer Data
Platforms (CDPs): Segment, mParticle, Lytics, and Zeotap. The chatbot should be able
to extract relevant information from the official documentation of these CDPs to guide
users on how to perform tasks or achieve specific outcomes within each platform.
Data Sources:
● Segment Documentation: https://segment.com/docs/?ref=nav
● mParticle Documentation: https://docs.mparticle.com/
● Lytics Documentation: https://docs.lytics.com/
● Zeotap Documentation: https://docs.zeotap.com/home/en-us/
Core Functionalities:
Answer "How-to" Questions:
○ The chatbot should be able to understand and respond to user questions
about how to perform specific tasks or use features within each CDP.
○ Example questions:
■ "How do I set up a new source in Segment?"
■ "How can I create a user profile in mParticle?"
■ "How do I build an audience segment in Lytics?"
■ "How can I integrate my data with Zeotap?"
Extract Information from Documentation:
○ The chatbot should be capable of retrieving relevant information from the
provided documentation to answer user questions.
○ It should be able to navigate through the documentation, identify relevant
sections, and extract the necessary instructions or steps.
Handle Variations in Questions:
○ Size variations. E.g extremely long question should not break it down.
○ Questions irrelevant to CDP. e.g Which Movie is getting released this
week.
Bonus Features:
● Cross-CDP Comparisons:
○ The chatbot can answer questions about the differences in approaches or
functionalities between the four CDPs.
○ Example question: "How does Segment's audience creation process
compare to Lytics'?"
● Advanced "How-to" Questions:
○ The chatbot can handle more complex or platform-specific "how-to"
questions.
○ It can provide guidance on advanced configurations, integrations, or use
cases.
Evaluation Criteria:
● Accuracy and completeness of assignment.
● Code quality and build.
● Handling of variations in question phrasing and terminology.
● Implementation of bonus features (cross-CDP comparisons, advanced
questions).
● Overall user experience and chatbot interaction.
Additional Notes:
● You can use any natural language processing (NLP) libraries or frameworks to
build the chatbot. Instead of NLP you can also use simple document indexer.
● You can choose to implement the chatbot as a web application using any tool.
● The focus of this assignment is software engineering and not Model building.
I understand you'd like assistance with two assignments related to web application development. I'll be happy to provide guidance on how to approach these projects. Let's break them down one at a time:
Assignment 1: Web Application Mimicking Google Sheets
This project involves creating a spreadsheet application similar to Google Sheets, focusing on mathematical functions, data quality features, and UI interactions. Here's an approach to tackle this assignment:
Here's a high-level approach to implementing this project:
Set up the project:
Implement the spreadsheet interface:
Implement drag functionality:
Implement mathematical and data quality functions:
Handle cell dependencies:
Implement data entry and validation:
Add row and column management:
Create a testing interface:
Implement bonus features (if time allows):
For the README, explain the tech stack and data structures used:
# Google Sheets Clone
This project is a web application that mimics core functionalities of Google Sheets.
## Tech Stack
- Frontend: React with TypeScript
- Chosen for its robust ecosystem and type safety, enabling faster development and fewer runtime errors.
- Backend: Node.js with Express
- Provides a lightweight and flexible backend for handling server-side logic and API requests.
- Database: MongoDB
- NoSQL database that allows flexible schema design, suitable for storing varied spreadsheet data.
## Key Libraries
- ag-Grid: For the spreadsheet component
- Offers a powerful, customizable grid that closely resembles Google Sheets' interface.
- mathjs: For mathematical operations
- Provides a comprehensive set of mathematical functions that can be easily integrated into our application.
- react-dnd: For drag-and-drop functionality
- Enables intuitive drag-and-drop interactions similar to Google Sheets.
## Data Structures
1. Spreadsheet Representation:
- 2D array of cell objects, each containing value, formula, and formatting information.
2. Cell Dependencies:
- Directed graph structure to track dependencies between cells.
- Enables efficient updates when cell values change.
3. Formula Parsing:
- Abstract Syntax Tree (AST) for parsing and evaluating formulas.
- Allows for complex formula evaluation and cell referencing.
These choices provide a balance of performance, flexibility, and ease of implementation for a Google Sheets-like application.This approach covers the main requirements of the assignment while providing a solid foundation for implementing the bonus features. The tech stack and data structures chosen allow for efficient development and scalability of the application.
Would you like me to elaborate on any specific part of this implementation plan?