ICT239 Web Application Development End-of-Course Assessment July 2025
| University | Singapore University of Social Science (SUSS) |
| Subject | ICT239: Web Application Development |
ICT239 End-of-Course Assessment – July Semester 2025
Course: ICT239 Web Application Development
ECA Submission Deadline: Sunday, 09 November 2025, 12 noon
This ECA carries 70% of the course marks and is a compulsory component. It is to be done individually and not collaboratively with other students.
Notes to Students
- Use the solution template document provided with the question paper.
- Show only relevant code segments and explain them in your answers. Do not copy large chunks of code.
- The marker will run your application on Vocareum using start.sh. Update requirements.txt if you install additional packages, and add an instructions.txt or instructions.md file explaining how to run your application.
- Provide screenshots of output from your runs in the solution document, or record and upload recordings of the runs.
- Submit all source code, the Word report and any recordings in Vocareum. The Word report must include an appendix with the complete content of all your solution files (py, html, css, js), and must also be submitted on Canvas.
Question 1 (20 marks)
Explain your answer and supplement your explanation by lifting/commenting on the relevant source code in the Staycation application.
Question 1a (11 marks)
Explain the MVC architecture and its advantages when applied to web applications such as Staycation. Then, use ONE (1) complete user function (e.g., get package details, book package, manage booking) and relevant code segments in the frontend and backend components to explain how the M, the V and the C components of the MVC architecture are applied to the Staycation application.
Question 1b (9 marks)
- Explain the typical purposes of GET and POST requests and evaluate whether they have been appropriately used in the Staycation application.
- Compare the security features of the two types of requests.
- Explain whether it is possible to make either or both requests more secure, and if so, how you would go about doing so.
Question 2 (20 marks)
Make modifications to the existing functions in the Staycation application.
Question 2a – Modification to Booking Function (10 marks)
- Does the Staycation application allow users who are not authenticated to make bookings? Justify and explain using the relevant code.
- Re-implement the booking function so that the admin user cannot make a booking. If the admin user clicks the Book button on either the Package page or the Package Detail page, an error message should be shown.
Question 2b – Modification to Upload Function (10 marks)
Modify the Upload function to read CSV files with the columns check_in_date, customer and hotel_names, where hotel_names is a list of one or more hotels.
Add a new option that allows the admin user to read a CSV file with a list of hotel names and create bookings that run consecutively from the specified check_in_date. For example, if a row lists three hotels from 27/9/2025 and each package is 2 nights, create bookings with check-in dates 27/9/2025, 29/9/2025 and 1/10/2025. Create as many bookings as there are hotel names in each data row.
Question 3 (40 marks)
Add new features to the Staycation application.
Question 3a – Purchase Bundle Function (16 marks)
Using the Package page, allow an authenticated non-admin user to buy packages as a bundle and qualify for a discount based on the number of packages purchased. Display appropriate messages if the user is not authenticated or is an admin user.
- Add a checkbox for each staycation package and a Purchase Bundle button below the top panel.
- No package selected: flash “Please select packages to buy as a bundle”.
- One package: no discount. Two or three packages: 10% discount. Four or more packages: 20% discount.
- Study the sample MongoDB bundle documents (purchased_date, customer, bundledPackages with package and utilised fields), define the required document structures and include all methods needed.
- There is no limit to the number of bundles purchased in a day. Set the purchase date to the current date and the “utilised” status of each package to false.
Question 3b – Manage Bundle Function (14 marks)
Allow a non-admin user to view the bundles purchased (sorted by ascending purchase date) and make a booking by selecting a check-in date and clicking the Book button.
- Show a message if the user has not purchased any bundle.
- Packages in a bundle must be booked within a year of purchase, or the bundle and its packages expire.
- Once a package is utilised, set its “utilised” status to true.
- Show utilised and expired packages in expired bundles, and utilised and un-utilised packages (with a date selector) in bundles that have not expired.
- Define the required document structures and include all methods needed.
Question 3c – Single Page Application (10 marks)
Differentiate between a multi-page application and a single-page application. Re-implement Question 3b as a single-page application for the booking of packages in the Manage Bundle function, using a copy of your solution.
Show the relevant code segments before and after the changes, explain what the changes achieve and why they are required, and indicate the file each segment comes from. Submit Question 3c as a separate Flask application in the folder Q3c.
Question 4 (20 marks)
Add a new chart for the admin user.
- Modify the Dashboard hyperlink so that it shows a page with a dropdown menu but no chart.
- Amount Incoming: display the original trend chart (including bookings uploaded through the modified upload function, if Question 2b was implemented).
- Bookings By Month: display a bar chart of the number of bookings for each month-year for each hotel, sorted by hotel name. Show a very small bar for data points with the value 0.
- Choose a Type: return to the dashboard page without a chart.
Show the relevant code segments before and after the changes, including new code, explain what the code achieves and why it is required, and indicate the file name of each segment.
- Question 4a (4 marks): Implement all frontend components (without JavaScript).
- Question 4b (8 marks): Implement all backend components.
- Question 4c (8 marks): Implement the JavaScript component.
—– End of ECA Paper —–
Get Expert Help With Your ICT239 Web Application Development ECA
Stuck explaining MVC with real Staycation code, or implementing the bundle purchase, single-page booking and dashboard charts in Flask and MongoDB? Our my assignment help programming experts support students with the ICT239 Web Application Development ECA, from GET versus POST security and CSV upload logic to MongoDB document design, AJAX-based single-page booking and Chart.js dashboards. You can also review our computer and IT assignment samples and browse more SUSS assignment questions. If you are short on time, our do my assignment service gives personalised guidance on code explanation and the solution template, so your submission stays original.
- HRM203 Human Behaviour in Organisations Tutor-Marked Assignment 01, 2025
- Introduction, Legal Writing and Research Assignment 2026: Separation of Powers and Singapore Courts
- HR9534 Resourcing and Development for Diversity Assessment Brief 2026
- GSS503 Navigating Risk in an Interconnected World Tutor-Marked Assignment 01, 2026
- AVM345 Airline Operations and Planning End-of-Course Assessment 2026
- PSY373 Psychology of Nonverbal Behaviours End-of-Course Assessment 2026
- MLA601 Maritime Industry in the 21st Century Assessment Brief, September 2026
- MKT373 Strategic Content Management End-of-Course Assessment 2026
- PSY391 Applied Research Methods and Statistics End-of-Course Assessment 2026
- Organisational Change Intervention Plan Assignment Brief 2026
