联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2020-10-16 10:52

INFS2605 Intermediate Business Programming

Term 3, 2020

INFS2605 Mid Term Assessment

This document describes the requirements and assessment criteria for the Mid Term

Assessment for INFS2605. For general enquiries, please use the edstem.org forum.

Contents

(1) Mid Term Assessment Overview .................................................................................................................................2

(2) Scenario and Code.............................................................................................................................................................3

(3) Assessment Questions ..................................................................................................................................................12

(4) Assessment Criteria ........................................................................................................................................................13

(4.1) Marking Rubric ............................................................................................................................................................13

(4.2) Assessments and Plagiarism ..............................................................................................................................13

(4.3) Problem-Solving Process......................................................................................................................................14

(5) Submission ...........................................................................................................................................................................15

(5.1) Software Recommendations for recording ...................................................................................................15

(5.2) Submission...................................................................................................................................................................15

(5.3) Late Submission Penalty .......................................................................................................................................15

(6) FAQ..........................................................................................................................................................................................16

Page 2 of 16

Revision 1, 5 October, 2020 (20t3)

(1) Mid Term Assessment Overview

The INFS2605 Mid Term Assessment is worth 20% of your overall INFS2605 mark. The

assessment involves creating a video recording of the student’s screen and voice to answer

questions and analyse a small Java program. The student must submit their recording in MP4

format (and any other visual aids used) via OneDrive by the submission date.

The Mid Term Assessment tests the student’s understanding of the first four weeks of content in

INFS2605. This document outlines three questions which students are required to answer for

this assessment. All questions are based around a fictional and incomplete Java application

named Lockdown Companion, created for the purpose of this assessment.

As included in the INFS2605 Field Manual, the topics covered in the first four weeks and tested

in this assessment include:

- INFS1609 Revision

- Data structures

- Database Connections

- Object-Relational Mapping

- Introduction to UX

- UI Elements

- Introduction to JavaFX

As per the INFS2605 Course Outline, the following Course Learning Outcomes will be tested in

this Mid Term Assessment:

- Interpret, review and share software code

- Design, write and evaluate programming solutions for small to medium scale problems

- Explain and apply MVC architecture in developing programming solutions

For questions on the Mid Term Assessment, consult the FAQ section of this document. If you

have a question that is not answered in this section, contact your lecturer by email

(d.mitra@unsw.edu.au) or via MS Teams.

Page 3 of 16

Revision 1, 5 October, 2020 (20t3)

(2) Scenario and Code

All questions in the Mid Term Assessment will be based off a fictional and incomplete Java

application named Lockdown Companion.

Do you miss travelling? Or do you simply yearn to see the world, but have been locked down due

to external factors out of your control? Then the Lockdown Companion is the perfect application

for you! The Lockdown Companion application offers virtual guided tours for anyone from the

comfort of their own home. Whether it’s a guided tour of The Louvre in France, a boat ride

through the canals of Venice, or a virtually tiresome trek through the trails of Machu Picchu, the

Lockdown Companion app can provide you the experiences of a lifetime without you leaving your

home!

The lockdown companion application will eventually be able to show you 3D virtual reality

representations of your favourite places around the world, and be able to recommend virtual trips

to you based off your previous virtual travels. Tours can either be Live with a tour guide showing

you around, or be pre-recorded sessions that you can view at any time at your leisure.

The Lockdown Companion application is a Java based application with a SQLite database that

stores user data and data on the virtual tours available on the platform. As a software and UX

Design expert, you are asked to analyse the codebase and design part of the UI of the Lockdown

Companion application. You are asked to provide your response to the questions in the form of a

screen and audio recording.

The original developer of the partially-built Lockdown Companion application has provided the

following Java files for your review (note that .fxml files and App.java are not included). The files

can be grouped into Controller and Model classes, and include an extra DatabaseManager class

for help with running SQL queries:

Controller Classes

? LoginController.java

? ToursController.java

Model Classes

? User.java

? TourGuide.java

? Customer.java

? Tour.java

? LiveTour.java

? PreRecordedTour.java

Database Helper

? DatabaseManager.java

LoginController.java:

package LockdownCompanion;

import java.io.IOException;

import javafx.fxml.FXML;

import javafx.scene.control.Label;

import javafx.scene.control.TextField;

/**

* FXML Controller for Login.fxml

* @author Devesh Mitra

* @version 0.1

*/

Page 4 of 16

Revision 1, 5 October, 2020 (20t3)

public class LoginController {

@FXML

TextField txtUsername;

@FXML

TextField txtPassword;

@FXML

Label lblLoginError;

@FXML

protected void initialize() {

// initialize login page here

lblLoginError.setText("");

}

@FXML

private void btnLoginWasClicked() throws IOException {

String username = txtUsername.getText();

String password = txtPassword.getText();

String pwdHash =

DatabaseManager.fetchPasswordHashByUsername(username);

if (BCrypt.checkpw(password, pwdHash)) {

lblLoginError.setText("Sorry, incorrect credentials.");

} else {

// login successful, clear error label and switch to Tours

screen

lblLoginError.setText("");

App.setRoot("tours");

}

}

}

ToursController.java:

package LockdownCompanion;

import javafx.fxml.FXML;

import java.util.ArrayList;

/**

* FXML Controller for Tours.fxml

* @author Devesh Mitra

* @version 0.1

*/

public class ToursController {

@FXML

ArrayList<Tour> allTours;

@FXML

protected void initialize() {

// initialize tours page here

allTours = DatabaseManager.fetchAllTours();

}

}

Page 5 of 16

Revision 1, 5 October, 2020 (20t3)

User.java:

package LockdownCompanion;

import java.util.UUID;

/**

* Model Class for generic User of application

* @author Devesh Mitra

* @version 0.1

*/

public class User {

private UUID userUUID;

private String firstname;

private String lastname;

private String username;

public User(UUID userUUID, String firstname, String lastname, String

username) {

this.userUUID = userUUID;

this.firstname = firstname;

this.lastname = lastname;

this.username = username;

}


/**

* @return the userUUID

*/

public UUID getUserUUID() {

return userUUID;

}

/**

* @return the firstname

*/

public String getFirstname() {

return firstname;

}

/**

* @param firstname the firstname to set

*/

public void setFirstname(String firstname) {

this.firstname = firstname;

}

/**

* @return the lastname

*/

public String getLastname() {

return lastname;

}

/**

* @param lastname the lastname to set

*/

public void setLastname(String lastname) {

this.lastname = lastname;

Page 6 of 16

Revision 1, 5 October, 2020 (20t3)

}

/**

* @return the username

*/

public String getUsername() {

return username;

}

/**

* @param username the username to set

*/

public void setUsername(String username) {

this.username = username;

}

}

TourGuide.java:

package LockdownCompanion;

import java.util.UUID;

/**

* Model Class for Tour Guide (a type of user)

* @author Devesh Mitra

* @version 0.1

*/

public class TourGuide implements User {

private String tourCompanyName;

private String countryOfBirth;

public TourGuide (UUID userUUID, String firstname, String lastname,

String username, String tourCompanyName, String countryOfBirth) {

super(userUUID, firstname, lastname, username);

this.tourCompanyName = tourCompanyName;

this.countryOfBirth = countryOfBirth;

}


/**

* @return the tourCompanyName

*/

public String getTourCompanyName() {

return tourCompanyName;

}

/**

* @param tourCompanyName the tourCompanyName to set

*/

public void setTourCompanyName(String tourCompanyName) {

this.tourCompanyName = tourCompanyName;

}

/**

* @return the countryOfBirth

*/

public String getCountryOfBirth() {

return countryOfBirth;

Page 7 of 16

Revision 1, 5 October, 2020 (20t3)

}

/**

* @param countryOfBirth the countryOfBirth to set

*/

public void setCountryOfBirth(String countryOfBirth) {

this.countryOfBirth = countryOfBirth;

}

}

Customer.java:

package LockdownCompanion;

import java.util.UUID;

/**

* Model Class for Customer (a type of User)

* @author Devesh Mitra

* @version 0.1

*/

public class Customer extends User {

/**

* TODO: add new fields for Customisation / User Settings

*/

public Customer (UUID userUUID, String firstname, String lastname,

String username) {

super(userUUID, firstname, lastname, username);

}

}

Tour.java:

package LockdownCompanion;

/**

* Model Class for generic Tour

* @author Devesh Mitra

* @version 0.1

*/

public class Tour {

private TourGuide tourGuide;

public Tour (TourGuide tourGuide) {

this.tourGuide = tourGuide;

}


/**

* @return the tourGuide

*/

public TourGuide getTourGuide() {

return tourGuide;

}

/**

* @param tourGuide the tourGuide to set

*/

public void setTourGuide(TourGuide tourGuide) {

Page 8 of 16

Revision 1, 5 October, 2020 (20t3)

this.tourGuide = tourGuide;

}

}

LiveTour.java:

package LockdownCompanion;

import java.time.LocalDateTime;

/**

* Model Class for Live Tour (a type of Tour)

* @author Devesh Mitra

* @version 0.1

*/

public class LiveTour extends Tour {

private LocalDateTime startTime;

private LocalDateTime endTime;

public LiveTour (TourGuide tourGuide, LocalDateTime startTime,

LocalDateTime endTime) {

super(tourGuide);

this.startTime = startTime;

this.endTime = endTime;

}


/**

* @return the startTime

*/

public int getStartTime() {

return startTime;

}

/**

* @param startTime the startTime to set

*/

public void setStartTime(LocalDateTime startTime) {

this.startTime = startTime;

}

/**

* @return the endTime

*/

public LocalDateTime getEndTime() {

return endTime;

}

/**

* @param endTime the endTime to set

*/

public void setEndTime(LocalDateTime endTime) {

this.endTime = endTime;

}

}

PreRecordedTour.java:

package LockdownCompanion;

Page 9 of 16

Revision 1, 5 October, 2020 (20t3)

/**

* Model Class for Pre-Recorded Tour (a type of Tour)

* @author Devesh Mitra

* @version 0.1

*/

public class PreRecordedTour extends Tour {

private int lengthInMinutes;

private boolean supportsVirtualReality;

public PreRecordedTour (TourGuide tourGuide, int lengthInMinutes,

boolean supportsVirtualReality) {

super();

this.lengthInMinutes = lengthInMinutes;

this.supportsVirtualReality = supportsVirtualReality;

}


/**

* @return the lengthInMinutes

*/

public int getLengthInMinutes() {

return lengthInMinutes;

}

/**

* @param lengthInMinutes the lengthInMinutes to set

*/

public void setLengthInMinutes(int lengthInMinutes) {

this.lengthInMinutes = lengthInMinutes;

}

/**

* @return the supportsVirtualReality

*/

public boolean getSupportsVirtualReality() {

return supportsVirtualReality;

}

/**

* @param supportsVirtualReality the supportsVirtualReality to set

*/

public void setSupportsVirtualReality(boolean supportsVirtualReality)

{

this.supportsVirtualReality = supportsVirtualReality;

}

}

DatabaseManager.java:

package LockdownCompanion;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

Page 10 of 16

Revision 1, 5 October, 2020 (20t3)

import java.util.ArrayList;

/**

* Database helper methods for LockdownCompanion app

* @author Devesh Mitra

* @version 0.1

*/

public class DatabaseManager {

private static final String TABLE_NAME_FOR_USERS = "users";

private static final String TABLE_NAME_FOR_TOURS = "tours";

private static Connection sharedConnection;

/**

* This method is shared by all the `public static` methods in this

class, to reuse the same code.

* @return whether or not the connection was successfully opened

*/

private static boolean openConnection() {

boolean wasThisMethodSuccessful = false;

try {

DatabaseManager.sharedConnection =

DriverManager.getConnection("jdbc:sqlite:Tours.db");

wasThisMethodSuccessful = true;

} catch (SQLException e) {

e.printStackTrace();

} finally {

return wasThisMethodSuccessful;

}

}

public static ArrayList<Tour> fetchAllTours() {

ArrayList<Tour> allTours = new ArrayList<Tour>();

try {

DatabaseManager.openConnection();

String sqlString = "SELECT * FROM " +

DatabaseManager.TABLE_NAME_FOR_TOURS;

Statement smt = sharedConnection.createStatement();

ResultSet rs = smt.executeQuery(sqlString);

while (rs.next()) {

if (rs.getString("tour_type") == "live") {

allTours.add(new LiveTour(rs.getString("tour_guide"),

rs.getTimestamp("start_time").toLocalDateTime(),

rs.getTimestamp("end_time").toLocalDateTime()));

} else {

allTours.add(new

PreRecordedTour(rs.getString("tour_guide"),

rs.getInt("length_of_tour_minutes"), rs.getBoolean("supports_vr")));

}

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

return allTours;

}

}

public static String fetchPasswordHashByUsername(String username) {

Page 11 of 16

Revision 1, 5 October, 2020 (20t3)

String preparedReturn = "";

try {

DatabaseManager.openConnection();

String sqlString = "SELECT pwdHash FROM " +

DatabaseManager.TABLE_NAME_FOR_USERS

+ " WHERE username = *";

PreparedStatement psmt =

sharedConnection.prepareStatement(sqlString);

psmt.setString(1, username);

ResultSet rs = psmt.executeQuery();

while (rs.next()) {

preparedReturn = rs.getString("pwdHash");

}

} catch (SQLException e) {

e.printStackTrace();

} finally {

return preparedReturn;

}

}

}

Page 12 of 16

Revision 1, 5 October, 2020 (20t3)

(3) Assessment Questions

The following are the three questions required to be answered for the Mid Term Assessment.

1. The original developer of the Lockdown Companion codebase rushed their development

process and did not test their code. Find 5 errors in the Java codebase for the Lockdown

Companion Application, determine the fix for these errors, and present your fixes for the

coding errors. The errors may be syntactical or logical errors. Use visual aids to help

explain why your changes will fix the coding mistakes made by the original developer. (5

marks)

2. Design User Interfaces for the following Lockdown Companion App screens: the User

Customisation screen, and Tour Recommendations screen. Through the User

Customisation screen, the user of the application can customise their experience of the

application. For example, they can specify which countries or continents they would like

to visit next, change their visual and audio settings for the application, and customise

reminders and notifications of tours coming up. Through the Tour Recommendations

screen, the user can see upcoming tours recommended to them by the application, and

view a quick summary of the tours (including how much time is left until the tour, how long

the tour is, and who is organising or created the tour). You may add your own creative

ideas and functionality you think may be appropriate to these screens. Create your user

interfaces in a similar fashion to your Week 3 In-Tute exercise, and present your designs

in your video recording. Explain your use of Nielsen's 10 Design Heuristics in the User

Interfaces you have designed. (10 marks)

3. Without writing out the code for the UIs mentioned, design and describe the new classes

required to support the “Tour Recommendations” feature of the application, including the

methods and variables required by them. Your answer should take into account the MVC

framework, including classes required for Models and classes required for Controllers.

Think about what data is required to be stored by the Application, and how the user

would interact with the application. In your video, you should present (e.g. via a class

diagram) the classes and their methods and variables required to support the

functionality. (5 marks)

It is recommended to use visual aids to support your recordings as you answer these questions.

For example, use PowerPoint slides to show your fixes for the errors from question 1, present

your UI designs for question 2, and use a Java Class diagram to show the classes (including

methods and variables) you designed for question 3.

Page 13 of 16

Revision 1, 5 October, 2020 (20t3)

(4) Assessment Criteria

(4.1) Marking Rubric

The following marking rubric will be used to mark the INFS2605 Mid Term Assessment:

Question 1 Question 2 Question 3

1-2 errors and solutions are

correctly found and explained

(1 Mark)

UI designs make a poor

attempt at meeting the

requirements for the 2

screens, and may be

cluttered or lack in

consistency. Communication

of ideas and information is

presented in simplistically and

ineffectively. (2 Marks)

Minimal effort is put into

designing new classes with a

lack of visual aids to help

explain the student thought

process (1 Mark)

2-3 errors and solutions are

correctly found however

poorly explained (2 Marks)

UI designs meet most

requirements for the 2

screens, however may be

cluttered or lack in

consistency. Communication

of ideas and information is

presented in simplistically and

ineffectively. (4 Marks)

Classes, methods and

variables are well defined,

however some required

variables are missing, and

design is poorly explained

with a lack of visual aids (2

Marks)

3-5 errors and solutions are

explained in a sound manner,

however communication is

not clear or consistent (3

Marks)

UI designs accurately display

the requirements of the 2

screens and follow Nielsen’s

10 heuristics. UI may be

cluttered or lack in

consistency. Communication

of ideas and information is

presented in a sound manner.

(6 Marks)

Classes, methods and

variables are well defined.

Communication of ideas and

information is presented in a

sound manner, with little

effort put into visual aids. (3

Marks)

4-5 errors and solutions are

adequately explained with

good use of visual aids (4

Marks)

UI designs accurately display

the requirements of the 2

screens and follow Nielsen’s

10 heuristics. Explanation is

clear and consistent, with

good use of visual aids (8

Marks)

All newly designed classes

are clearly explained

(including methods and

variables) with good use of

visual aids (4 Marks)

All 5 errors and solutions are

clearly explained with strong

use of visual aids. Student

also notices further

improvements that could be

made within the code. (5

Marks)

UI designs accurately display

the requirements of the 2

screens and follow Nielsen’s

10 heuristics. Student has

added their own useful

features to the screens.

Explanation is clear and

consistent, with strong use of

visual aids (10 Marks)

All newly designed classes

are clearly explained

(including methods and

variables) with strong use of

visual aids such as a class

diagram. Student includes

design for their own useful

features (5 Marks)

(4.2) Assessments and Plagiarism

Assessments in INFS2605 are submitted and assessed pursuant to the UNSW Student Code of

Conduct (2020) and the UNSW Plagiarism Policy (2020). Although assessments in INFS2605 are

Page 14 of 16

Revision 1, 5 October, 2020 (20t3)

not traditional essays with traditional bibliographies, they are nonetheless works produced from

intellectual endeavour and respected as such. The table below gives INFS2605 examples the

plagiarism types defined in the UNSW Plagiarism Policy (2020).

UNSW definition INFS2605 example

Copying Using the same or very similar words to

the original text or idea without

acknowledging the source or using

quotation marks.

Submitting a verbatim (line for line

identical) copy of a code fragment /

video found on a website or a

textbook, or written by a private tutor.

Inappropriate

paraphrasing

Changing a few words and phrases

while mostly retaining the original

structure and/or progression of ideas

of the original, and information without

acknowledgement.

Finding a solution to a very similar

problem from the internet and applying

it with minimal changes to the

INFS2605 scenario at hand, without

acknowledging the source using incode

comments.

Collusion Presenting work as independent work

when it has been produced in whole or

part in collusion with other people.

Working with INFS2605 classmates to

produce similar solutions to individual

exercises.

Self-plagiarism ‘Self-plagiarism’ occurs where an

author republishes their own previously

written work and presents it as new

findings without referencing the earlier

work, either in its entirety or partially.

Submitting an assignment that has

been previously submitted to another

course.

(4.3) Problem-Solving Process

Students in INFS2605 are level 2 undergraduates who are expected to have the independently

tackle problems. However, it is recognised that problems are often very challenging and

additional support shall be provided to assist students in their endeavour to progress through the

course at a steady pace.

The following process is recommended for students tackling problems:

a) Individual revision and research:

a. Revision of INFS2605 course materials: lecture slides and students’ individual notes

written during INFS2605 lecture attendance

b. Revision of pre-requisite courses’ materials (e.g. INFS1609)

c. Individual research: Google / Stack Overflow searches, textbooks, etc.

b) Peer-assisted support *:

a. Open discussions on Ed

b. Attending PASS (Peer Assisted Study Session) for INFS2605

c) Instructor support:

a. Lecturer consultation appointment

b. Email to tutor (see section 4 below)

* Please note that peer-assisted support is limited to discussion about general concepts

discussed in the course; assistance for individual assessments is not permitted in accordance

with section 4.2 above.

Page 15 of 16

Revision 1, 5 October, 2020 (20t3)

(5) Submission

(5.1) Software Recommendations for recording

Students using Apple Mac computers can use the built-in QuickTime program to record their

response. Students using Microsoft Windows computers can use the built-in Xbox Game Bar

program to record their response. Students using either platform can use OBS Studio if these

previous options do not work. Each screen recording video file is to be uploaded as a 720p MP4

file. Students can use the Handbrake program to convert files to this format (use the “Fast

720p30” setting).

Further instructions can be found in slide 6 of the Module 2 lecture slides.

(5.2) Submission

Students will be recording their voice and screens, and produce an MP4 video of the full

recording. Students are encouraged to use visual aids such as PowerPoint slides or images to

help explain their answers to the Mid Term Assessment questions.

As a UNSW student, you have access to 5TB of storage using Microsoft OneDrive (see

https://www.myit.unsw.edu.au/services/students/storage/microsoft-onedrive).

Create a folder in your student OneDrive following the naming convention

zXXXXXXX_firstName_lastName_Mid_Term e.g. z1234567_Devesh_Mitra_Mid_Term. In this

folder, place your MP4 video recording and any visual aids you have used in your recording e.g.

PowerPoint slides or images.

Once your files have been uploaded to this folder, share them with your lecturer

(d.mitra@unsw.edu.au). OneDrive will send an email to the sharing recipient to confirm the

sharing. The timestamp of this email, together with the last edit timestamp of the files in the

folder will be used as the submission timestamp. If you do not want a late penalty, please make

sure your files in the submission folder are not edited after they are shared.

(5.3) Late Submission Penalty

Each day late will incur a 10% penalty, for example, submitting the files 2 days late means your

score will be capped at 80%.

Page 16 of 16

Revision 1, 5 October, 2020 (20t3)

(6) FAQ

This section will be updated regularly to reflect common questions received from students

1. What is the due date?

Friday, Week 5, 16th October, 11pm. Submission is via OneDrive (see Submission section for

instructions).

2. Do I have to record my face / use a webcam?

No, you are only required to record your screen and audio. You may choose to record your face if

you wish.

3. How long does the video recording have to be?

The video recording is recommended to be 8-10 minutes long. You will not be penalised for going

below or above this recommended amount, however it should be taken into account that there

are marks for clarity and communication. 8-10 minutes is an appropriate amount of time to

explain the content in a concise and well thought out way.

4. How professional does the video recording have to be? Is there an example video

somewhere?

Take your lecturer’s lecture recordings as an example. Treat the video recording as if you are

talking to your lecturer or tutor and explaining your answers to the questions to them. Having a

look at the marking criteria, you will gain marks for clarity and communication, so make sure your

voice is clear, but do not worry about creating an oscar-winning short film.

5. I am unable to install new software on my machine, or do not have a hardware

recording device, how can I do the recording?

We recommend in-built tools on MacOS and Windows machines, so it is not required to install

new software. Please see the Software Recommendations section in this document. For

microphones, most phones and laptops come with in-built microphones, as do some inexpensive

off-the-shelf earphones. There are microphone recommendations in slide 6 of Module 2 lecture

slides if you’d like to purchase professional ones.

6. Question 2 asks for UI designs. Should these be designed for a mobile interface or

web interface? Also, are we limited to only a single screen for the user customisation

/ tour recommendation UI?

The UI designs should be designed for a Desktop based Java application i.e. landscape view

instead of a mobile portrait view. For the UI screens, you are not limited to one screen. If you feel

multiple screens are necessary for the features and to meet UX heuristics, you are free to split

the functionality across multiple screens.

7. I have questions about the marking criteria / submission instructions / other

Please email (d.mitra@unsw.edu.au) or message your lecturer on MS Teams.


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp