User Tools

Site Tools


Sidebar

os_cp:2023:results
Student Number Assignments Test Final grade
collatz assoc
array
retake
(June)
L1 155896 4.0 4.0 6.8 11.0 3.5
156072 4.0 3.5 15.1 4.0
156047 3.0 3.0 8.0 10.7 3.0
156053 5.0 5.0 16.6 5.0
156069 4.5 4.0 15.9 4.5
156074 3.0 3.0 4.8 2.0
156060 3.0 3.0 7.3 11.2 3.0
156062 3.0 4.0 14.8 4.0
156055 4.5 3.5 19.4 4.5
156042 4.0 4.5 18.9 4.5
156044 3.0 3.5 5.8 6.0 2.0
156058 4.5 4.0 10.9 3.5
156070 3.0 3.5 5.9 7.2 2.0
156063 4.0 3.5 10.7 3.5
158763 absent
L2 156034 4.5 4.0 12.8 4.0
151114 3.0 3.8 2.0
156073 5.0 5.0 18.4 5.0
156038 4.0 5.0 19.5 5.0
156048 4.5 5.0 15.2 4.5
156040 3.0 5.0 11.5 3.5
156049 4.5 5.0 15.8 4.5
156061 3.0 4.0 9.4 14.9 4.0
156066 3.0 3.0 14.0 3.5
156068 3.5 3.5 17.5 4.5
156041 3.5 4.0 10.4 3.0
156064 5.0 3.5 6.8 11.2 3.5
156059 4.5 4.5 16.4 4.5
156039 5.0 4.5 17.2 5.0
156057 5.0 4.5 18.0 5.0
MAX 20.00 20.00

A summary of how come the grades for assignment 2 are so low in group L1:

1) An associative array is a data structure "such that each possible
key appears at most once in it". If you did not know what it is,
you should have read at least the linked Wikipedia article.
9 out of 14 of you wrote insert so that it does not check whether
the key is already present in the map, but it just adds duplicate
keys. And get/remove so that it gets/removes only operates on the
first item with matching key.

2) Your assignment was to "write a thread-safe associative array
(key-value map) that offers the following operations".
Your assignment was NOT to write code that executes these operations
in one specific use case!
8 out of 14 of you did not have the operations explicitly listed in
the requirements.

3) Your assignment was to "write a thread-safe array". That means,
among other, that when get(5) executes concurrently with erase(5),
then no use-after-free occurs. So if your code had lines akin to:
| pthread_mutex_unlock(&mutex);
| return temp->data; 
in the get/poll, then a concurrent erase could free the memory that
is pointed by temp, and you read from deallocated memory.
5 out of 10 of you made this mistake. The remaining 4 people did not
write a get method that returns a value.

4) You were required to write "operations that allow iterating over
all key-value pairs: first(), next(…), last() (or equivalent)".
8 out of 14 of you did not have these operations or had such 
operations, but they did not allow iterating over key-value pairs.
Most of you wrote an operation that prints all keys instead. But
that is merely a specific use case of iterating over k-v pairs.

5) A language remark: poll and pool both belong to computer science
technical vocabulary and describe different things:
'poll' - https://en.wikipedia.org/wiki/Polling_(computer_science),
'pool' - https://en.wikipedia.org/wiki/Pool_(computer_science),
(and I also saw at least one 'pull' amidst the files you sent me).

os_cp/2023/results.txt · Last modified: 2023/06/16 13:47 by jkonczak