Work Hours
Everyday: 北京时间8:00 - 23:59
COMP 5076 Problem Solving in the Digital Age
Assignment 2 – Timetable
UniSA STEM
The University of South Australia
2023
Warning: This material has been reproduced and communicated to you by or on behalf of the University of South
Australia in accordance with section 113P of the Copyright Act 1968 (Act). The material in this communication may
be subject to copyright under the Act. Any further reproduction or communication of this material by you may be
the subject of copyright protection under the Act.
Overview
In this assignment, you are tasked to design and develop a text-based Python program that
helps managing a weekly timetable. Throughout the process of developing this software
program, you should apply and practice the topics learnt through this course.
Timetable
The Python program to develop is for managing a weekly timetable. The timetable should
support seven-day week, and allow creating, deleting, and updating a scheduled event. Each
event must have a title, when it starts and ends, and optionally where it is held.
Title: Meet project team
When: Friday 10:00am-10:30am
Where: Brightside Cafe
Below is an example of such a timetable showing a schedule for the full week. The table below
is provided just to explain the concept of a weekly timetable, while the actual output of your
program may depend on your own design.
Sun Mon Tue Wed Thu Fri Sat
Gym
7-7:30am
Gym
7-7:30am
Gym
7-7:30am
Gym
7-7:30am
Gym
7-7:30am
9am
10am Badminton
CW gym
DS Seminar
F1-24
Meet proje..
Meet super..
11am DS Practical
P1-13
12pm 11:10-12pm Lunch w K..
12-1pm
1pm CS Lecture
Online
2pm 1:10-3pm Book club
MLK Libr..
3pm CS Practical 2:30-4pm
P1-13
4pm 3:10-4pm
Tutoring
7-8:30pm
Tutoring
7-8:30pm
Requirements
The Python program must adhere to the following requirements.
Non-functional requirements:
- Must be written in a single Python script without using any import statement.
- At the top of the Python script should include the following comment (parts in blue must be
replaced by your own personal details) :
#
File: filename.py
Author: Steve Jobs
Student ID: 12345678
Email ID: jobst007
This is my own work as defined by
the University’s Academic Misconduct Policy.
#
- Text output must be no more than 80 characters wide per line and 30 lines per screen.
- Loop structures must be well constructed and never use break statement.
- Sufficient documentation of the code must be practiced by using docstrings and comments.
Each function must have a docstring. Each significant block of code should have a high-level
description of what it is doing. Variables must have a comment explaining its purpose when it
is first introduced. - Variables and functions must have meaningful names that reflect their purpose. The only
place a single character name is allowed is where a variable is defined for iteration in a loop. - Your code should follow PEP 8 – Style Guide for Python Code available at
https://peps.python.org/pep-0008/. Especially, variable and function names must use
under_score naming style consistently. - Your code must be structured in a procedural programming paradigm (i.e., structuring your
code as a collection of functions, no class definition is allowed). Using any built-in functions
that are not covered in this course is not recommended, but if it is necessary, it must have
comments explaining what it means and why it is necessary. - No global variable must be allowed. All variables should be local to a function.
- No global level statement must be allowed other than calling the main() function which
must be the starting point of your program. - The program must be robust and should not crash in any case.
- The program should be user friendly so it could be easily understood how to use it even for a
first-time user.
Functional Requirements: - The program must start with printing out the title and the author’s name and UniSA email.
- The program must provide a text-based prompt or a menu so that a user can interactively
perform various actions to manage the timetable, until deciding to quit. - User inputs must be validated (e.g., wrong data type, out of range, or not among the provided
options) and asked again with proper error messages if invalid. - A user must be able to create, update, and delete a scheduled event. An event must have a
title, when it starts and ends, and optionally where it is held. Identifying an event for updating
or deleting it should be based on the start time of the event. - The timetable must at least support scheduling events during the work hours, 9am – 5pm.
- Scheduling an event must support at least hour level granularity (11am, 3pm, etc.).
- Events must have no overlap in their duration. When creating or updating an event, the start
and end time must be checked against other events to ensure there is no overlap. If a user tries
to schedule an event that overlaps with another event, an error message should be displayed
and ask the user to reschedule the event. - A user must be able to print the timetable which gives an overview of the schedule for the
whole week. This should include as much details as possible, but may abbreviate (e.g., long
title or location) or omit certain details (e.g., end time or location) of each event as needed to
make them fit into a table formatting. - A user must be able to print a list of all the events scheduled on a selected day of the week in
chronological order. This should provide full details of each event (without any abbreviation
or details omitted) on the selected day. - A user must be able to store (save and load) the timetable data on a file with provided file
name.
Advanced Features: - The program could support scheduling events outside the work hours. It should include them
at relevant places when printing the timetable for the whole week. - Scheduling an event could support minute level granularity (10:10am, 2:45pm, etc.).
- The program could provide an option for the user to choose the start day of the week (e.g.,
the first day of the week could be either Sunday or Monday). This option should be applied
when printing the timetable for the whole week or printing the search results. - A user could be able to search for an event based on keywords in their title or location. The
keyword search should be case insensitive (i.e., both ‘lect’ and ‘LeCt’ should have the same
search results). The search result should print out a list of all the events that matches the search
condition, sorted in chronological order and with their full details. - The event which user wants to delete or update could be identified using a keyword search,
in addition to its start time (as it was prescribed as a functional requirement).
Video Presentation
A video recording (no longer than 10 minutes) of yourself demonstrating your program must
be included in your submission.
You must first state your name then give verbal explanation while demonstrating your program
showing how each feature works. The video must show your own face together with the
computer screen (you can do this by recording on Zoom while sharing your computer screen.)
The video must clearly show the output on the screen so the text information would be legible.
The video must also include explanation of the overall structure of your Python program by
providing a brief description of each function. It must also include a description of the file
structure used, explaining how the timetable information is stored in a file.
Submission
You must submit your assignment through the learnonline course webpage by the due date as
indicated on the submission link. Submission of your assignment must include:
1) a Python program file (.py file)
2) a presentation video clip (maximum 10 minutes in .mp4 file)
Late Submission
Late submissions will be penalised by scaling the marks by 70% unless with pre-approved
extension. Application for extension should be lodged through the course website and it
requires a document proving acceptable reasons for extension (e.g., medical certificate, or a
letter from your work supervisor).
Academic Misconduct
Students must be aware of the academic misconduct guidelines available from the University
of South Australia website. Deliberate academic misconduct such as plagiarism is subject to
penalties. Information about Academic integrity can be found in Section 9 of the Assessment
policies and procedures manual at:
https://i.unisa.edu.au/policies-and-procedures/codes/assessment-policies/
Marking Criteria
Criteria Max Mark Comment
Python Program
Non-functional requirements 10
Functional requirements 15
Advanced features 10
Sub Total 35
Video Presentation 5
Total 40
Penalties
Missing student details in submissions. -10 - Late submissions will be penalised by scaling down to 70% of the total mark.