This is a bonus assignment that is being provided so that the people
who are asking for an opportunity to make up marks have the chance to
demonstrate that they are serious about the idea.
If you submit this assignment, it will be graded and will be used to
replace your lowest existing assignment grade if applicable. Thus
these are not "pure bonus" marks that add to whatever you're achiveing in the
course, it is a way to make up for a low assignment mark by having it
replaced. Note that this assignment is not particularly trivial, and
emphasizes design
very heavily. If you are serious about making up
marks and demonstrating that you have picked up (or are picking up) the skills
we've been pushing on your in this course, this is the opportunity to
demonstrate that.
Documentation, in this case the detailed design of your system, is the only
thing you're turning in, and constitutes all the marks (no implementation). If
you are not planning to spend time producing quality documentation and clear
design, you will do poorly on this assignment.
In order to expect a
reasonable mark on this assignment, your design must be sufficiently detailed,
complete and well organized that someone could easily implement your solution
without further consideration of protocol/design issues.
Note that this assignment involves the design of a library (not a program).
This library is responsible for producing some very sophisticated behaviour
in a distributed manner, with limited means of tracking global state. Most
people will find it challenging, so be aware what you're getting into if you
choose to attempt it.
I don't mind having conversations with people related to the bonus assignment;
however, due to the timeline of the course and other obligations, it will not
be possible to provide a high level of direct support for this assignment.