Skip to content

Project Proposal

Sachi Shah edited this page Sep 23, 2023 · 18 revisions

(a) Project Plan

Goal: What problem are you trying to solve?

Develop a full-stack application that assists Waterloo students with course planning for upcoming semesters through the prevention and detection of time conflicts, along with schedule optimization with peers/friends. 

Resources: How is your project staffed? Do you have any constraints on people’s time and availability?  

All four team members have similar courseloads and are equally devoted to this project. There are no planned vacations during any of the sprints or general development of the application.  

The group requests access to Waterloo’s OpenData API for information access related to course timings, locations, professors, and sections. 

Risks: What project risks can you identify? How will you mitigate these? 

Risks 

Mitigation 

Some group members have limited software experience and lack any demonstratable application development.  

Keep team members informed on progress by creating an honest and open dialogue to address potential challenges and difficulties.  

Issues with Waterloo’s OpenData API, restricting the group’s access to information. 

Shift the project towards other core functionalities such as the shared calendar, scheduling, and future course planning.  

A failsafe where users can still enter their class information manually in case the API and its database of courses are locked.  

Compose UI library may be complicated to learn and not have enough documentation. 

Keep user interface elements relatively simple and refer to external sources such as the official Compose GitHub. 

There may not be enough resources to test the whole application. 

Develop core features initially and limit them to only a few and incorporate testing in each sprint. 

Milestones: Identify sprints and deadlines (dates provided in the schedule), and a high-level plan of what to focus on for each sprint. 

  • Sprint 1: [Compose Desktop]. Oct 4 – Oct 20. 
  • Sprint 2: [Persistence/Databases]. Oct 25 – Nov 3. 
  • Sprint 3: [Web Services; Service Frameworks]. Nov 8 – Nov 17. 
  • Sprint 4: [Async Programming; Coroutines; Containerization]. Nov 22 – Dec 1.  

(b) Requirements

Problem: One or two-sentence summary of your project idea. What problem are you attempting to solve? 

Course scheduling at universities is problematic due to factors such as limited resources, faculty and room availability challenges, curricular complexities, and the need to balance student preferences with academic requirements. Individuals would benefit from planning out their future courses to minimize stress and follow a laid-out plan for their undergraduate experiences.  

Users: The specific group of users that would be interested in your project 

The use case for this application is geared towards students at the University of Waterloo.  

Interviews: 

*There are two answers for each interviewee: 

# 

Questions 

Answers 

1 

What challenges do you currently face when planning and scheduling courses?  I have difficulty dealing with time conflicts in my schedule 
I find it hard to know which courses friends are enrolling in and figure out whether those courses will fit into my schedule 

2 

What are the must-have features in a course scheduling application for you?  Easy-to-use interface, reliable notifications, and real-time updates. 
Display courses in calendar view, real-time synchronization, and a user-friendly design. 

3 

How important is it for you to coordinate schedules with your friends and take courses with them?  Important, as it enriches the learning experience. 
Very important, as studying with friends provides motivation and support. 

4 

How useful would it be to see multiple versions of your schedule to plan your course selection?  Moderately helpful, mainly for visualizing potential conflicts and exploring alternatives in one glance. 
Viewing multiple versions would be crucial, as it be easier to see what my schedule looks like with different courses or lecture/tutorial times. 

5 

Would a checklist be useful to plan your degree requirements or a wish-list to plan your current/future courses?  A checklist would be beneficial. 
A wish-list would be an extremely useful feature for course planning. 

  User Persona: 

head_profile.png{width="210" height="218"}

Personal Info: Student at the University of Waterloo. 

Demographic Info: 18-25 years of age. Enrolled in an academically challenging program.  

Goals & Motivations: Overachieving, organized student who enjoys taking classes with his friends at the University of Waterloo.  

User Story:  

Aryaman Wang Shah (Nickname: AWS) is a third-year student at the University of Waterloo studying Computing and Financial Management. As a third year, AWS has a lot of flexibility in course selection for the upcoming Winter 2024 term. Being an overachiever, he wants to take six courses in the upcoming semester. AWS has completed his course selection and has received his class schedule a couple weeks before the term starts.  

However, he notices a time conflict between two of his selected courses; CS251 and CS370. AWS has two to three other classes on his wish list of courses so he can switch one of the conflicting courses out with something else. However, another reason for the issue occurring may be because the CS251 tutorial overlaps with the CS370 lecture. If AWS switches to another CS251 tutorial section, it will allow him to take CS370. But perhaps AWS’ desired tutorial time is full, and he must wait until enrolment capacity is not at maximum.  

There are various options for AWS to choose from and he is completely overwhelmed. He’s frantically scribbling different versions of a potential schedule in his notebook to find a schedule that works for him. He eventually finds a schedule that works, but after double checking the class and tutorial times, he realizes he miswrote the times of one of his classes and a conflict arises again. AWS is furious and wishes there was an easier way for him to solve this problem.  

Our App’s Solution – User Resolution: 

The course planning app allows the user to select the classes they wish to take in the upcoming term and display them in a calendar view. The app will detect time conflicts immediately upon selection of the course and mention the source of the conflict. The user will be allowed to save multiple variations of their schedule, providing various combinations of courses for the upcoming term. If there is a full lecture or tutorial section that the user wants to switch into the user can add that section to their wishlist, and get notifications when the section opens.  

Functional Requirements: List your top requirements - what features do you think are critical? 

  1. Browse and filter all available classes at the University of Waterloo for the upcoming academic term.   
  2. Add and remove available classes to user’s course schedule. 
  3. Add and remove courses to a wish-list and send notifications to user if any courses on the wish-list have enrolment capacity (if it was at maximum when it was added to the list).  
  4. Display selected courses in a calendar view. 
  5. Allow the user to create and view alternative schedules using different classes or lecture/tutorial times.   
  6. Detect and prevent time conflicts.  
  7. Allow users to add friends to their profile and view their schedules within the application. 
  8. Overlay and compare calendars between friends to facilitate section coordination. 
  9. Authentication and sign-in – each user will have their own username and password. 
  10. Optimize users’ course schedules based on their selected courses. 

 

(c) Design

Layer_Architecture.jpg

Layered_Architecture.pdf

Clone this wiki locally