Checklist Feature Blog

---

What is it?

The Checklist Feature is an interactive tool designed to allow users to add, manage, and track checklist items efficiently.

Unlike the previous Analytics API, which passively collected data, the Checklist API provides direct user engagement by enabling CRUD (Create, Read, Update, Delete) operations on checklist items.

---

Core Functionality

  • Create: Users can add checklist items specific to their account.
  • Read: The system fetches and displays the user's checklist in real time.
  • Update: Users can mark checklist items as completed or incomplete.
  • Delete: Users can remove items they no longer need.
---

Features

  • Add Items: Users can input items to their personal checklist. Stored in database via a POST request.
  • Mark Items as Complete: Users can check off items via a PUT request.
  • Delete Items: Users can remove items via a DELETE request.
  • Fetching Items: A GET request retrieves user-specific checklist items.
---

Frontend UI Design

The checklist UI consists of an input field, a submission button, and a dynamically updating list of items. Each item has a checkbox for completion and a delete button for removal.

---

Functionality & API Integration

Adding an Item

Users enter an item name, and it is sent via a POST request to the backend:


const postData = {
    user_id: localStorage.getItem("uid"),
    item_name: itemName,
    is_checked: false
};

await fetch(`${pythonURI}/api/checklist`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(postData)
});

Fetching Items

When the page loads, it fetches user-specific checklist items:


const response = await fetch(`${pythonURI}/api/checklist?user_id=${userId}`, {
    method: "GET"
});

Updating Item Status

Items can be marked as complete/incomplete with a PUT request:


await fetch(`${pythonURI}/api/checklist`, {
    method: "PUT",
    body: JSON.stringify({ id, is_checked: isChecked })
});

Deleting Items

Users can remove items via a DELETE request:


await fetch(`${pythonURI}/api/checklist`, {
    method: "DELETE",
    body: JSON.stringify({ id })
});

---

Feature Screenshots

Me at the student panel
Checklist feature
Data in table

CPT Requirements Met

Data in table

Overview

My feature allows users to create, manage, and check off items on customizable checklists, ensuring efficient task tracking. The system processes real-time data streams in the form of text inputs and binary status values, enabling seamless updates and organization. It supports collaboration by allowing shared checklists, while ensuring clarity and reliability through structured categorization.

Full Stack

---

Challenges & Solutions

Issue with API Requests Using Incorrect Ports: Initially, the frontend was sending requests to port 4887 instead of the backend’s actual port. Adjusting the port in the configuration resolved this issue.

Authorization Errors:The API initially required tokens for authorization, which was causing errors. Switching to user ID-based authentication resolved this issue.

CPT Requirement Breakdown

---

Big Idea 1: Program Design & Development

  • Collaboration & Project Planning: Used a Khan Board to manage tasks, track progress, and ensure efficient teamwork.
  • Implementation & API Development: Designed backend API with Flask, tested using Postman, and debugged errors like 404 issues with developer tools.
---

Big Idea 2: Data & Security

  • Database & Authentication: Implemented SQL for storing user accounts and checklist data, ensuring secure access with JWT authentication.
  • Security Measures: Applied SSL/TLS encryption, firewall rules, and hashed passwords to protect user data.
---

Big Idea 4: Internet & Deployment

  • Backend Deployment: Hosted API on AWS EC2 with Docker, configured domain routing, and used Cockpit for server management.
  • Performance Optimization: Improved frontend UX with a refined checklist interface, minimized assets for faster load times, and indexed databases for efficiency.
# AP CSP MCQ Retrospective & Improvement Plan
AP CSP MCQ Performance Chart
---

Performance Analysis

After reviewing my AP CSP Practice Exam 1 results, I have identified key areas of **strength** and **improvement**. My goal is to build on my strong foundation while improving weak areas to maximize my AP exam score.

---

Strengths: Areas Where I Excelled

  • Data Representation & Storage: Strong grasp on binary numbers, data compression, and using programs with data.
  • Control Structures & Algorithms: High performance in conditionals, loops, and algorithm development.
  • Networking & The Internet: Deep understanding of Internet structure, fault tolerance, and parallel computing.
  • Computing Ethics & Security: Mastery of computing bias, cybersecurity risks, and legal/ethical concerns.
---

Areas for Improvement

  • Debugging & Error Correction: Need to improve on identifying and fixing coding errors efficiently.
  • Library & API Usage: Struggled with utilizing built-in libraries and understanding documentation.
  • Data Abstraction: Need to practice variable usage and function abstraction for cleaner, more efficient code.
---

Action Plan for Improvement

To improve before the final AP CSP exam, I am working to the following steps:

  • **Targeted Debugging Practice:** Solve coding exercises that require finding and fixing logical errors.
  • **API Documentation Review:** Work with APIs like Python’s `math` and JavaScript’s `fetch()` to improve function usage.
  • **Refactoring Code:** Improve variable usage and abstraction in my projects to follow best coding practices.
---

Final Thoughts

This retrospective helped me recognize both my strengths and weaknesses. By focusing on **debugging, API usage, and algorithm efficiency**, I can ensure that I’m fully prepared for the AP CSP exam.

With **consistent practice and a strategic study plan**, I am confident that I can strengthen my understanding and **achieve a top score on the AP CSP Exam!**

Corrections

---

Logic Circuit Analysis

Question: The diagram below shows a circuit composed of three logic gates. Each gate takes two inputs and produces a single output. For which of the following input values will the circuit have an output of true?

Answer: C → A = false, B = true, C = true, D = true

Why: The OR gate will produce true, and the first AND gate will produce true. Since both inputs to the second AND gate are true, the circuit's output will be true.

---

Robot Movement Analysis

Question: Do Program I and Program II correctly move the robot to the gray square?

Answer: Both Program I and Program II correctly move the robot to the gray square.

Why: Both programs successfully navigate the robot through the grid using correct movements and rotations.

---

Code Correction

Question: A student wrote the following program to remove all occurrences of the strings "the" and "a" from the list wordList. What correction is needed?

Answer: Inserting index ← index - 1 between lines 7 and 8.

Why: This ensures that the index is decremented after checking each list element, avoiding skipping elements.

---

Binary Representation

Question: Which of the following can be represented by a sequence of bits?

Answer: An integer, an alphanumeric character, and a machine language instruction.

Why: All digital data is ultimately represented in sequences of bits.

---

Spinner Simulation

Question: Which of the following code segments can be used to simulate the behavior of the spinner?

Answer: C

Why: The code correctly models the probability distribution of the spinner outcomes.

---

Metadata Storage

Question: Which of the following is least likely to be stored as metadata for a black-and-white image?

Answer: A duplicate copy of the data

Why: Metadata typically describes the data rather than duplicating it.

---

Course Grade Calculation

Question: How can a student's course grade be calculated from individual assignment scores?

Answer: finalGrade = Sum(scores) - Min(scores); finalGrade = finalGrade / (LENGTH(scores) - 1)

Why: This method accounts for dropped lowest scores before calculating the average.

---

Simulation Complexity

Question: How does removing variables affect the runtime of a simulation?

Answer: The updated model is likely to decrease runtime.

Why: Simpler models require less computation, reducing runtime.

---

Binary Search Requirement

Question: What condition must be met for a binary search to work?

Answer: The values in numList must be in sorted order.

Why: A binary search requires a sorted list to function correctly.

---

Bit Allocation

Question: What is the minimum number of bits needed to assign unique sequences to 100 staff members?

Answer: 7 bits

Why: 7 bits allow for up to 128 unique sequences (2^7 = 128).

---

Algorithm Complexity

Question: Which of the following algorithms run in reasonable time?

Answer: I, II, and III.

Why: All three algorithms run in polynomial time, which is considered reasonable.

---

Execution Time Comparison

Question: How does the execution time compare between Version I and Version II?

Answer: Version II requires approximately 5 more minutes than Version I.

Why: Version II makes more calls to GetPrediction, increasing execution time from ~4 minutes to ~9 minutes.

5 Things I Did Over the 12-Week Break

---

Planning with Khan Khan Board

What I Did: I organized not only my tasks but also the tasks of my teammates by creating detailed steps for each stage, ensuring everything was completed efficiently.

---

API and Model Setup

What I Did:

  • Built the backend API using Flask and ensured proper database management.
  • Tested endpoints using Postman to identify and fix errors such as 404 errors.
  • Utilized developer tools to debug and optimize performance.
---

UX Design

What I Did:

  • Enhanced styling to improve user experience, particularly focusing on the Grand Canyon page.
  • Refined the checklist API interface to make it more user-friendly.
---

Deployment and Debugging

What I Did: Successfully set up backend deployment using AWS EC2.

Deployment Process:

  • Containerization with Docker: Packaged backend with Docker for consistent execution.
  • Cockpit for Server Management: Used a web-based Linux server manager to deploy and monitor backend.
  • DNS Setup: Assigned a custom domain and subdomain for proper routing.

Security Implementations:

  • SSL/TLS Encryption: Secured data transmission for users.
  • Firewall Rules: Implemented security policies to prevent unauthorized access.
  • JWT Authentication: Ensured secure user access to APIs.
---

Collaboration and Growth

What I Did:

  • Initially struggled with group collaboration, which impacted both myself and my teammates.
  • Improved communication and teamwork, successfully assisting teammates with debugging.
  • Used feedback to refine my work and resolve issues I previously struggled with.

N@TM Feedback and Next Steps

---

Feedback from Peers and Teachers

During N@TM, I received valuable feedback, including:

  • Cleaning up the UI: Simplify the main page layout.
  • Improving navigation: Reduce clutter for a better experience.
  • Using a unique SASS file instead of default styling.
Me at the student panel
---

Next Steps

  • Improve checklist feature by displaying the user ID for each checklist entry.
  • Update SASS and remove unnecessary information from the homepage.

The Feedback I Gave Others

In total, I gave 6 reviews to 6 different teams after understanding what their projects were about.

Project Feedback 1
Project Feedback 2
Project Feedback 3
Project Feedback 4
Project Feedback 5
Project Feedback 6

Favorite Project

My favorite project was Prism by Yash due to the idea of creating a platform connecting people through a chatroom by matching individuals with similar interests. I also loved how they formatted their UX, making it intuitive and engaging.

Reflection: Strengths, Challenges, and What’s Next

---

Next steps

  • I am taking CSA next year
  • Before taking CSP, I had an idea that I wanted to pursue computer science. After working on this project, I’m more confident that I want to major in it in college
---

Strengths

  • Problem-solving and debugging API errors.
  • Frontend-backend integration.
  • Learning from mistakes and adapting my approach.
---

Challenges

  • Initially jumping between code sections without a clear plan.
  • Fixing authentication errors and debugging requests.
  • Adjusting to collaborative workflows with my team.
---

Final Thoughts

I believe I should receive a 92% on this final review due to the effort and dedication I’ve put into this project. I’ve completed a fully functional API, successfully integrated it into the frontend, and improved collaboration within my group.

---