程序代写案例-COMP0022

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top
Database and Information Systems COMP0022
Coursework briefing
This document explains the arrangements for the coursework, a group project in which you will develop an information system using
the MovieLens dataset. Through this coursework you will develop your knowledge of database technologies and your skills with
database development methods. The project runs through the term and will be done entirely online and remotely. The things you
have to deliver are a group online demonstration of a working system (80%), a group report documenting the normalised design of
the database along with a description of the SQL queries used, and an individual report (20%); these together are worth half of the
total marks for the module.
The project will benefit from weekly recorded tutorials (given by Graham Roberts) which explain technologies and methods you may
use. A weekly online consultation with Azim Khan, our postgrad teaching assistant, will be scheduled.
The coursework should be performed in groups of four and groups must be self-formed by the end of the first week using the wiki on
Moodle. We will allocate people to groups who aren’t in a group.
Design brief
You are asked to design and build a system to achieve the outline use cases for the scenario given in this design brief. How you do it
and what you produce in detail is your choice. Essentially you get marks for what you build and the more sophisticated the more
marks you get. Your work will certainly achieve at least a reasonable or good pass mark if you produce a system that achieves the
requirement in at least some form.
The system is for use by marketing professionals in the movie industry. It will make use of the MovieLens data which consists of
information about movies and ratings and tags of movies provided by viewers, etc. The system is intended to enable marketing
professionals to analyse how audiences have responded to films that have been released, and to help them understand the market
for films that they are planning. It is intended to help them better understand the different kinds of viewers of movies and their
varying preferences. The core functions that your system should provide are these:
Use case /function:
1. Browsing films in the database (i.e., visual listings of films in the dataset, with user-modifiable views).
2. Searching for a film to obtain a report on viewer reaction to it (i.e., an interpreted report with aggregate viewer ratings,
etc.).
3. Reporting which are the most popular movies and which are the most polarising (extreme difference in ratings).
4. Segmenting the audience for a released movie (i.e., identifying categories of viewer by the rating and tag data, also in
relation to data for ratings to all movies).
5. Predicting the likely viewer ratings for a soon-to-be-released film based on the tags and or ratings for the film provided by
a preview panel of viewers drawn from the population of viewers in the database.
6. Predicting the personality traits of viewers who will give a high rating to a soon-to-be-released film (using the
personality/ratings dataset from GroupLens) whose tags are known.
Groups should make use of the small dataset http://files.grouplens.org/datasets/movielens/ml-latest-small.zip. For the personality
part there is a separate dataset made available by GroupLens. You may wish to extend your database with additional movie details
available from IMDB.
Groups should build their system so that it can run on a Linux virtual machine. It is strongly recommended that you use Docker
containers for your system, using a container for each component, and the containers communicating via a private container
network. For example, one will be running the web server, another the database, another performing the data processing, etc. Using
containers will make it easier to develop on your local development machines and easier to deploy to a Linux VM running Docker.
You do not need to install the software you need directly onto your local machine or the VM, use the containers instead.
See the Docker documentation here: https://docs.docker.com for detailed information about using Docker, or follow one of the
courses on LinkedIn Learning (e.g., the Learning Docker or Docker Essential Training courses).
Visual Studio Code (VSC, https://code.visualstudio.com) is an excellent tool for developing web and database applications. In
particular, investigate the Remote Containers extension, as this integrates VSC with Docker containers and makes developing with
containers nice and straightforward. See https://docs.microsoft.com/en-us/learn/modules/use-docker-container-dev-env-vs-code/
for more information (this is on Microsoft Learn, you can login using your UCL account and get full access – this is strongly
recommended as well).
An Ubuntu VM will be provided for you running on Azure Labs in the cloud, so you do not need to install or setup a VM on your
development machine if you are using Docker. The Azure VM will have a fixed amount of credit, which should be fully sufficient for
what you need, but by default it is not intended to be your main development platform. However, if you do need to use the Azure
VM for development due to lack of resources on your own machines, then let the module organisers know and more credit can be
provided if needed.
It is up to you which programming languages, software packages, libraries, databases, etc. you make use of. Everything you need will
be available as Open Source software, so there should not be any licencing issues, and there will almost certainly be a range of pre-
defined Docker images available at Docker Hub (https://hub.docker.com) for anything you use. For example, the official MySql image
can be accessed at: https://hub.docker.com/_/mysql.
A core part of your system will be the database, which must be a SQL database, and should have an appropriate number of tables.
Groups will need to create an entity relationship diagram (ERD) which they will translate into the schema for their relational
database. The schema should be normalised.
You must design and implement the SQL database directly following the ERD, along with all the required SQL code to access the
database. You cannot use automated tools to create the database using a specification language, object-relational or similar
mapping frameworks, or anything that generates SQL code automatically. You can write SQL scripts to create and configure your
database (this is standard SQL code), and help manage the database.
NOTE: this is an important constraint – you must design and implement the database and SQL queries yourselves, and cannot use
tools that generate the database and queries automatically. Your code must construct the SQL queries and run them, and extract
the data from the result sets.
You have the choice of which other web, front-end and back-end technologies you use, but bear in mind that the primary goal is the
design and implementation of a robust database so don’t get side-tracked by trying to use the latest and greatest application
frameworks!
Your group should have a GitHub repository, used properly, with regular commits. It should be possible to build and deploy your
application by pulling the latest version from the repository. The proper use of GitHub will be considered a core activity for the
project work, if you need a refresher on using GitHub follow the tutorial on the GitHub Docs website (https://docs.github.com/en) or
one of the courses on LinkedInLearning.
A well-designed application will have a gateway service connected to the internet, with all the other components and services
running in a virtual private network (the Docker container network). The security of the application should be addressed and you
should identify and implement strategies to keep it secure. For example, as you are using SQL the application should not be
susceptible to SQL injection attacks.
Credit will be given if your application design can address scalability, so the application could potentially scale-up to thousands of
simultaneous users. This might mean having multiple database servers, using caches, micro-services, and other strategies. Identify
scaling strategies that minimise cost while still giving flexibility, and how to control costs. It is better to have an application that has
clearly defined upper performance or scalability limits than one which simply consumes resources in an uncontrolled way.
Your application should have a reasonable user interface but the focus of the work and our assessment of it is the back-end and the
database design and implementation.
Project Deliverables
1. Group demonstration.
We will arrange a 15 minute online demonstration of each group’s system in the final week of term. Everyone in the group
will get the same mark for the demonstration. The demonstration should clearly show each working feature you have
implemented from the list given earlier. Make sure that each feature is shown one-by-one in sequence, not all mixed up!
And that each feature is introduced so it is clear what you are describing at any given time in the demo. You do not have to
create a formal presentation with slides, but do aim for conciseness and clarity.
2. Group documentation.
Each group should submit a brief document (2 pages max) providing a description of the system you have created (ERD,
tables, queries, other relevant features). You should also supply the URL to your GitHub repository, so that both the final
version of the application and the history (commits) can be viewed. You can make the repository private provided that the
markers are given access.
3. Individual report (3 pages max). Each group member should submit a report giving their own account of the design of the
system and explanation of how the functions for each of the use cases is achieved, and an evaluation of the development
strategy used (e.g., use of containers). It should also include their own critique of how well the system achieves the use
case, and it should give a summary of the work they did in each week of term towards the system design and build.
Assessment
You will receive a mark for the Group Components (80% of the total coursework mark, everyone in the group will receive the same
mark.) and for your Individual Report (20% of the total coursework mark). As above, these marks together make up half of the
module mark.
Group Components:
Marks will be awarded for the extent and sophistication of what you use and create and will be judged primarily on what is seen in
the demonstration. Each member of the group will receive this mark. Group Component marks will be awarded in these categories:
• 40% for the database design and implementation, including the definition of the normalised database schema and SQL
queries used. The database design should include a good number of tables, requiring more complex queries than just
simple Selects, Updates, etc.
• 40% for design of the overall application, in terms of components, software choices, level of data processing and
predictions achieved.
• 20% for the effectiveness of the Service created. Marks will be awarded for the likely value to users of the Service and its
likely operational effectiveness, including features like the relative scalability (if attempted) and how security has been
addressed.
Individual Report:
Marks for the Individual Report will be awarded for:
(a). 60% for explaining the high level system function for each use case and the approach taken
(b). 20% for your critique of how well the system achieves each use case.
(c). 20% for an account of the work personally contributed by you each week towards the system design and build.
The assessment of the work will be provided using Moodle's rubric marks tool showing how and why marks are awarded in each
category. In addition to these marks, a summary comment on the project will be provided.


欢迎咨询51作业君
51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468