The aim of COMP517 is to help you to learn how to design and create software. Central to this will be an understanding of and practical experience with a modern programming language, but you will also be made aware of the importance of using sound software engineering techniques to develop high quality programs. As with many endeavours (swimming, chess-playing, story-writing) programming is a skill that must be learned and improved upon by constant practice. In this module, therefore, the emphasis will be on self-study. Although lectures will be used to introduce the various topics, you will be expected to spend the majority of your time attempting numerous exercises and completing the specified assignments.