Common concerns for midterm. Q4A: You might get comments like this: Did not compare message length/performance/latency. It's quite important to compare the cost for serialization which includes message length and latency for conversion. This is important in a network communication protocol since it directly affects the performance. The RPC libraries try very hard to optimize previous designs for this. If we do it 'manually' using plain socket, this is an important concern since it's related to network bandwidth consumption. If you failed to include this, you may get a few pts off depending on your answers. Q4B: Below are a few reasons for deducting pts. 1. You did not provide an integrated approach. You should send only ONE message that includes the entire list of strings, not sepearate messages. 2. You did not clearly include the length of each string. Since not all programming languages naturally support the automatic detection of string lengths, you should clearly include that. 3. Your solution does not provide a clear way to deserialize the messages (or serialize the message). For instance, some answers put string first and then message lengths/list length. This will not be able to be deserialized easily. 4. The length of each string should be different and the answer should capture that. Correct answer: The blocks should look like below [length of list] [length of str1] [length of str2] .... [length of strn][str1][str2]...[strn] When the receiver receives it, it will parse the lengths first and then get the corresponding strings according to the strings. Q5A: You might get comments like this: strict consistency might be desirable but it not possible in practice. You are likely to get 0.5 to 2pts off depending on your answers. It's important to mention that strict consistency cannot be realized in practice. People choose linearizaiblity (sequential consistency) instead since under a good network condition, it's close to strict consistency.