COSC2674讲解、Canvas辅导、Python程序语言调试、Python讲解
- 首页 >> Matlab编程 COSC2674/2755 Semester 1, 2020
Assignment 3 Specification
Marks allocated: This assignment will be marked out of 100 and is worth 35% of your overall
mark
Deadline: Sunday 14.06.2020 (11:59 pm AEST)
Submit via: Canvas
Work mode: In a group of 4 (individual submissions discouraged)
Submission format: .zip (No other formats will be accepted)
Online demo: Week 15 Monday - Friday (No Demoà No marks)
0 READ THIS FIRST
The real-life projects that you will face in Industry never come with crystal clear, direct list of
instructions in a linear manner. In fact, the reality is far from that, the project requirements often
come in bits and pieces from often a confused client who thinks that they know everything.
It is the job of requirement engineers to elicit the requirements. Business Analysts then spend good
amount of time clarifying these requirements and creating more sensible, doable and negotiable list
of deliverables.
When you read the specifications for this assignment, you will realise that some of the ones may
have multiple ways of implementing them (just like in real life software development). So instead of
blaming it on the specifications, clarify the requirement(s) by posting in discussion board.
Do not start this assignment late, you have about four weeks to complete it which is more
than enough time to do well and make sure that you use this time judiciously. Starting work at
the last minute will only lead to poor outcome(s).
There are certain specifications which will push you out of the comfort zone. This has been
done on purpose. There are certain parts of the assignment where you will need to do selfresearch
as you will not find answers in lectures, tute/labs.
If you do a good job of this assignment, you can choose to add it as a part of portfolio for
future employers. You are being prepared for potential employability prospects.
School of Science / CS & IT
Page 2 of 8
1 Scenario
Your team has been contacted by a car share company to develop an automatic Car Share
System. This system is used to book, find and unlock and lock a car. In addition, the customer
can report some issues with the car to help the company to maintain the cars. You will create an
application for four types of users: customer, company manager, engineers and system
administrator.
In this assignment,
For this assignment, you will be making extensive use of the Google Calendar API
(https://developers.google.com/calendar/v3/reference/) to work with your Raspberry Pi.
You will also be using Google Cloud IoT Platform (https://cloud.google.com/solutions/iot/).
In summary, the implementation of this assignment involves the following components:
• Writing a website application using Python’s microframework Flask
• Writing your own API using Python’s microframework Flask
• Python documentation tools such as Sphinx
• Practice third party API
• Unit testing in Python
• AI features such as object-detection system
• Programming with Cloud databases
• Selected Software Engineering Project Management/Tools
2 Important
You must adhere to the following requirements:
a. Raspberry Pi model 4 or 3 should be used.
b. You must use Python 3.* to complete the tasks. Older versions must not be used.
c. You must use a version control system of some sorts such as GitHub, Bitbucket, etc. A
private repository is to be used ONLY.
d. You must stick to the standard style guide for your Python code:
(https://www.python.org/dev/peps/pep-0008/)
e. You must attend a 30 minutes demo session. The booking schedule will be published later.
You must submit the assignment prior to demo. No submission à No demo à No marks.
School of Science / CS & IT
Page 3 of 8
3 Detail(s) of CSS
3.1 High level architecture diagram
NOTE: The following architecture diagram will be used for both Assignments 2 and 3.
School of Science / CS & IT
Page 4 of 8
3.1 CSS features
NOTE: You need to design the database by dividing the information into tables and turning information
items into columns. You also need to populate some data into the tables to demonstrate you have completed
the requirements for fair judgement from reviewers.
This is a website application that runs on MP. It can only be accessed by the employees inside the
company. The website makes use of FLASK RESTful API to communicate with cloud database on
GCP (Google Cloud IOT platform).
For system admin: Admin can login to the website to maintain the data regarding to users
and cars.
The system admin is able to:
- View car rental history
- Search users and cars
- Add, remove and modify information of users and cars
- Report car with issue, then the engineer can find and fix the problem
For company manager: The manager can login to the website and capture key information by
looking at visualisation dashboard. Upon logging in, a dashboard webpage will be shown. In the
dashboard webpage, you need to demonstrate 3 types of visualisation graph (e.g. line chart, bar
chart). They are able to indicate business status to help manager making business decision. You
need to decide what kind of information matters regarding to company management. You might
need to do some research to find out which indicator can help making a right decision (e.g. Daily
Active User, Percentage of usage for each car per day).
Note: All data must be retrieved through RESTful API. In the other word, the visualisation might be
changed whenever the data behind is updated.
For engineer: The engineers take responsibility to repair the reported cars. They will receive a
notification via email once admin reported a car that is needed to be repaired. After that, the
engineer can login to the system to check out and find the car’s location.
The engineer is able to:
- Login
- Check the reported car’s location in the web page
The car will be unlocked automatically when the engineer close to the car (you will be asked to
utilise Bluetooth ID to solve this problem). The AP attached in the car will have the ability to detect
QR code carried by engineers in order to retrieve their personal information, which will help
company to know who has done what.
YOU ARE NOT ALLOWED TO USE ANY OTHER PLATFORM WITHOUT PRIOR
PERMISSION.
School of Science / CS & IT
Page 5 of 8
4 Tasks
Part A (55 marks)
You will now implement a web-based system on MP.
1) (5 marks) An option to login to the system for three type of users including admin,
manager, engineer. They will be directed to different web pages regarding to their user
type.
Note: The username and password must be stored in an encrypted (you may hash and
salt) format. In addition, the website will recognize their permission to avoid incorrect
operation.
2) (10 marks) Once the admin login successfully, the system should display a menu which
will allow admin to manipulate the data regarding to users and cars.
They will be able to:
- View car rental history
- Search and view
- Add, remove and update
- Report cars with issue
- logout
YOU WILL RECEIVE ZERO for storing data in a local database.
All the car and user related information is stored in a Cloud-based database hosted on
Google Cloud IoT Platform (GCP). It is your responsibilities to make sure that you do not
exceed the free tier limit on the GCP.
View history:
Be able to show a list of cars rental history.
Search and View:
Be able to search car or user by any of the properties and display fields neatly (e.g.,
column’s aligned) in the web page.
Add, remove and update:
Be able to edit information of cars or users.
Report cars with issue:
Be able to select and report cars with issue in the car view.
3) (5 marks) Develop and implement a robust input validation scheme.
4) (3 marks) Design database and populate some data based on the requirements.
Make sure that the database is normalized - this means if you only have one table, you will
lose marks. The car and user data are stored on a cloud environment namely the Google’s
GCP IoT platform (Google Cloud Platform).
School of Science / CS & IT
Page 6 of 8
5) (5 marks) Create your own RESTful API to communicate with the cloud database.
Note: All database operations related to data retrieve and update must utilise API to talk to
the cloud database.
6) (6 marks) Design and demonstrate three different types of visualisation graph that matters
to decision making in dashboard page.
7) (3 marks) Send an email to engineer’s email address using Pushbullet API when a vehicle
with issue is reported by admin.
8) (3 marks) Once the car is reported, the location of the car needs to show in Google Map of
engineer’s page, which will guide engineer to find the car.
9) (5 marks) Complete documentation using Sphinx.
10) (10 marks) Professional use of
• GitHub from day 1 of the development
• Trello board for the development cycle
Part B (25 marks)
1) (10 marks) Implement an automatic identification system by using Bluetooth in AP, which
will help engineer to finish their work easily. (There is one clue for you, the MAC address
of Bluetooth is unique. For more information, you need to do some research on your own.)
Note: Some devices can fake the MAC address, but we will not judge you regarding to the
security issue.
2) (10 marks) Add the voice/search feature to search the cars in MP. This is for the admin who
is looking to find a specific car. You must use the Google’s Assistant SDK to complete this
part.
3) (5 marks) Complete documentation using Sphinx, Trello board and Git Hub for this part.
Part C (10 marks)
1) (7 marks) Implement an object-detection console-based system in AP. The system can
retrieve engineer’s profile by detecting QR code carried around. You may have to use
OpenCV and other QR related frameworks (ZBar etc.)
Note: If all of your team members do not have a USB camera, There is a solution for you,
you can use the QR code picture saved in local file system to test the system performance.
2) (3 marks) Complete documentation using Sphinx, Trello board and Git Hub for this part.
Part D (10 marks): Unit Test
School of Science / CS & IT
Page 7 of 8
1) (10 marks) Complete unit test suite for the whole project (i.e., A, B, C parts). This is
where you can decide what kind of unit tests are required.
5 Adding a README file
In order to get fair marks, it is your responsibility to make sure that all your effort will be fairly
judged. You must have a README.md file written in markdown format in your project root path,
which will guide reviewer go through your project smoothly.
- Adding a README file to introduce your project.
- Write an instruction of your project in the README.md.
- Username and password of 3 types of user are included in the README.md.
- Report your repository usage in GitHub by attaching some screen shots in README.md.
- Report your Trello board usage by attaching some screen shots in README.md.
- Well organised file structure and also separate website and API code into two folders.
- Make sure having one main method to run in main.py.
The last but most important thing is to make sure that your program is runnable. Besides, you need
to have a requirement.txt file in your project to show which pre-request package are needed to
install. You can browse GitHub to get some idea what requirement.txt is and how it can be used.
6 Who does what
Please include the evidence of who does what in this assignment, i.e., include a file explaining what
specific task each team member did. The evidence needs to be consistent to your GitHub and Trello
board. If not consistent, your maker may deduce marks. Although each member did different tasks,
all the members should know each other’s tasks.
7 Late submission and Extension
a. A penalty of 10% per day of the total marks will apply for each day late, including both
weekend and weekdays.
b. After five days, you will receive a zero for the whole assignment.
c. Extension requests should only be emailed to the lecturer.
d. Extension offered to a group member(s) does not qualify for a global extension for the
whole of group.
8 Plagiarism
All assignments will be checked with plagiarism-detection software; any student found to have
plagiarised would be subject to disciplinary action. Plagiarism includes
• submitting work that is not your own or submitting text that is not your own
• allowing others to copy your work via email, printouts, social media etc.
• posting assignment questions (in full or partial) on external technical forums
• copying work from/of previous/current semester students
School of Science / CS & IT
Page 8 of 8
• sending or passing your work to your friends
• posting assignment questions on technical forums to get them solved
• someone else writing your code (i.e., contract cheating)
A disciplinary action can lead to
• a meeting with the disciplinary committee
• a score of zero for the assignment
• a permanent record of copying in your personal university records and/or
• expulsion from the university, in some severe cases
All plagiarism will be penalised. There are no exceptions and no excuses. You have been warned.
Assignment 3 Specification
Marks allocated: This assignment will be marked out of 100 and is worth 35% of your overall
mark
Deadline: Sunday 14.06.2020 (11:59 pm AEST)
Submit via: Canvas
Work mode: In a group of 4 (individual submissions discouraged)
Submission format: .zip (No other formats will be accepted)
Online demo: Week 15 Monday - Friday (No Demoà No marks)
0 READ THIS FIRST
The real-life projects that you will face in Industry never come with crystal clear, direct list of
instructions in a linear manner. In fact, the reality is far from that, the project requirements often
come in bits and pieces from often a confused client who thinks that they know everything.
It is the job of requirement engineers to elicit the requirements. Business Analysts then spend good
amount of time clarifying these requirements and creating more sensible, doable and negotiable list
of deliverables.
When you read the specifications for this assignment, you will realise that some of the ones may
have multiple ways of implementing them (just like in real life software development). So instead of
blaming it on the specifications, clarify the requirement(s) by posting in discussion board.
Do not start this assignment late, you have about four weeks to complete it which is more
than enough time to do well and make sure that you use this time judiciously. Starting work at
the last minute will only lead to poor outcome(s).
There are certain specifications which will push you out of the comfort zone. This has been
done on purpose. There are certain parts of the assignment where you will need to do selfresearch
as you will not find answers in lectures, tute/labs.
If you do a good job of this assignment, you can choose to add it as a part of portfolio for
future employers. You are being prepared for potential employability prospects.
School of Science / CS & IT
Page 2 of 8
1 Scenario
Your team has been contacted by a car share company to develop an automatic Car Share
System. This system is used to book, find and unlock and lock a car. In addition, the customer
can report some issues with the car to help the company to maintain the cars. You will create an
application for four types of users: customer, company manager, engineers and system
administrator.
In this assignment,
For this assignment, you will be making extensive use of the Google Calendar API
(https://developers.google.com/calendar/v3/reference/) to work with your Raspberry Pi.
You will also be using Google Cloud IoT Platform (https://cloud.google.com/solutions/iot/).
In summary, the implementation of this assignment involves the following components:
• Writing a website application using Python’s microframework Flask
• Writing your own API using Python’s microframework Flask
• Python documentation tools such as Sphinx
• Practice third party API
• Unit testing in Python
• AI features such as object-detection system
• Programming with Cloud databases
• Selected Software Engineering Project Management/Tools
2 Important
You must adhere to the following requirements:
a. Raspberry Pi model 4 or 3 should be used.
b. You must use Python 3.* to complete the tasks. Older versions must not be used.
c. You must use a version control system of some sorts such as GitHub, Bitbucket, etc. A
private repository is to be used ONLY.
d. You must stick to the standard style guide for your Python code:
(https://www.python.org/dev/peps/pep-0008/)
e. You must attend a 30 minutes demo session. The booking schedule will be published later.
You must submit the assignment prior to demo. No submission à No demo à No marks.
School of Science / CS & IT
Page 3 of 8
3 Detail(s) of CSS
3.1 High level architecture diagram
NOTE: The following architecture diagram will be used for both Assignments 2 and 3.
School of Science / CS & IT
Page 4 of 8
3.1 CSS features
NOTE: You need to design the database by dividing the information into tables and turning information
items into columns. You also need to populate some data into the tables to demonstrate you have completed
the requirements for fair judgement from reviewers.
This is a website application that runs on MP. It can only be accessed by the employees inside the
company. The website makes use of FLASK RESTful API to communicate with cloud database on
GCP (Google Cloud IOT platform).
For system admin: Admin can login to the website to maintain the data regarding to users
and cars.
The system admin is able to:
- View car rental history
- Search users and cars
- Add, remove and modify information of users and cars
- Report car with issue, then the engineer can find and fix the problem
For company manager: The manager can login to the website and capture key information by
looking at visualisation dashboard. Upon logging in, a dashboard webpage will be shown. In the
dashboard webpage, you need to demonstrate 3 types of visualisation graph (e.g. line chart, bar
chart). They are able to indicate business status to help manager making business decision. You
need to decide what kind of information matters regarding to company management. You might
need to do some research to find out which indicator can help making a right decision (e.g. Daily
Active User, Percentage of usage for each car per day).
Note: All data must be retrieved through RESTful API. In the other word, the visualisation might be
changed whenever the data behind is updated.
For engineer: The engineers take responsibility to repair the reported cars. They will receive a
notification via email once admin reported a car that is needed to be repaired. After that, the
engineer can login to the system to check out and find the car’s location.
The engineer is able to:
- Login
- Check the reported car’s location in the web page
The car will be unlocked automatically when the engineer close to the car (you will be asked to
utilise Bluetooth ID to solve this problem). The AP attached in the car will have the ability to detect
QR code carried by engineers in order to retrieve their personal information, which will help
company to know who has done what.
YOU ARE NOT ALLOWED TO USE ANY OTHER PLATFORM WITHOUT PRIOR
PERMISSION.
School of Science / CS & IT
Page 5 of 8
4 Tasks
Part A (55 marks)
You will now implement a web-based system on MP.
1) (5 marks) An option to login to the system for three type of users including admin,
manager, engineer. They will be directed to different web pages regarding to their user
type.
Note: The username and password must be stored in an encrypted (you may hash and
salt) format. In addition, the website will recognize their permission to avoid incorrect
operation.
2) (10 marks) Once the admin login successfully, the system should display a menu which
will allow admin to manipulate the data regarding to users and cars.
They will be able to:
- View car rental history
- Search and view
- Add, remove and update
- Report cars with issue
- logout
YOU WILL RECEIVE ZERO for storing data in a local database.
All the car and user related information is stored in a Cloud-based database hosted on
Google Cloud IoT Platform (GCP). It is your responsibilities to make sure that you do not
exceed the free tier limit on the GCP.
View history:
Be able to show a list of cars rental history.
Search and View:
Be able to search car or user by any of the properties and display fields neatly (e.g.,
column’s aligned) in the web page.
Add, remove and update:
Be able to edit information of cars or users.
Report cars with issue:
Be able to select and report cars with issue in the car view.
3) (5 marks) Develop and implement a robust input validation scheme.
4) (3 marks) Design database and populate some data based on the requirements.
Make sure that the database is normalized - this means if you only have one table, you will
lose marks. The car and user data are stored on a cloud environment namely the Google’s
GCP IoT platform (Google Cloud Platform).
School of Science / CS & IT
Page 6 of 8
5) (5 marks) Create your own RESTful API to communicate with the cloud database.
Note: All database operations related to data retrieve and update must utilise API to talk to
the cloud database.
6) (6 marks) Design and demonstrate three different types of visualisation graph that matters
to decision making in dashboard page.
7) (3 marks) Send an email to engineer’s email address using Pushbullet API when a vehicle
with issue is reported by admin.
8) (3 marks) Once the car is reported, the location of the car needs to show in Google Map of
engineer’s page, which will guide engineer to find the car.
9) (5 marks) Complete documentation using Sphinx.
10) (10 marks) Professional use of
• GitHub from day 1 of the development
• Trello board for the development cycle
Part B (25 marks)
1) (10 marks) Implement an automatic identification system by using Bluetooth in AP, which
will help engineer to finish their work easily. (There is one clue for you, the MAC address
of Bluetooth is unique. For more information, you need to do some research on your own.)
Note: Some devices can fake the MAC address, but we will not judge you regarding to the
security issue.
2) (10 marks) Add the voice/search feature to search the cars in MP. This is for the admin who
is looking to find a specific car. You must use the Google’s Assistant SDK to complete this
part.
3) (5 marks) Complete documentation using Sphinx, Trello board and Git Hub for this part.
Part C (10 marks)
1) (7 marks) Implement an object-detection console-based system in AP. The system can
retrieve engineer’s profile by detecting QR code carried around. You may have to use
OpenCV and other QR related frameworks (ZBar etc.)
Note: If all of your team members do not have a USB camera, There is a solution for you,
you can use the QR code picture saved in local file system to test the system performance.
2) (3 marks) Complete documentation using Sphinx, Trello board and Git Hub for this part.
Part D (10 marks): Unit Test
School of Science / CS & IT
Page 7 of 8
1) (10 marks) Complete unit test suite for the whole project (i.e., A, B, C parts). This is
where you can decide what kind of unit tests are required.
5 Adding a README file
In order to get fair marks, it is your responsibility to make sure that all your effort will be fairly
judged. You must have a README.md file written in markdown format in your project root path,
which will guide reviewer go through your project smoothly.
- Adding a README file to introduce your project.
- Write an instruction of your project in the README.md.
- Username and password of 3 types of user are included in the README.md.
- Report your repository usage in GitHub by attaching some screen shots in README.md.
- Report your Trello board usage by attaching some screen shots in README.md.
- Well organised file structure and also separate website and API code into two folders.
- Make sure having one main method to run in main.py.
The last but most important thing is to make sure that your program is runnable. Besides, you need
to have a requirement.txt file in your project to show which pre-request package are needed to
install. You can browse GitHub to get some idea what requirement.txt is and how it can be used.
6 Who does what
Please include the evidence of who does what in this assignment, i.e., include a file explaining what
specific task each team member did. The evidence needs to be consistent to your GitHub and Trello
board. If not consistent, your maker may deduce marks. Although each member did different tasks,
all the members should know each other’s tasks.
7 Late submission and Extension
a. A penalty of 10% per day of the total marks will apply for each day late, including both
weekend and weekdays.
b. After five days, you will receive a zero for the whole assignment.
c. Extension requests should only be emailed to the lecturer.
d. Extension offered to a group member(s) does not qualify for a global extension for the
whole of group.
8 Plagiarism
All assignments will be checked with plagiarism-detection software; any student found to have
plagiarised would be subject to disciplinary action. Plagiarism includes
• submitting work that is not your own or submitting text that is not your own
• allowing others to copy your work via email, printouts, social media etc.
• posting assignment questions (in full or partial) on external technical forums
• copying work from/of previous/current semester students
School of Science / CS & IT
Page 8 of 8
• sending or passing your work to your friends
• posting assignment questions on technical forums to get them solved
• someone else writing your code (i.e., contract cheating)
A disciplinary action can lead to
• a meeting with the disciplinary committee
• a score of zero for the assignment
• a permanent record of copying in your personal university records and/or
• expulsion from the university, in some severe cases
All plagiarism will be penalised. There are no exceptions and no excuses. You have been warned.