This specification was created for the use of Jiaxiang LIANG (s4568784) only. Do not share this document. Sharing this document may result in a misconduct penalty. Introduction 1 The goal of this assignment is to further develop your C programming skills, and to demonstrate your under- 2 standing of networking and multithreaded programming. You are to create a server program (uqchessserver) 3 that supports multiple simultaneously connected clients playing chess against another client or against a chess 4 engine (Stockfish). The server will maintain pipe connections to and from a single chess engine process and 5 mediate client requests for the engine’s services. You should also create a client program (uqchessclient) that 6 can send requests to the server and show responses. 3226 7 Communication between the clients and uqchessserver is over TCP using a text based protocol defined 8 later in this specification. 9 The assignment will also test your ability to code to a particular programming style guide and to use a 10 revision control system appropriately. 11 It is not necessary that you know how to play chess to undertake this assignment, though knowledge of 12 how pieces can move on a chess board may be useful in testing (i.e. knowing which moves are valid). See 13 https://en.wikipedia.org/wiki/Chess#Rules to learn more about the rules of chess if you are interested. 3226 14 Student Conduct 15 This section is unchanged from assignments one and three – but you should remind yourself of the referencing requirements. Remember that you can’t copy code from websites and if you learn about how to use a library function from a resource other than course-provided material then you must reference it. 16 This is an individual assignment. You should feel free to discuss general aspects of C programming and 17 the assignment specification with fellow students, including on the discussion forum. In general, questions like 18 “How should the program behave if 〈this happens〉?” would be safe, if they are seeking clarification on the 19 specification. 20 You must not actively help (or seek help from) other students or other people with the actual design, structure 21 and/or coding of your assignment solution. It is cheating to look at another person’s assignment code 22 and it is cheating to allow your code to be seen or shared in printed or electronic form by others. 23 All submitted code will be subject to automated checks for plagiarism and collusion. If we detect plagiarism or 24 collusion, formal misconduct actions will be initiated against you, and those you cheated with. That’s right, if 25 you share your code with a friend, even inadvertently, then both of you are in trouble. Do not post your 26 code to a public place such as the course discussion forum or a public code repository. (Code in private posts 27 to the discussion forum is permitted.) You must assume that some students in the course may have very long 28 extensions so do not post your code to any public repository until at least three months after the result release 29 date for the course (or check with the course coordinator if you wish to post it sooner). Do not allow others to 30 access your computer – you must keep your code secure. Never leave your work unattended. 31 You must follow the following code usage and referencing rules for all code committed to your SVN 32 repository (not just the version that you submit): 33