Skip to content

Project Proposal

tiresias7 edited this page Jan 10, 2024 · 33 revisions

Project Plans

Goals

The goal of the project is to create a course planning application that utilizes the Uwaterloo Open API. This application will retrieve time-related course information to help generate feasible course schedules. Users will be able to see a workable course schedule by providing the course they are going to take.

Resources

  • Staff: The staff of the project consists of four full-stack developers: Alex, Eddy, Jason, and Ryan. All staff share similar roles and responsibilities. It is possible that staff will work on various components of the project.
  • Constraints: No noticeable constraints were identified at the planning stage. All staff members are available for at least 3 hours a week.

Risks

  1. Technical Challenges: Developers may encounter technical issues while developing features/business logic due to unfamiliarity with the tool stack used. A possible solution may be allowing developers to focus on one component/area each so that they will have a more in-depth understanding of the tools and be able to resolve issues.
  2. Rate-Limit Issues: Since the project is utilizing the Uwaterloo Open API, there is a risk of rate-limiting issues. A possible solution is to reach out to course staff to obtain a better authorization key.
  3. Changes in UW OpenAPI: OpenAPI stops sharing professor and location information of class, there may be a risk of not being able to obtain the needed information for a course planner. A possible solution is to use the location and instructor information on Quest, note that this would require the user to be authenticated by Quest.

Milestones

  1. Basic logic and UI of the project
  2. Enriched UI and database components
  3. Advanced algorithm for course selection including preference selection
  4. Testing, refactoring and adding extra features

Requirements

Problem

Currently, there isn't a tool for students at the University of Waterloo to manage and pre-plan their course schedules. Every semester, students need to manually keep track of available course time slots and manage them if they are unsatisfied with the given course slots, which is often the case.

Users

The targeted users are all students at the University of Waterloo, especially those who frequently need to change courses in the course add/drop period.

  • Persona: Students at the University of Waterloo who face the cumbersome task of crafting their course schedules based on personal preferences once they've selected their courses. This process includes repeatedly checking instructor details, class locations, and session times on platforms like UW Flow and Quest. This project aims to help students who find this process unappealing and to provide a personalised course schedule for them.
  • Feedback:
    • Users not only want to see feasible course schedules but also expect the application to generate the most suitable time schedule based on their input. Suggested features include options to choose consecutive courses and time periods for breaks, such as lunch breaks.
    • Users want to share their course schedules easily with their friends to find common sessions so that they can go to lectures and discuss course contents together.

Functional Requirements

Design

System Diagram

System Diagram

Non-Functional Requirements

  • Performance: Making sure the system responds quickly, especially when generating course schedules.
  • Security: Protecting important login information needed to get course data.
  • Authorization: Setting up controls for who can access the system, possibly using Quest login for this purpose.
  • Flexibility: Designing the system so it's easy to add new features.
  • Availability: Ensuring the system is always ready to help users, especially if we switch to web services later on.