This application will implement a basic course selection service for students and instructors. Students will be able to search for a course, instructors will be able to edit details about their own course, and an administrator will manage users and courses
The purpose of this project is to allow students to apply theoretical knowledge learned in class to a practical application. The project is designed to allow students to learn how to work in teams, develop mobile applications, and test a product. Learning outcomes range from increased understanding of concepts related to software engineering, to overall knowledge of programming for Android, management, and team-relation skills.
The main outcome of the project is the implementation of a Course Booking application for Android devices. Students are to implement all components of the project, from their design specification, UML models, graphical assets, and source code. Students are encouraged to use the available tools in Android Studio but should refrain from copying whole blocks of code from the internet or peers to implement features. Should a group want to use a non-standard tool or API, they should request permission before doing so.
Note that this course does not focus on interface design, therefore the project does not focus on usability aspects. However, students are encouraged to “beautify” their project if they are comfortable. Some design guidelines will be covered in a tutorial session. Android Design Guidelines can be found at: https://developer.android.com/design/index.html
USER TYPES
The app will be created with three different types of user in mind. The administrator, the instructors, and the students. The administrator manages all possible courses that can be offered to students. The administrator also manages instructors and student accounts. Instructor users are able to assign themselves to a course and then specify the course days, course hours, course description, and course capacity. The students are able to search for a course by course code, course name, and course day. They are then able to enroll and unenroll from courses.
The features that must be available for each user are outlined below. Note that these are the minimum required features. You are free to add more features to enrich your app.
The administrator can:
1. Login to an administrator account. The developer should pre-create such an account with these credentials:
a. Username: admin
b. Password: admin123
2. Create, edit, and delete courses.
a. To create a course, the administrator only specifies the course code and course name. No other course information is specified by the admin. For example, the admin wants to add a history course to the list of all courses.
i. Course code: HIS101, Course name: History
b. The administrator can edit the course code and course name.
c. The administrator can delete a course entirely.
3. Delete accounts of instructors and students.
An instructor can:
1. Create an instructor account and login to that account.
2. View and search all courses.
3. Assign themselves as an instructor to a course they would like to teach.
4. Add and edit the course days, course hours, course description, and course student capacity for the courses they are instructing.
5. Un-assign themselves from a course, which deletes the course details.
A student can:
1. Create a student account and login to that account.
2. View all available courses.
3. Search for courses by course code, course name, or by date.
4. Enroll and unenroll from courses
DETAILS
The project is to be carried out throughout the session and students are strongly encouraged to maintain a log of their project activities, as task allocation and project flow are components of the final report that you will submit at the end of the project. We suggest students keep track of duty assignments, with complexity of allocated tasks and completion dates.
Your application must be written in Java and built using Android Studio (you can use another IDE, but the TA will only provide support for Android Studio). You should compile your project against the earliest possible SDK version allowed by the API methods you are using. By the end of the semester, you must implement and present a working application based on the specifications. Firebase or SQLite can be used for storing and retrieving the application data. You must use Github for version control and your project repository must be shared with TA username: SEG2105-S2021.
DELIVERABLE 1
In this deliverable, you must implement the user account management component and the admin functionality.
The app must allow users to create user accounts via a sign up page. Once the user logs in, they should see a second screen with the following message:
Welcome ‘firstname/username’! You are logged in as ‘role’.
To simplify the development, there will be a single pre-created admin account. You can use the username admin and the password admin123. You should be able to create as many instructor and student accounts as desired.
The admin functionality includes creating, editing, and deleting courses. The admin must be able to create a course by entering both a course code and a course name. The admin can also edit both the course code and course name of existing courses. These courses can later be seen by instructors and students in later deliverables. If desired, the admin should be able to delete a course entirely. The other functionality the admin should have is to be able to delete both instructor and student user accounts.
You can use Firebase or SQLite for database support. The TA will ask to see the updates in the database during the deliverable presentation.
UML diagram must be uploaded to Brightspace by date specified in “Deliverable Due Dates”.
DELIVERABLE 2
In this deliverable, you must implement the instructor functionality.
The instructor user functionality includes viewing all courses and searching for specific ones. The instructor must be able to search using the course code and course name.
If a course has no assigned instructor, the user may assign themselves to be the instructorof that course. If the course already has an instructor, the user is unable to assignthemselves as instructor. For courses that they are instructing, the user can add and edit the course days, course hours, course description, and course student capacity. For example: I, an instructor user, search for the course code GYM101. Since there is no assigned instructor, I click a button to assign myself because I would like to teach that course. Now that I am the instructor of GYM101, I select Monday and Wednesday to be the course days. 9:00-10:00am on Mondays and 2:30-3:30pm on Wednesdays. I type a description and set the student capacity to 4 students (it is a very private course!)
The instructor user can also un-assign themselves from a course. This removes the instructor while also removing any specified course days, hours, description, and student capacity.
DELIVERABLE 3
In this deliverable, you must implement the student functionality as well as finalize the entire application.
The student user functionality includes viewing all courses and searching for specific ones. The student must be able to search using the course code, course name, and day of the week. For example: I, a student user, want to see all courses offered on a Friday. Additionally, student users can view all the details of a course (days, hours, description, capacity).
Another functionality is that student users can enroll into a course. If a student user attempts to enroll into a course that has conflicting hours with an already enrolled course, then the app must show a valid error message. For example: I, a student user, have already enrolled into ART202 on Tuesday at 10:00-11:30am. Then, when I try to enroll into BIO222 that is on Monday and Tuesday at 11:00am-12:00pm, the app will give me an error.
Student users are also able to see a list of all courses that they have enrolled in. Finally, students are able to unenroll from a course.
For the bonus, instructor users should be able to see a list of all student users who have enrolled into a course that they are instructing. The final report is included with this deliverable and must be submitted in Brightspace.