Skills:

  • Programming Languages
    • Python, Java, C++
  • Web Development
    • HTML, CSS, Django
  • Databases
    • SQL, NoSQL, Relational Databases
    • Database Design
  • Core Computer Science
    • Algorithms, Data Structures
    • Search Algorithms
    • Discrete Mathematics
  • Software Development
    • Unit Testing, Debugging
  • Systems & Architecture
    • Operating Systems (Windows & Linux)
    • Computer Architecture
    • Compilers and Interpreters
    • Networks
  • Graphics & Visualization
    • Computer Graphics (OpenGL)
  • Mathematics for CS
    • Probability and Statistics
    • Linear Algebra
    • Cryptography
    • Discrete Mathematics

Algorithms & Data Structure


Artifact Description:

The milestone three artifact encompasses the transition of our application framework from Dash to Django. This transition involved setting up the Django environment with the Bootstrap framework and implementing a modular file structure. Such a design enhances execution efficiency, promotes scalability, and eases future modifications. Integral to this artifact is the introduction of security features, including login authentication and a user registration form. The chosen design approach ensures dynamic server-to-front-end transmission of HTML pages.

Inclusion of Artifact in E-Portfolio:

The original artifact, a web application developed using Dash, MongoDB, and Python, was chosen for its potential to effectively demonstrate and apply principles from "Algorithms and Data Structures." It was included in the capstone to showcase the practical implementation of these concepts, emphasizing the role of efficient algorithms and optimized data structures in developing a functional web application.

Dash, with its integration with Python, allowed the original web app to benefit from Python's robust data structures and algorithms. The utilization of MongoDB enabled a flexible schema representation, bringing forth unique challenges and experiences in data organization and access strategies. This combination was an ideal candidate for the capstone, setting the stage for its enhancement.

The decision to transition from Dash to Django was strategic. Django is a robust framework widely recognized for its applicability in commercial web applications. Its modular file structure and collaborative features ensure seamless development experiences, especially for large-scale applications. With Django and Bootstrap, the web application was enhanced visually using HTML, CSS, and JavaScript, offering developers greater control over the GUI. Django's ability to interconnect different code modules facilitated a more compartmentalized approach, which aids in troubleshooting and integrating new features.

Shifting to Django simplified the process of adding or modifying features and accentuated the application's scalability and maintainability. It provided a fortified environment against potential security vulnerabilities, especially with features like data access authentication. The transition signifies a broader perspective on development, leveraging Django's strengths to address the requirements of specific web application development while still preserving and enhancing the original objectives set with the Dash, MongoDB, and Python combination.

Meeting Course Objectives:

The transition to the Django framework significantly illuminated the practical applications of "CS 260: Data Structures and Algorithms." The migration process demanded a deeper engagement with efficient data structures and optimized algorithms, critical components of the Django environment.

  1. Data Management and Retrieval: Django’s ORM (Object-Relational Mapping) system showcases the importance of structured data. It allowed me to create, retrieve, update, and delete records in the database using Python-like syntax, effectively turning complex database queries into structured data objects. This process underscored the relevance of understanding data structures and how to manipulate them efficiently.
  2. Algorithmic Efficiency: The shift to Django required reevaluating our application's underlying algorithms. It presented opportunities to refactor and streamline various processes, ensuring the application ran more efficiently. Leveraging Django's built-in tools and utilities, I could implement more efficient algorithms for tasks such as user authentication, form validation, and data serialization.
  3. Middleware and Request-Response Cycle: The Django middleware showcases a practical application of the stack data structure. Every request passes through several layers of middleware before reaching the view and vice versa for the response. Understanding this mechanism deepened my appreciation for the stack data structure, as it's crucial for managing the order and processing of these middleware layers.
  4. Modularity and Scalability: Django's emphasis on "Don’t Repeat Yourself" (DRY) principles encouraged modular code development. This modular approach, combined with efficient algorithms and data structures, ensures that as the application grows, it remains maintainable and scalable without significant performance degradation.

In addition to CS 260, this artifact integrates knowledge from the following courses, each contributing to the comprehensive understanding and implementation of the project:

  1. CS 340: Advanced Programming Concepts
  2. IT 145: Foundation in Application Development
  3. CS 405: Secure Coding

The application's evolution, propelled by the shift to Django, not only met the aesthetic and functional goals but also aligned with the foundational principles of algorithms and data structures as delineated in the coursework.

Enhancing the Artifact:

Transitioning from Dash to Django was pivotal. The experience underscored the importance of choosing the right web framework. Navigating the Django learning curve, particularly its models, views, and templates, was challenging yet rewarding. Django's modular approach simplified project management and established a platform for adaptability and future growth. The user interface was markedly improved by harnessing HTML, CSS, JavaScript, and Bootstrap. Prioritizing security led to the incorporation of a robust authentication system. Django's collaborative features allowed for cohesive team development and efficient update management. In essence, the transition provided enhanced control, adaptability, and fortified security, transforming our web application development approach.

A picture of author.