首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
COMP1111程序讲解、辅导Java,CS编程语言 辅导R语言程序|辅导Python编程
项目预算:
开发周期:
发布时间:
要求地区:
COMP1111 Programming (Gold) 20-21
Summative Assessment
Programming Assignment 2: Server-Side Programming
Outline
• Handout Date: 22 February 2021
• Hand-in (Submission of code and video): by 14:00 23 April 2021
• Return by 21 May 2021
• Expected workload: 20 days, 3-4 hrs/day = 60 hrs
• Total Marks: 100
• Components marked: Code, Documentation, Video
• Contributes 60% of module marks
Submission
Source code (all zipped in a directory with correct file structure)
• README.txt with execution instructions
• HTML and CSS and any media
• Client and server-side JavaScript
• package.json including test and pretest scripts
• .eslintrc
• jest test cases e.g., app.test.js
• documentation of API
• demonstration video
You should not include node_modules in submission
Subject-specific Knowledge
• A knowledge and understanding of good programming practice (for
example, reuse, documentation and style)
COMP1111 Programming (Gold) 20-21
• Building collections of data within a program and using JavaScript
Object Notation (JSON)
• Making programs robust through the use of exceptions and exception
handling
• A knowledge and understanding of good programming practice (for
example, reuse, documentation and style)
Subject-Specific Skills
• An ability to realise solutions to problems as working JavaScript
programs
• An ability to apply reuse by exploiting predefined components
• An ability to use software tools related to programming (programming
environments, code management, documentation tools, etc.)
Key Skills
• An ability to communicate technical information
• An ability to recognise and apply the principles of abstraction and
modelling
Task summary
1. Construct a dynamic web site for an application of your choosing
meeting constraints as written below in the Dynamic Web Site section.
2. Use static HTML pages loading dynamic JSON content from server via
AJAX
3. Server written in nodejs to provide JSON through REST API
Dynamic web site
• Design a Business/Advertisement/Community/Organisation
website which has Objects/entities of at least two types e.g., say, an
object of commercial etc interest (books, electronics, pets, services
etc…), people/users/buyers/sellers, pictures, places, events,
comments …
The website must have a clear purpose which is evident
from/highlighted on the main/single page.
• If you are stuck for ideas, feel free to consult me
COMP1111 Programming (Gold) 20-21
Static HTML loading JSON via AJAX
• 'Single page app': page content loaded as JSON via AJAX
• Can have more than one page e.g., for user and admin
• Should provide clean and simple User Experience (UX)
• Should be responsive i.e., work well on desktop and mobile
• Recommend using framework such as Bootstrap, semantic-ui
Message sequence chart
Fig: Server providing JSON through a REST API
Entities
Each entity type (e.g., picture) has
• GET method to list/search (returns a list of ids and names)
• GET method for individual details (includes details of related
entities)
• POST method to add new entity
• Document your API in the style of the Twitter API
• Response provided as JSON
• Content-type needs to be correct
• HTTP codes should be correct: use 200, 400 or 403 (if using
authentication)
COMP1111 Programming (Gold) 20-21
Server written in nodejs
• Use npm for management
• Make sure you use --save or --save-dev option with packages you
add
• Write jest test cases: run with npm test
• Use eslint: run with npm run pretest
• Recommend using express
Assessment Criteria
• Client-side functionality (15%)
• Client-side quality (15%)
• Server-side functionality (30%)
• Server-side quality (30%)
• Video presentation (10%)
Marks /100
Functionality (Client and Server) 45
-Functionality (both Client: 15 marks, and Server: 30 marks) assessed by
what is shown/demonstrated in the video (as per criteria below).
Quality (Client and Server) 45
- Assessed by Assessor as per criteria below.
Video Presentation (2 minutes with penalty for
going over time). Please read carefully below.
10
Testing Environment
• Mac OSX. Firefox (default).
• Visual Studio Code
• Standard packages covered in class (npm, express etc) (remember you
need to include package.json)
Client-side functionality
• User Experience (UX): clean layout and minimal clicks/entry required
• App complexity: entities can be listed and edited
• 'Single page' style: asynchronous updates
COMP1111 Programming (Gold) 20-21
Client-side quality criteria
• Standards compliant (HTML5)
• Responsive to different viewport sizes
• Gracefully handles server disconnection
o useful error messages
o recommences on server restart
Server-side functionality criteria
• More than one entity type, with relationships
• REST API provides each entity with appropriate GET/POST methods
• Installs with npm install
• Starts with npm start
Server-side quality criteria
• Appropriate development tools and frameworks (Fetch, Express etc) used
• Successful eslint (run with npm run pretest)
• Successful jest tests with good coverage (run with npm test)
• Testing includes content-type and HTTP code
• Completeness of API documentation
Video Presentation
• Submit a 2-minute (max) video demonstrating your software
• Include demonstration of how to start the program
• All functionality will be assessed by what is demonstrated in the video
• If it is not demonstrated in the video, you will not get a mark for it
• Quality of video presentation will be marked separately from
functionality:
o Structure: Visual Presentation; Audio explanation
• You will lose 10% of marks for video presentation (10 marks), for
every block of 10 seconds over 2 minutes. That is, if your video is 2
mins 1 second long, you lose 10%, if it’s 2 mins 11 seconds long, you
lose 20%, and so on.
How to do the assignment
• Design HTML
• Design web service
• Join with Fetch
COMP1111 Programming (Gold) 20-21
• Read the FAQ (Ver 1 below, updated versions (if required) will be posted
separately, and class will be informed during lectures).
COMP1111 Programming (Gold) 20-21
Frequently Asked Questions (FAQs)
Client-side functionality
Q. Do we need authentication, like username and password?
Not recommended: if you are going to do authentication you should do it properly,
and it's very unlikely that you could write something yourself that would be robust.
My usual advice would be to use an external authentication service (e.g., through
firebase), but that requires have tokens etc embedded into your code. Sharing that
with others would most likely be outside the terms and conditions of its use. So if
you want to do authentication, just include a function to authenticate, which maybe
pops up an alert saying 'this page is private' or something like that.
Client-side quality
Q. Can I use react to build the website?
Not recommended: It may be difficult to assess the quality of your solution.
Q. Can I use jQuery to build the website?
Not recommended: As discussed in class, JQuery is on the way out. It used to be
essential to make things like event handling and AJAX work across browsers.
However, now modern browsers offer the Fetch API which handle this. The small
issue is with Internet Explorer support. However, IE has a minor share now and
polyfills are available to make it look like it has Fetch. Many systems still do use
jQuery (i.e., bootstrap) but are looking to remove is as a requirement (e.g., Bootstrap
5) so I wouldn't recommend it for a new project.
Q. Will I get marked on documentation of the client-side code?
No.
Q. What do you mean by 'gracefully handles server disconnection'
This means that your client-side code should do something sensible if the
connection to the server goes down (as it might do if it were connected via the
Internet). It should display an informative message to the user, and maybe try again
later. You can test this by stopping the server and trying to interact with it through
COMP1111 Programming (Gold) 20-21
the client. Once the server is started up again the client should be able to carry on as
before.
Server-side functionality
Q. Are we allowed to include additional modules via NPM that
provides additional functionality?
Yes. This is a good idea. This makes the code easier to read, more robust and more
maintainable. Some frameworks (e.g., React) installed via npm essentially use a
different language, so are difficult to read for non-experts. These are best avoided.
Q. How are we advised to save the data, i.e. using database?
In a real system, a database would be the best way to store data. However, databases
are not part of this course. The recommendation would be to write functions for
saving the state, which just write to file a JSON string representing the state. This will
not work with multiple users but would be enough for simple testing.
Q. What do you mean by an 'entity type'?
Refer to the lecture on REST. An entity or entity type is what you would have studied
in your Databases module. In Objected Oriented programming, the counterpart
would be what you would refer as a class. This is a distinct 'type' or 'kind' of thing. As
an example (courtesy Steven Bradley):
If your app is about poets and their poems then you would have two entity types:
'poet' and 'poem'. For each poet you might want to store their iID name(s), date of
birth, url of image. For each poem, you might want to store an ID, the title, date of
writing, and the text. The relationships between the entities would be of the form
poet1 authored poem2. Exactly how you store the information about the relationship
is up to you: you could store the author id with the poem or store a list of poems ids
with the author, or have a separate store relating the two. In either case, when you
get the details of an entity you should include everything, including the relationships.
It may be a good idea to devote some initial effort on your entities and relationships
e.g., using E-R diagrams.
COMP1111 Programming (Gold) 20-21
Server-side quality
Q. Is the testing solely on the server.js file or on the other .js files
the website uses also
You only need to test your server side javascript.
Q. Are we allowed to use an API documentation generator like
Postman or must we create our own documentation from scratch?
Yes, if you have a good tool for API generation such
as https://learning.postman.com/docs/postman/api-documentation/documentingyour-api/
that would be fine, and a good idea.
Q. Will adding comments to the API be sufficient for API
documentation, or would it be preferable to use something like
postman or 'https://www.npmjs.com/package/node-api-docgenerator'
(an npm package)?
One should not need to have to read the code to see the API documentation. You
could write it in HTML by hand, or you could use a tool to do that. The postman tool
maybe a good idea, the npm tool looks less maintained.
Q. What do we need in the API documentation?
For the API documentation the ideal is something like the documentation of
the Twitter API which lists the methods in the API and then provides the details for
each method including details of parameters and response.
Q. How should we configure the ESLint file?
Unless you have a good reason to do otherwise you should use this
module.exports = {
"extends": "standard",
"rules": {
"semi": [2, "always"],
"indent": "off"
}
};
But if you are using something else reasonable that is fine, but you must include the
relevant .eslintrc. It shoud not require a whole load of work to set up.
COMP1111 Programming (Gold) 20-21
Video Presentation
Q. What information are we supposed to include in the video?
Treat it as a sales pitch for the criteria listed under client-side functionality and
server-side functionality. You don't need to show every single thing that your site
does, just show how it meets the requirements. Things like HTML validation,
automated testing and the API documentation do not need to be covered.
Q. What software should we use to record the presentation, and
where could we find it?
The university provides Panopto (which is used for sharing lecture recordings) for
recording and simple editing. Here are some instructions for use. Freely available
desktop tools include OBS Studio and daVinci Resolve for recording and editing,
which are both powerful but have more of a learning curve. MacOS provides
QuickTime player and iMovie for recording and editing. TechRadar have a list of
screen recorder software for other alternatives.
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
urba6006代写、java/c++编程语...
2024-12-26
代做program、代写python编程语...
2024-12-26
代写dts207tc、sql编程语言代做
2024-12-25
cs209a代做、java程序设计代写
2024-12-25
cs305程序代做、代写python程序...
2024-12-25
代写csc1001、代做python设计程...
2024-12-24
代写practice test preparatio...
2024-12-24
代写bre2031 – environmental...
2024-12-24
代写ece5550: applied kalman ...
2024-12-24
代做conmgnt 7049 – measurem...
2024-12-24
代写ece3700j introduction to...
2024-12-24
代做adad9311 designing the e...
2024-12-24
代做comp5618 - applied cyber...
2024-12-24
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!