首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
F29OC留学生编程讲解、java程序语言调试、java编程辅导 辅导留学生 Statistics统计、回归、迭代|辅导Python程序
项目预算:
开发周期:
发布时间:
要求地区:
F29OC Assignment 2
2020-21 Semester 2
1 Introduction
This is an individual project to produce a job dispatcer system using Extrinsic Monitors.
It is worth 18% of a student’s F29OC mark.
2 Plagiarism
Code will be run through GitLab code plagiarism checks. Code shared between two or more students will be regarded as plagiarism. Code that is the same as code in the public domain (except for that contained in F29OC lab examples) will be regarded as plagiarism. Students suspected of plagiarism will be subject to standard university plagiarism reporting and assessment procedures. See https://www.hw.ac.uk/students/studies/examinations/plagiarism.htm.
3 Project Development & GitLab Records
While you are working on CW2 we require you to perform multiple commits and pushes (with meaningful commit messages) to your remote repository. These should be performed on days that you update the project (both for the JobDispatcher class itself, and the associated tests).
The main purpose of this is to provide evidence that the code has been developed incrementally and is the student’s own work. Thus, commit messages are required to be meaningful to an external reader, such that they can follow the incremental development of your classes and tests. In addition, changes to the code itself must also show evidence of incremental development and backup the commit messages.
Students may therefore be called to interview if there is not sufficient evidence of incremental development in the GitLab commits of the remote repository for their project. Students are required to:
a)Have a working knowledge of all code developed or used in the project,
b)Be able to explain the overall development of the project, and
c)Be able to present a detailed evidence and explanation of the incremental development of their code (this must use the commit history of the project).
Students who clearly cannot demonstrate the above will have their mark for Assignment 2 set to zero.
4 Programming Task and Marking (18 marks in total)
You are required to write a JobDispatcher class and test it using your own test code.
4.1 The GitLab Files
The GitLab stub for CW2 provides you with 3 files:
JobDispatcher.java: This is where you will develop your solution. It must implement the interface below and provide the functionality described in this specification.
Dispatcher.java: This provides the interface that your class must implement. It contains three methods, the functions of which are specified in this file.
Tests.java: This contains a very simple example JUnit test. This is where you will develop your own tests to assure yourself that your class performs as per this specification. Failure to provide evidence that you have incrementally developed your tests here means that your project will not be marked.
4.2 Functional Requirements
4.2.1 Overview
•Your JobDispatcher must manage a set of Worker threads and release them for a set of specified jobs.
•It should be implemented using an Extrinsic Monitor.
•There are two types of Worker threads: Compute threads and Storage threads.
•Compute and Storage threads will notify your JobDispatcher class that they are available for a job by calling your JobDispatcher’s .queueComputeThread() and queueStorageThread() methods respectively.
•Your will block Worker threads until there are enough of them to perform a specified job. Once the right combination of threads is available for a job, the JobDipatcher will stop blocking the threads (needed for the job) and allow them to proceed.
•Jobs will be specified to your class via your .specifyJob(nComputeThreads, nStorageThreads) method.
4.2.2 UR1 - One Job requiring four Compute threads (4 marks)
A instance of your JobDispatcher class must be able to accept single job specified by .specifyJob(4, 0), and then be able to deal with Compute and Storage threads making
themselves available for this job, by calling your .queueComputeThread() and queueStorageThread() methods respectively.
4.2.3 UR2 - Multiple Jobs (4 marks)
A instance of your JobDispatcher class must be able to accept multiple jobs specified by repeated calls to .specifyJob, and then be able to deal with Compute and Storage threads making themselves available for these jobs, by calling your .queueComputeThread() and queueStorageThread() methods respectively.
4.2.4 UR3 - Multiple Jobs (4 marks)
As UR2 except that calls to methods .specifyJob, .queueComputeThread() and queueStorageThread(), may occur in any order.
4.2.5 UR4 – FILO Order (4 marks)
As UR3 except that Worker threads must be selected in FILO (First In Last Out) order.
For instance, if, after initialisation:
i.Compute thread C1 calls, and is blocked by .queueComputeThread(), then
ii.Compute thread C2 calls, and is blocked by .queueComputeThread(), and then
iii.Compute thread C3 calls, and is blocked by .queueComputeThread().
And the above is followed by a call to .specifyJob(2, 0), then threads C2 and C3 will be released to proceed with their execution but thread C1 will remain blocked.
4.3 The marking Software will be run Four Times
4.3.1 Requirement Marking
Your code will be compiled and marked by automatic marking software. This software will be applied to your project four times and you will receive the average of the four runs for each requirement. (Note that in the past, tests like these have not run consistently because a students’ code was not thread safe).
4.3.2 Consistency of Execution (2 additional marks)
Additionally, a mark of 0.5 will be awarded for each of UR1-4 where a UR’s tests run consistently and achieve a score of 2.0 or more out of the 4 marks available for that UR.
4.4 Constraint Requirements
Note: failure to meet any of the constraint requirements specified below will result in your project receiving a mark of zero.
4.4.1 Extrinsic Monitor Classes
You must use the following classes:
import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock;
No other ‘thread safe’ classes should be used in JobDispatcher.java. In particular, the keyword synchronization, and no classes from the package java.util.concurrent should be used.
4.4.2 Java SE1.8
Your code must compile with Java SE1.8.
4.4.3 Testing
Note that the marking software will not be available to students. It is your responsibility to design and implement unit tests to assure that your JobDispatcher class works as specified here. (This is normal practice in industry.)
Sharing any test code will be considered as plagiarism.
The source code for your tests should be supplied in Tests.java.
You may use any classes in Java SE 1.8 for your tests.
4.4.4 Project name, Filenames and Interfaces
•You must fork your project from project F29OC-2019-20-CW2-Coursework at https://gitlabstudent.macs.hw.ac.uk/f29oc-2020-21-students/assignments into your own private and personal GitLab space (https://gitlab-student.macs.hw.ac.uk/
/f29oc-202021-cw2-Coursework). This is your “remote” repository.
•If we cannot uniquely identify and download a single project with the name f29oc-2020-21cw2-Coursework from your private namespace, your project will not be marked.
•You must not change the names of the GitLab project or any of its files.
•You must not add any further files (JobDispatcher.java should be self-contained and can include additional private classes written by the student).
•Your JobDispatcher class must implement the Dispatcher interface and have no other public methods.
•You must not change the interface specified in Dispatcher.java.
•Your remote repository must show evidence of incremental development through its GitLab commit history (see section 3).
4.4.5 Freezing GitLab
You must not alter your remote GItLab repository after the deadline. We will take a copy of it and this must be the same as the Vision upload.
4.4.6 Vision Upload
In addition to the project in your remote GitLab repository described above, you also have to upload a copy of your project to Vision.
Thus, you should download a zip file of your project from your remote repository and then upload this to Vision > F29OC > Assignments > CW2, within the deadline. Filename details are in the upload instructions.
It is recommended that a safe copy be uploaded to Vision the day before the deadline.
5 Late submissions
The university’s normal late submission policy will apply (30% reduction after 5 working days). Submissions after this late submission deadline will not be marked.
6 Mitigating Circumstances
Students with mitigating circumstances should submit their case via the normal mitigating circumstances procedure and these will be considered by the Mitigating Circumstances board in due course.
7 Feedback
We will aim to give feedback within 3 weeks of the last submission.
8 Project Stub
See GitLab > CW2.
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代写math 1151, autumn 2024 w...
2024-11-14
代做comp4336/9336 mobile dat...
2024-11-14
代做eesa01 lab 2: weather an...
2024-11-14
代写comp1521 - 24t3 assignme...
2024-11-14
代写nbs8020 - dissertation s...
2024-11-14
代做fin b377f technical anal...
2024-11-14
代做ceic6714 mini design pro...
2024-11-14
代做introduction to computer...
2024-11-14
代做cs 353, fall 2024 introd...
2024-11-14
代做phy254 problem set #3 fa...
2024-11-14
代写n1569 financial risk man...
2024-11-14
代写csci-ua.0202 lab 3: enco...
2024-11-14
代写econ2226: chinese econom...
2024-11-14
热点标签
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
软件定制开发网!