This practical module builds on earlier programming modules and provides you with a deeper understanding of a high-level language through the use of modern integrated development environments (IDEs) with debugging tools and source control. It covers a number of advanced topics, including design patterns, multithreading, asynchronous and object-oriented programming along with test-driven design, unit testing and creation of libraries and using frameworks. The practical sessions expose you to industrial software development practices, thus ensuring you are prepared, should you decide to pursue a career in this field. The following GAME attributes are included in this module: Problem Solver, Confident.