Assessment Type | Individual assignment (no group work). Submit online via Canvas/Assignments/Assignment 1.
Marks are awarded per rubric (please see the rubricon Canvas). Clarifications/updates may be made via announcements. Questions can be raisedvia the lectorial, practical sessions or Canvas discussion forum. Note the Canvas discussion forum is preferable. |
Due Date | End of Week 6 (exact timeis shown in Canvas/Assignments/Assignment 1) Deadline will not be advanced, but they may be extended. Please check Canvas/Assignments/Assignment 1 for the most up to date information regarding the assignment.
As this is a major assignment, a university standard late penalty of 10% per each day (e.g., 2 marks/day) applies, unless special consideration has been granted. |
Weighting | 20 marks out of 100 |
1. Overview
The objective of this assignment is to develop your programming and problem-solving skills in a step- by-step manner. The different stages of this assignment are designed to gradually introduce different basic programming concepts.
You should develop this assignment in an iterative fashion (as opposed to completing it in one sitting). You can and should get started now (when this assignment specification is posted on Canvas) as there are concepts from previous lessons that you can employ to do this assignment. If there are questions, you can ask via the lectorial, practical sessions or the Canvas discussion forum (Canvas/Discussions/Discussion on Assignment 1). Note that the Canvas discussion forum is preferable as it allows other students to see your questions as well. Also, you should ask questions in a general manner, for example, you should replicate your problem in a different context in isolation before posting, and you must not post your code on the Canvas discussion forum.
2. Assessment Criteria
This assignment will determine your ability to:
3. Learning Outcomes
This assignment is relevant to the following Learning Outcomes:
Specifically, upon the completion of this assignment, you will be able to:
4. Assessment Details
Please ensure that you have read Sections 1-3 of this document before going further.
![]() |
Requirements: Your code must meet the following functionalities, code, and documentation requirements. Your submission will be graded based on the rubric published on Canvas. Please ensure you read all the requirements and the rubric carefully before working on your assignment.
A - Functionalities Requirements:
There are 3 parts; please ensure you only attempt one part after completing the previous part.
------------------------------------------------ PART 1 (6 marks) ------------------------------------------------
In this part, your program can perform some simple interactions with users (i.e., the receptionists):
![]() |
Receipt for <customer_name>
![]() |
Books rented:
- <book_name> for <number_days> days (<price_per_day> AUD/day)
![]() |
Original cost: <original_cost> (AUD) Discount: <discount> (AUD)
Total cost: <total_cost> (AUD)
Book category | Books | Rental prices per day |
Fantasy | Harry Potter 1, The Hobbit | 0.5 / 0.4 |
Crime | Gone Girl, Sherlock Holmes 1 | 0.5 / 0.4 |
Classics | Pride and Prejudice | 0.3 / 0.25 |
Modern Classics | To Kill a Mockingbird | 0.4 / 0.3 |
History | The Diary of a YoungGirl | 0.4 / 0.3 |
Philosophy | The Republic | 0.3 / 0.25 |
Science | A Brief Historyof Time | 0.5 / 0.4 |
Textbooks | Introduction to the Theoryof Computation | 0.75 / 0.6 |
Art | The Story of Art | 0.5 / 0.4 |
Other | ThinkingFast and Slow,Atomic Habits | 0.5 / 0.4 |
---------- PART 2 (6 marks, please do not attempt this part before completing PART 1) -----------
In this part, your program can: (a) perform some additional requirements compared to PART 1, and
(b) be operated using a menu.
First, compared to the requirements in PART 1, now your program will be able to handle invalid inputs from users:
Second, your program will be operated using a menu. A menu-driven program is a computer program in which options are offered to the users via the menu. Your program will have the following options: rent a book, update information of a book category, update books of a book category, display existing customers, display existing book categories, and exit the program (please see Section 5 in this document regarding an example of how the menu program might look like). Below are the specifications of the options:
type, the prices but note that there could be multiple white spaces before and after the commas. You can also assume the book category, type, prices to be entered are valid values, i.e. the book category is an existing category, type is either Rental or Reference, and prices should be valid positive floating-point numbers.
Note that in your program, when a task (option) is accomplished, the menu will appear again for the next task.
----------- PART 3 (5 marks, please do not attempt this part before completing PART 2) ----------
In this part, your menu program is equipped with some advanced features. Note, some features maybe very challenging.
![]() |
Receipt for <customer_name>
![]() |
Books rented:
………..
![]() |
Original cost: <original_cost> (AUD)
Discount: <discount> (AUD)
Total cost: <total_cost> (AUD)
The menu now has an option "Display a customer rental history". This option will display a message asking the user to enter the name of the customer, and the program will display all the previous rentals of that customer, including the information of the books and number of borrowing days, the original cost, the total cost, and the discount. Invalid customer names will be handled, and the user will be given another chance until a valid customer name is entered. For example, if a customer named Emily made 3 previous rentals, one rental with the books Harry Potter 1 (7 days) and Gone Girl (12 days), one rental with the book A Brief History of Time (20 days), and another rental with the books The Republic (30 days) and The Hobbit (5 days), then the program will display the formatted message as follows.
This is the rental history of Emily.
Books &Borrowing days | Original Cost | Discount | Final Cost | |
Rental 1 | Harry Potter1: 7 days, Gone Girl:12 days | 8.30 | 0.83 | 7.47 |
Rental 2 | A BriefHistory of Time:20 days | 8.00 | 0.80 | 7.20 |
Rental 3 | The Republic: 30 days, The Hobbit: 5 days | 10.00 | 1.00 | 9.00 |
B - Code Requirements:
The program must be entirely in one Python file named ProgFunA1_<Your Student ID>.py. For example, if your student ID is s1234567, then the Python file must be named as ProgFunA1_s1234567.py. Other names will not be accepted.
Your code needs to be formatted consistently. You must not include any unused/irrelevant code (even inside the comments). What you submitted must be considered as the final product.
You should use appropriate data types and handle user inputs properly. You must not have any redundant parts in your code.
You must demonstrate your ability to program in Python by yourself, i.e., you should not attempt to use external special Python packages/libraries/classes that can do most of the coding for you. The onlyPython library allowed in this assignment is the sys module.
Note that in places where this specification may not tell you how exactly you should implement a certain feature, you need to use your judgment to choose and apply the most appropriate concepts from our course materials. You should follow answers given by your "client" (or "supervisor" or the teaching team) under Canvas/Discussions/Discussion on Assignment 1.
C - Documentation Requirements:
You are required to write comments (documentation) as a part of your code. Writing documentation is a good habit in professional programming. It is particularly useful if the documentation is next to the code segment that it refers to. Note that you don't need to write an essay, i.e., you should keep the documentation succinct.
Your comments (documentation) should be in the same Python file. Please DO NOT write a separate file for comments (documentation).
At the beginning of your Python file, your code must contain the following information:
Besides, the comments (documentation) in this assignment should serve the following purposes:
D - Rubric:
Overall:
Part | Points |
Part 1 | 6 |
Part 2 | 6 |
Part 3 | 5 |
Others (codequality, modularity, comments/reflection) | 3 |
More details of the rubric of this assignment can be found on Canvas (here). Students are required to look at the rubric to understand how the assignment will be graded.
5. Example Program
We demonstrate a sample program that satisfies the requirements specified in Section 4. Note that this is just an example, so it is okay if your program looks slightly different, but you need to make sure that your program satisfies the requirements listed in Section 4.
As an example, this is how the output screen of our sample program looks like for PART 1. In this example, the customer has the name Huong (who is also a member), rent the book Harry Potter 1 for 6 days. Note that in this test, we use the values Huong, Harry Potter 1, and 6 as examples only. You should test your program with different test cases, e.g., when a new customer (e.g., James) rents another book with another number of borrowing days, to make sure your program satisfies the requirements in Section 4.
![]() |
As an example, this is how the output screen of our sample program looks like for a menu with all the options described in PART 2.
![]() |
When the user (the receptionist) enters an option, the corresponding functionality will appear. For example, if the user chooses option 1, which is to rent a book, then the output screen of our sample program is as follows.
Other requirements in PART 2 (update information of a book category, update books of a book category, display existing customers, display existing book categories) can also be displayed in a similar manner.
As an example, this is how the output screen of our sample program looks like for a menu with all the options described in PART 3.
This is an example showing the output screen of our sample program when we select option 1 and rent multiple books.
6. Submission
As mentioned in the Code Requirements, you must submit only one file named ProgFunA1_<Your Student ID>.py via Canvas/Assignments/Assignment 1. It is your responsibility to correctly submit your file. Please verify that your submission is correctly submitted by downloading what you have submitted to see if the file includes the correct contents. The final .py file submitted is the one that will be marked.
All assignments will be marked as if submitted on time. Late submissions of assignments without special consideration or extension will be automatically penalised at a rate of 10% of the total marks available per day (or part of a day) late. For example, if an assignment is worth 20 marks and it is submitted 1 day late, a penalty of 10% or 2 marks will apply. This will be deducted from the assessed mark.
If you are applying for extensions for your assessment within five working days after the original assessment date or due date has passed, or if you are seeking extension for more than seven days, you will have to apply for Special Consideration, unless there are special instructions on your Equitable Learning Plan.
In most cases you can apply for special consideration online here. For more information on special consideration, visit the university website on special consideration here.
7. Referencing Guidelines
What: This is an individual assignment, and all submitted contents must be your own. If you have used any sources of information (e.g., websites, tools) other than the course contents directly under Canvas/Modules, you must give acknowledgement of the sources, explaining in detail how you use the sources in this assignment, and give references using the IEEE referencing format.
Where: You can add a code comment near the work (e.g., code block) to be referenced and include the detailed reference in the IEEE style.
How: To generate a valid IEEE style reference, please use the citethisforme tool if you're unfamiliar with this style.
8. Academic Integrity and Plagiarism (Standard Warning)
Academic integrity is about honest presentation of your academic work. It means acknowledging the work of others whilst developing your own insights, knowledge, and ideas. You should take extreme care that you have:
If you do not acknowledge the sources of your material, you may be accused of plagiarism because you have passed off the work and ideas of another person without appropriate referencing, as if they were your own.
RMIT University treats plagiarism as a very serious offence constituting misconduct. Plagiarism covers a variety of inappropriate behaviors, including:
For further information on our policies and procedures, please refer to the University website (link).
9. Assessment Declaration:
When you submit work electronically, you agree to the assessment declaration: https://www.rmit.edu.au/students/student-essentials/assessment-and-results/how-to-submit-your- assessments
Trusted by students worldwide, Punjab Assignment Help delivers academic excellence, every time.
Get original papers written according to your instructions and save time for what matters most.