Software Security
CompSci 725 S2C 05
Clark Thomborson
Handout 2: Selection of Oral Presentations
Version 2.34: 22 July 2005
Before the first round:
- All papers are in “category 0”, that is, "y
Category(y) = = 0
Category 0: no one assigned to this paper.
Category 1: 1 student is assigned to this paper.
Category 2: 2 students are assigned to this paper.
- All students are “type 0”: "x Type(x) = = 0
Type 0: student is not assigned to any paper.
Type 1: student is assigned to a category 1 paper.
Type 2: student is assigned to a category 2 paper.
- All students x have been assigned a unique integer Order(x). This
integer determines their priority for paper selection, and it defines the
order in which they will present their selected paper to the class.
Students with lower Order() numbers have a greater chance of getting their
first-choice paper, however they must present sooner.
- Papers may be added to the recommended list at any time by the instructor.
Suggestions from students are welcome, however the suggested paper must meet
with the instructor's approval. See the description of Action 1 in Round
2 below.
Actions in Round 1:
The instructor describes each paper y on the list of suggested articles.
There are actions in two cases:
- If one student x wants to present this paper, then {
- Paper(x) = y; Type(x) = 1; Category(y) = 1; }
- Let X be the set of students, with |X| > 1, who want to present this paper.
Then {
- x1 = argmin( Order(X) ); Paper(x1) = y; Type(x1) = 2; Category(y) = 2;
- x2 = argmin( Order(X - {x1}) ); Paper(x2) = y; Type(x2)
= 2; }
Postconditions for Round 1:
- "x Type(x) Î {0, 1,
2}
- "p Category(p) Î {0,
1, 2}
- |{p : Category(p) > 0 }| ≤ 20 /* No more than 20 different papers
will be presented. */
Actions in Round 2:
Each student x, in assigned order starting with student #1, chooses any one
of the following actions:
1. If ( |{p : Category(p)
> 0}| < 20 ) then student x may select a paper y in category 0: {
Category(y) =
1; Paper(x) = y; Type(x) = 1;
If paper y is not on recommended list, then student must give full
bibliographic detail to the instructor. Before the next Round begins, the
instructor will approve/disapprove this paper. If the instructor
disapproves then { Paper(x) = 0; Type(x) = 0; }
}
2. Student x may select a paper y in category 1: { Category(y) = 2;
Paper(x) = y; Type(x) = 2; }
Actions in Rounds 3, ..., 10:
Each student x, in assigned order starting with student #1, must choose one
of the following actions.
- If (Type(x) = = 0) this student must select a paper y in this round. There
are three cases:
- If fewer than 20 papers are selected, then a category-0 paper y may be
selected. Category(y) + +; Paper(x) = y; Type(x) = 1.
- Student x may select any paper y in category 1. Category(y) + +; Paper(x)
= y; Type(x) = 1.
- Student x may select a paper y in category 2, but only if one of the
students z who is currently assigned to y is willing to move to a different
paper w in category 1. Note: student z can move to a paper w in category 0,
if less than 20 papers have been selected. If there is more than one
student willing to move from u, then the student with the lowest number is
the "volunteer" z. Category(w)+ +; Paper(z) = w; Paper(x) = y; Type(x) = 1.
- If (Type(x) > 0), then student x may move from their current paper y =
Paper(x), by selecting a different paper u. There are four cases:
- If ( (Category(u) = = 0) && (|{p : Category(p) > 0 }| < 20) ) {
Category(y) – –; Paper(x) = u; Category(u) + +; } /* Student x may choose a
paper u in category 0, only if less than 20 papers have been selected
already.
- If (Category(u) = = 1) { Category(y) – –; Paper(x) = u; Category(u) + +;
} /* There are no restrictions on selecting category-1 papers. */
- If ( (Category(u) = = 2) && ($ z : Category(Paper(z)) = = v, who is
willing to move to another paper v in category 1) ) { Category(y) – –;
Paper(x) = v; Category(v) + +; } /* You may ask for a volunteer z to move
from a category-2 paper u to a category-1 paper v. */
- If (Category(u) = = 2) && ($ z : Category(Paper(z)) = = v && z is
willing to move to another paper w in category 0 && (|{p : Category(p) > 0
}| < 20) ) ) { Category(y) – –; Category(w) + +; Paper(z) = w; Paper(x) = u;
} /* A volunteer z can move from a category-2 paper u to a category-0 paper
v, only if there are less than 20 papers selected. */
Postconditions for Rounds > 2:
- "x Type(x) Î {1, 2}
/* All registered students must present a paper. */
- "p Category(p) Î {0,
1, 2}
- |{p : Category(p) > 0 }| ≤ 20
Termination Condition:
- Rounds will continue (to a maximum of 10) until a fixed-point is reached,
i.e. until a Round makes no changes to the Paper() assignments.
Note:
- Once a student (even one with the highest order #) is assigned a paper, they
cannot be forced to "move" to a different paper.