K:\Assessment\2016-2017\Undergraduate\Resit Materials\CO5625\CO5625 Resit Assignment.docx UNIVERSITY OF CHESTER - Undergraduate Programmes Assignment Specification Faculty of Science and Engineering Department of Computer Science Module No CO5625 Module Title Further Programming for Games Development Academic Year 2016-17 Assessment No 1 Date Out Submission date 21st August 2017 17:30 hrs Assignment Title Programming Challenges Learning Objectives Assessed On completion of this module the student will be able to: 1. Recognise and explain common data structures and algorithms and their appropriate use in program design 2. Analyse complex problems, and design suitable solutions to them, using real-world scenarios 3. Employ a variety of techniques for code reuse and implement software using industry standard APIs 4. Demonstrate and explain their own programming work and answer questions on how it was designed and implemented. Submission Information Submit all relevant files as a .zip folder via turnitin Extensions and Plagiarism Extensions Extensions can only be granted by Dr Linda Rayner, Head of Department (by appointment through the Departmental Administrator), and written evidence will be required. Late work is penalised at the rate of 5% per day. Plagiarism Students will also have to sign a disclaimer that the material they are submitting is their own work. The penalties for plagiarism are severe. The minimum penalty is usually zero for that piece of work. Further information is displayed on the Assessment Notice Board.K:\Assessment\2016-2017\Undergraduate\Resit Materials\CO5625\CO5625 Resit Assignment.docx Assignment Brief Assignment Brief: Part 1: You will be required to write two further programs: 1) Write a program which reads a text file and tells you a. The number of characters in the file (not including spaces) b. The number of words in the file c. The number of occurrences of each word in the file (the user should be able to type in a word and the program return the number of times it occurred in the text). Think carefully about the data structures you might use here. Some answers are more efficient than others. Ideally the file should only need to be read once. 2) Use boost::asio to write a networked version of the program which takes an IP address as input and reads the default web page at that address. Note that due to the process of HTTP chunking, the program may not retrieve the whole web page in all cases. You may use the boost tcp iostreams for this (please see lecture notes on sockets and networking for examples). Hints: To test part 2, you should use the nslookup command to find out the IP address of a known web page. Google it if you’ve not heard of it before. Also, the minimum HTTP request string is “GET /\r\n”. If you want to specify a page, try “GET /index.html\r\n” (substituting the page you require for index.html, of course). You will need to send a request like this to the server for it to send you its default page. HTTP servers use port 80. Part 2: You should also write a reflective report outlining the approach you took to completing the programming task and identifying any possible improvements that could be made to your submitted code. 70% and above All functionality implemented accurately and with some ingenuity and imagination where appropriate. Competent use of advanced techniques in the second exercise. Report shows a genuinely insightful approach to the tasks. 60-70% Most of the required functionality is implemented successfully but solutions are perhaps not as concise or efficient as they could be. Report displays a solid understanding of the principles involved. 50-60% A good attempt but perhaps with some oversights here and there. Programs may not always handle exceptional cases correctly but the functionality is generally adequate and demonstrates an understanding of most keyK:\Assessment\2016-2017\Undergraduate\Resit Materials\CO5625\CO5625 Resit Assignment.docx principles. Report is perhaps a little vague and lacking in technical detail for some aspects. 40-50% A reasonable attempt has been made with knowledge demonstrated but perhaps with some elements of the implementation missing or incorrect. Report gives an indication that relevant principles are generally understood. Less than 40% Little meaningful code written or problems addressed incorrectly on the whole. A lack of understanding of the basic requirements may also be present. Report may reveal significant gaps in understanding.