COMP1101 Programming Summative Assessment 2
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “term-2-programming-exercise-outline” Term 2 Programming Exercise Outline
Submission by 14:00 Thursday 2/5/2019
Return after exam period
Contributes 55% of module marks
Includes peer review feedback which you will be allocated
Peer reviews need to be submitted by 14:00 9/5/2019
Quality of your peer reviews contribute 5% to your module mark
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “subject-specific-knowledge” Subject-specific Knowledge
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)
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “subject-specific-skills” 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.)
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “key-skills” Key Skills
an ability to communicate technical information
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “task-summary” Task summary
Construct a dynamic web-site for an application of your choosing
Use static HTML pages loading dynamic JSON content from server via AJAX
Server written in nodejs to provide JSON through REST API
Optional use of externally provided web service and/or cloud hosting
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “dynamic-web-site” Dynamic web-site
Any application domain as long as it includes two kinds of entities e.g.
people
places
events
comments
pictures
Could be e.g. club, diary, social, health, gallery
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “static-html-loading-json-via-ajax” Static HTML loading JSON via AJAX
‘Single page app’
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
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “message-sequence-chart” Message sequence chart
HYPERLINK “https://camo.githubusercontent.com/dd00772b052981c55ba3c09e181382bf5167dc54/68747470733a2f2f7777772e77656273657175656e63656469616772616d732e636f6d2f6367692d62696e2f63647261773f6c7a3d64476c3062475567513278705a5735304c334e6c636e5a6c63694270626e526c636d466a64476c7662676f4b414255474c543554414263464f6942546447463061574d676347466e5a5342795a5846315a584e30436741574269302d414545474f6942495645314d436d7876623341675a57466a61434231633256794941424a4277415f45455235626d467461574d6759323975644756756441424c4343416f5155704257436b415352464b5530394f4149454b4351426e43464a6c626d526c636741584251415f4357467a41494542425342336158526f615734675245394e436d56755a416f4b26733d726f756e64677265656e”
Server provides JSON through a REST API
Each entity type (e.g. person) has
GET method to list/search
GET method for individual details
POST method to add new (with authentication)
Response provided as JSON
Content-type needs to be correct
HTTP codes should be correct: use 200, 400 or 403 (with authentication)
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “server-written-in-nodejs” 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 pretest
Recommended using express
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “extension-1-cloud-deployment” Extension 1: cloud deployment
Local installation must not use database: use in-memory model
You can choose cloud deployment platform e.g. OpenShift, BlueMix, Heroku
Local deployment with npm start
You don’t need to include cloud deployment instructions
Include url of running system
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “extension-2-external-web-service” Extension 2: external web service
Find something appropriate at
HYPERLINK “https://any-api.com/” https://any-api.com/
HYPERLINK “https://www.programmableweb.com/” https://www.programmableweb.com/
HYPERLINK “https://rapidapi.com/” https://rapidapi.com/
google/facebook authentication
Integrate it into your web server
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “submission” Submission
Source code (all zipped)
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
README.md explaining how to use the site and API
Should not include node_modules in submission
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “assessment-criteria” Assessment Criteria
Equally weighted
Client-side functionality
Client-side quality
Server-side functionality
Server-side quality
Extensions
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “client-side-functionality-criteria” Client-side functionality criteria
User Experience (UX)
App complexity
‘Single page’ style: asynchronous updates
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “client-side-quality-criteria” Client-side quality criteria
Standards compliant (HTML5)
Responsive to different viewport sizes
Gracefully handles server disconnection
Web site documentation (README.md)
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “server-side-functionality-criteria” Server-side functionality criteria
More than one entity type
REST API provides each entity with appropriate GET/POST methods
Installs with npm install
Starts with npm start
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “server-side-quality-criteria” Server-side quality criteria
Successful eslint (run with npm pretest)
Successful jest tests with good coverage (run with npm test)
Testing includes content-type and HTTP code
API documentation (README.md)
HYPERLINK “https://github.com/stevenaeola/gitpitch/blob/master/prog/assessment_2_prog_1819/README.md” \l “extensions-criteria” Extensions criteria
Successful cloud deployment
Successful integration with remote web service