Program Design, Function, and Purpose

Purpose of the Computing Innovation (CRD-2.A) - Big Idea: Creative Development | Topic: Program Function and Purpose

The Notes Manager application is a computing innovation designed to help users efficiently create, store, edit, and organize their notes. This program enables users to maintain a digital collection of notes with searchable functionality, reducing the need for physical note-taking and improving accessibility.

How the Program Functions (CRD-2.B) - Big Idea: Creative Development | Topic: Program Function and Purpose

The application has both frontend and backend components. The frontend is built using HTML, CSS, and JavaScript, providing an interactive interface for managing notes. The backend, implemented with Flask and Python, handles data storage and retrieval through a database managed by SQLAlchemy.


Inputs and Outputs (CRD-2.C, CRD-2.D) - Big Idea: Creative Development | Topic: Program Inputs and Outputs

Inputs:

Users provide note data through a web form, including the title, content, and subject.

Outputs:

The program displays stored notes dynamically, allowing users to edit, delete, and search their notes.


Development Process (CRD-2.E) - Big Idea: Creative Development | Topic: Program Development

The development of the Notes Manager followed an iterative process:

  • Planning: Identifying core features and defining the database schema.
  • Implementation: Developing frontend forms and backend API endpoints.
  • Testing: Debugging input handling, database operations, and UI interactions.
  • Deployment: Hosting the application on a cloud platform for user access.

User Interface Design (CRD-2.F) - Big Idea: Creative Development | Topic: Program Development

The user interface features:

  • A form for adding new notes.
  • A search bar for filtering stored notes.
  • A dynamically populated display section for viewing, editing, and deleting notes.
  • Styled components with a gradient color scheme for readability.

Code Documentation (CRD-2.G) - Big Idea: Creative Development | Topic: Program Development

Each function in the backend is documented with comments describing its purpose, parameters, and expected behavior. API endpoints are structured to handle CRUD (Create, Read, Update, Delete) operations on note data.


Algorithm Development - Big Idea: Algorithms and Programming | Topic: Algorithm Development

Explanation of Program Logic (CRD-2.B)

The program uses JavaScript to handle UI interactions and sends asynchronous API requests to the Flask backend. The backend processes these requests and updates the database accordingly.

Relational and Logical Operators (AAP-2.E.b, AAP-2.F.b)

Relational operators (==, !=) are used for input validation and data filtering. Logical operators (and, or) are used to ensure form fields are properly filled before database insertion.

Conditional and Iterative Statements (AAP-2.H.b, AAP-2.J, AAP-2.K.b)

Conditional statements are used to verify if a note exists before updating or deleting it. Iteration is used to display all stored notes in the UI.

Algorithm Comparison (AAP-2.L)

Different algorithms were considered for the search functionality:

  • Linear search: Loops through all notes (current implementation).
  • Database indexing: More efficient but requires more advanced setup.

Linear search was chosen due to its simplicity and compatibility with the existing setup.

Algorithm Creation and Modification (AAP-2.M.a, AAP-2.M.b)

Functions like adding, retrieving, updating, and deleting notes were created from scratch and iteratively modified to improve performance.


Errors and Testing - Big Idea: Creative Development | Topic: Testing and Debugging

Error Identification and Correction (CRD-2.I.a, CRD-2.I.b)

Errors encountered included:

  • Undefined data fields: Fixed by ensuring missing inputs are checked before insertion.
  • Incorrect API routes: Resolved by debugging endpoint URLs.

Input-Output Testing (CRD-2.J)

Test cases included:

  • Adding a new note and verifying its presence in the database.
  • Editing a note and confirming changes persist.
  • Deleting a note and verifying its removal.

Data and Procedural Abstraction

Data Abstraction (AAP-1.D.a, AAP-1.D.b) - Big Idea: Algorithms and Programming | Topic: Data Abstraction

Data is stored in a database using SQLAlchemy models. Each note is an object with attributes like title, content, and subject. This abstraction simplifies data management.

List Traversals (AAP-2.O.a, AAP-2.O.b) - Big Idea: Algorithms and Programming | Topic: Data Abstraction

Stored notes are retrieved as a list and iterated through when displayed in the UI.

Procedural Abstraction (AAP-3.B) - Big Idea: Algorithms and Programming | Topic: Procedural Abstraction

Functions such as fetchNotes(), addNote(), and deleteNote() encapsulate specific behaviors, reducing code redundancy and improving maintainability.


Self Grade:

Self-Evaluation: Notes Manager Project

Evaluation Criteria Comments Grade (out of 1)
Program Purpose and Function Clearly defined purpose; effectively manages notes. 1.00
User Interface Design Clean, intuitive, and aesthetically pleasing. 1.00
Code Documentation and Readability Well-commented, but some functions could be clearer. 0.85
Algorithm Efficiency Uses simple and effective logic but lacks optimization. 0.80
Data Management and Abstraction Good use of SQLAlchemy, but improvements possible. 0.90
Error Handling and Debugging Covers common errors and now includes better validation. 0.90
Testing and Reliability Functional testing done, but no automated tests. 0.85
Security and Authentication JWT-based auth is implemented well. 0.95
Scalability and Maintainability Structured well, but search could be optimized. 0.85
Innovation and Creativity Practical implementation, but could add more features. 0.90
Average Score Improved in UI and error handling, making it stronger. 0.905